net remoting
play

.NET Remoting Module Subtitle Building distributed applications and - PowerPoint PPT Presentation

.NET Remoting Module Subtitle Building distributed applications and implementing attribute-driven behaviors with Microsoft .NET Contents Section 1: Overview Section 2: Remoting Architecture Section 3: Context and Interception


  1. .NET Remoting Module Subtitle Building distributed applications and implementing attribute-driven behaviors with Microsoft .NET

  2. Contents � Section 1: Overview � Section 2: Remoting Architecture � Section 3: Context and Interception � Section 4: Serving and Accessing Objects � Summary

  3. Section 1: Overview � Looking back: Remoting in COM(+) � What's wrong with that? � .NET Remoting Core Concepts

  4. Looking Back: Remoting in COM(+) � All Objects implement IUnknown interface � Dynamic exploration of object features � Lifecycle control with reference counting � DCOM: Object-RPC based on DCE Wire Format � Marshaling through MIDL generated Proxies/Stubs � Automation: Dynamic binding through IDispatch � Servers locally advertised in Registry � Activation "on-demand" � Servers launched at client request � Objects created through class factories

  5. What’s wrong with that? � DCOM protocol is binary and complex � Reference counting difficult to master � Common source of memory leaks for servers � Distributed operation require "pinging" clients � Marshaling is non-extensible � Registry is difficult to manage; registration clumsy � Activation paradigm has component bias � Difficult to locate and connect active servers � Connection oriented protocol � Does not work well on the Internet

  6. Application Domains � Isolated execution space for applications � Independent of OS concept of thread, process AppDomain AppDomain AppDomain Object Object Object Object Object Process Process

  7. What is “ Remote ” , What is ” Local ” ? � "Local" are all objects within the same AppDomain � All other objects are "Remote" � Even objects in the same process! � Context-bound objects: � "Local" if they share the same context � "Remote" if they are in different contexts � "Local": Not marshaled, immediate object calls � "Remote": Marshaled, calls through proxies

  8. Section 2: Remoting Architecture � What: Messages � Where: Channels � How: Formatters � Marshaling Concepts � Proxies

  9. What to communicate: Messages � Messages are objects that implement IMessage � IMessage: Simple dictionary of key/values pairs � .NET Message Types: � Construction call messages, response messages � Method call messages, response messages � Invocation Styles � Synchronous: Request with immediate response � Asynchronous: Request with delayed or no response

  10. Where to communicate: Channels � Channels transport messages � Built-in channels: TCP, HTTP � Establish endpoint-to-endpoint communication � Channels can listen for and send messages � Listen: IChannelReceiver, Send: IChannelSender � Makes no assumptions about endpoint architecture � Can implement channel sinks for logging, interception Client Server Dis- "Proxy" patcher Channel

  11. How to communicate: Formatters � Formatters serialize .NET objects into wire formats � Used dynamically by channel architecture � Configuration-file based association with channels � Formatters are implemented as channel sinks � Built-in: SOAP and Binary Formatters � System.Runtime.Remoting.Serialization.Formatters SOAP, Binary, decode from Custom wire format Channel encode into wire format

  12. Selecting Channels: TcpChannel � System.Runtime.Remoting.Channels.Tcp � Uses plain TCP sockets � Transmits compact, binary wire format � By default, serialized by the BinaryFormatter � .NET native wire-format � Fast � Can use custom formatters for other wire-formats � Best choice for LAN communication � Uses permanent socket connection � Not recommended for Internet communication

  13. Selecting Channels: HttpChannel � System.Runtime.Remoting.Channels.Http � Uses HTTP 1.1 protocol � Transmits SOAP 1.1 XML format � Serialized by SoapFormatter � Open standard � Basis for W3C SOAP/XMLP Protocol activity � Can use custom formatters for other wire-formats � Best choice for Internet communication � Stateless protocol, scales well � Best choice for interoperability and integration

  14. Selecting Channels: Custom � Bring your own Protocol (APPC,IPX,Pipes, ...) � Transmit any format that fits � Can use SoapFormatter or BinaryFormatter � Or bring your own formatter: IIOP, RMI, ORPC, ... � Applies to integration scenarios

  15. The Message Box: IMessageSink � Message Sinks are the .NET message drop-off � Implemented by channels to accept messages � Implemented by context properties for interception � Allows building chains of sinks � Simple linked list through NextSink property � Messages can be intercepted, modified or processed anywhere in the chain Client "Proxy" IMessageSink Channel SynchProcessMessage() or AsynchProcessMessage()

  16. Objects To Go: Marshaling � Definition: Packaging Data for Transfer � For objects passed as arguments, return values � Marshal-By-Value � Entire object is packaged as-is � Copy is transferred to destination � No link between copy and original � Marshal-By-Reference � Just a reference to an object is packaged � Reference is transferred to destination � "Proxy" object links destination with original

  17. Objects calling Objects: Proxies � "Proxy" Definition � Object that acts locally on behalf of a remote object � Looks like and accepts calls as if it were "real" � Forwards them to the remote object � Real Proxies � Inherit System.Runtime.Remoting.RealProxy � Are the communication layer for transparent proxies � Transparent Proxies � Built dynamically through RealProxy � Exact pass-through mirror of the remote object

  18. Proxies illustrated Client Server "Proxy" IMessageSink Channel Transparent Proxy builds MethodA() MethodB() Invoke() Real PropertyQ Proxy PropertyP FieldX SyncProcessMessage() FieldY

  19. The Dispatcher � Simplified model: � Located at the channel endpoint � Receives messages � Builds stack-frame from message content � Invokes actual method on object � Collects result and creates response message

  20. The Dispatcher illustrated Client Server Dispatcher Channel actual method calls Object MethodA() MethodB() StackBuilderSink PropertyQ PropertyP FieldX SyncDispatchMessage() FieldY

  21. Channel Sinks � Formatter, dispatcher and transport are in sinks � All channel sinks are linked in chains Server Client Client Object Server Object Proxy StackBuilderSink Formatter Sink Formatter Sink Custom Sinks Custom Sinks Custom Sinks Custom Sinks Custom Sinks Custom Sinks Transport Sink Transport Sink

  22. Some Advanced Topics � Declaring Methods "One-Way" � Use the "oneway" attribute: [oneway] void FireAndForget(); [oneway] void FireAndForget(); � The Call Context � Property bag passed with every IMessage � Dictionary entry "__CallContext", class CallContext � Allows to pass processing information along

  23. Section 4: Serving & Accessing Objects � Remoting Services � Exposing Well-Known Objects � Exposing Classes for Client-Side Activation � Configuring Remoting and Registering Channels � Activation and Access

  24. Remoting Services � System.Runtime.Remoting.RemotingServices class � Provides fundamental remoting infrastructure � Connecting to remote object instances � Object marshaling � System.Runtime.Remoting.RemotingConfiguration � Provides infrastructure for Remoting configuration � System.Runtime.Remoting.ChannelServices � Channel registration and management � System.Runtime.Remoting.LifetimeServices � Lease-based lifecycle management for objects � System.Runtime.Remoting.TrackingServices � Universal hooks for tracking remoting activities

  25. Exposing Well-Known Objects � .NET's activation model is very unlike COM's � .NET rather resembles CORBA model (!) � If there is no actively listening endpoint: no connection � No surrogates, no registry, no location transparency � EXE servers are not remotely activated � Simplifies Remoting greatly � Expose well-known object for clients to connect. � Bound to known channels with known name � Does not use static registration, prog-ids or class-id � Can expose "single call" or "singleton" objects

  26. Single Call and Singletons � "Single Call" Objects � Object instance is created for each call on channel � Implements the stateless model of the web � "Singleton" Objects � One shared instance provided for all clients � Serves as "gateway" into stateful application � Object is created at registration time � RemotingConfiguration. RegisterWellKnownServiceType � WellKnownObjectMode.SingleCall � WellKnownObjectMode.Singleton

  27. Server Setup Example ... ... HttpChannel chan = new HttpChannel(8080); HttpChannel chan = new HttpChannel(8080); ChannelServices.RegisterChannel(chan); ChannelServices.RegisterChannel(chan); Channel registration RemotingConfiguration. RemotingConfiguration. RegisterWellKnownServiceType( RegisterWellKnownServiceType( typeof(ServerClass), typeof(ServerClass), Object "MyEndpointURI", "MyEndpointURI", registration WellKnownObjectMode.SingleCall); WellKnownObjectMode.SingleCall); Registers the single-call endpoint: http://myserver:8080/MyEndpointURI � Channels and Objects are AppDomain-Global

More recommend