.NET Remoting Architecture
.NET Remoting Architecture. Topics. Remoting Boundaries Crossing the Boundaries Distributed Applications Marshalling Channels Formatters Object Activation Leases. Remoting Boundaries. Windows Process Boundary Application Domain Boundary Crossing the Boundaries.
.NET Remoting Architecture
E N D
Presentation Transcript
Topics • Remoting Boundaries • Crossing the Boundaries • Distributed Applications • Marshalling • Channels • Formatters • Object Activation • Leases .NET Remoting
Remoting Boundaries • Windows Process Boundary • Application Domain Boundary • Crossing the Boundaries .NET Remoting
Windows Process Boundary • Every Windows application runs in a separate process • Each process has its own virtual address space, executable code, data • Processes are isolated from one another – cannot access address space or code of other processes .NET Remoting
Application Domain Boundary(AppDomain) • Created by CLR • Each AppDomain has its own code, data, and configuration settings • AppDomain cannot directly access code or data of another AppDomain • Code running in one AppDomain cannot affect other AppDomains .NET Remoting
Crossing the Boundaries • .NET Remoting namespaces enable applications to cross these boundaries • System.Runtime.Remoting • Provides an abstraction of the ISO layers • Simple mechanism for inter-application domain communication .NET Remoting
Crossing the Boundaries (cont’d) • System.Web.Services • Classes that constitute the ASP.NET Web Services framework • Use SOAP, WSDL, UDDI • Simpler to use than .NET Remoting .NET Remoting
.NET Remoting vs. Web Services • Use .NET Remoting when you have control of both end-points of a distributed application • Use Web Services when one end-point of a distributed application is not under your control .NET Remoting
Distributed Applications • The dominant architecture of modern applications • Components of the application are distributed across multiple processors, accessed via a network .NET Remoting
Objectives of Distributed Applications • Communicate between objects that run in different AppDomains and processes • Communicate between heterogeneous architectures • Ensure availability in spite of resource failure • Provide increased scalability and security .NET Remoting
.NET Proxy Objects Client object Server object Proxy Remoting System Remoting System .NET Remoting
Object Marshalling • The process of gathering and formatting data about an object for transmission across a network • Marshall-by-Reference (MBR) • Marshall-by-Value (MBV) .NET Remoting
Channels • Provide abstraction of ISO layers programming • Objects that transport messages across remoting boundaries • Each channel has 2 end-points • Each channel is associated with a port number • .NET Framework provides HTTP and TCP channels .NET Remoting
HTTP Channels • Uses the HTTP protocol • Implemented through the classes of System.Runtime.Remoting.Channels.Http namespace • A channel is registered with the remoting framework .NET Remoting
TCP Channels • Uses TCP for establishing communication between end-points • Implemented through the classes of System.Runtime.Remoting.Channels.Tcp .NET Remoting
HTTP vs. TCP Channels • HTTP: highly accessible through firewalls via port 80, bulky protocol, high overhead • TCP: limited accessibility through firewalls, very efficient packet structure, less secure .NET Remoting
Formatters • Objects that encode and serialize data into messages before transmission over a network • SOAP Formatter – XML-based protocol • Binary Formatter – used only within .NET applications .NET Remoting
Channels and Formatters • The HTTP channel uses the SOAP formatter as its default formatter for the transport of messages across a network • The TCP channel uses the Binary Formatter as its default .NET Remoting
Remote Object Activation • Activation means instantiation • Applies only to MBR objects MBV objects are transferred to client side) • Two categories: • Server-activated objects • Client-activated objects .NET Remoting
Server-Activated Objects • Lifetime is controlled by server • Object is instantiated by a client request for service • Two activation modes: • SingleCall activation mode • Singleton activation mode .NET Remoting
SingleCall Activation Mode • Object is instantiated on server for just one call from client, then destroyed • Does not maintain state across requests • Allows for greater server scalability .NET Remoting
When to Use SingleCall Activation • Overhead of creating object is not great • Object is not required to maintain state • Server must support large number of requests • Object needs to be supported in a load-balancing environment .NET Remoting
Singleton Activation Mode • Only one instance of object is created, regardless of number of clients using it • Object can maintain state information across calls • State information is shared by all clients • Lifetime is determined by leases .NET Remoting
When to Use Singleton Activation • Overhead of creating object is substantial • Object is required to maintain state over a prolonged period • Multiple clients need to work on the shared state information .NET Remoting
Client-Activated Objects • Server-based objects whose lifetime is controlled by the client • Instantiated on the server when a client requests the object to be created .NET Remoting
When to Use Client-Activated Objects • Clients want to maintain a private session with the server object • Clients need to have control over when the objects are created and how long they live .NET Remoting
Lifetime Leases • A lease defines the period of time an object is active in memory before destruction • Represented by an object defined in the System.Runtime.Remoting.Lifetime namespace • Applies only to Singleton SAO’s and CAO’s .NET Remoting
How Leases Work • A Lease Manager is created • Each time an object receives a call, the “CurrentLeaseTime” is renewed • When a lease expires, sponsors are contacted for renewal • When there are no renewal requests, object is marked for Garbage Collection .NET Remoting