SlideShare a Scribd company logo
© Peter R. Egli 2015
1/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
Peter R. Egli
INDIGOO.COM
OVERVIEW OF MICROSOFTS
.NET REMOTING TECHNOLOGY
.NET
REMOTING
© Peter R. Egli 2015
2/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
Contents
1. .Net Remoting architecture
2. .Net Remoting concepts
3. Remotable and nonremotable types
4. .Net Remoting Server Object Activation Types
5. .Net remoting object lifetime control
6. .Net remoting channel
7. Assembly with remoting objects
8. Configuration files instead of programmatic creation of objects
9. Asynchronous remoting
© Peter R. Egli 2015
3/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
1. .Net Remoting architecture
Proxy: Client-side stub object that connects to the (remote) server object.
Channel: Transport channel for objects, defined by host + port + endpoint (= remote object
service).
Dispatcher: Part of the .Net remoting infrastructure; dispatches method call to the server
object.
Formatter and Transport sink see below.
Client
Proxy
object
Dispatcher
Server
(remote) object
Client Server
.Net remoting infrastructure
Formatter
sink
Transport
sink
Formatter
sink
Transport
sink
Channel
© Peter R. Egli 2015
4/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
ChannelServices
2. .Net Remoting concepts
Channel: Comprises a server port number and a formatting (=protocol such as HTTP or TCP)
Endpoint: Specifies the application that receives the calls (requests)
ChannelServices
HTTP Client Channel
EP
http://<host>:<port>/<endpoint>
ServerObjectServerObject
EP
HTTP Server Channel
ICalcICalc.dll
(common
assembly)
Contains
TCP Server ChannelTCP Client Channel
ServerObject
Transparent
Proxy
Client
ICalc
.Net remoting
infrastructure
Channel type
(formatting, protocol)
Channel port
number
Endpoint
(application)
<<has>>
ICalc.dll
(common
assembly)
.Net remoting
infrastructure
Register
Formatter
FormatterFormatter
Get object
reference
Create proxy
object as object
reference
Contains
Real
Proxy
Interface for
client
Send/receive
messages
© Peter R. Egli 2015
5/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
3. Remotable and nonremotable types (1/2)
Nonremotable types:
Objects that neither derive from MarshalByRefObject nor are serializable.
Examples: File handles, sockets, window handles (in general objects that can be used only
in the local context / application domain).
Remotable types:
1. Reference type objects:
Objects that derive from MarshalByRefObject are remotable.
The remote objects are marshalled by reference.
The client obtains a local reference object (proxy) to the remote server object.
MarshalByRefObject
MyRemotableClass
Only a reference to Object B
is transferred
Application domain A
Object A
Application domain B
.Net remoting
infrastructure
.Net remoting
infrastructure
Object B
marshal
by reference
A remote object becomes remotable by
reference simply by deriving from
the .Net class MarshalByRefObject
© Peter R. Egli 2015
6/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
3. Remotable and nonremotable types (2/2)
2. Value objects:
Objects that are serializable can be transferred into a different application domain.
Serializable objects must be „tagged“ with the attribute [Serializable].
Additionally serializable objects may implement the ISerializable interface and
provide a custom serialization (e.g. add some logging info to the serialized object
stream).
ISerializable
MyRemotableClass
The attribute Serializable is attached
to MyRemoteClass marking it
serializable (all members of the
class need to be serializable as well).
Optionally MyRemotableClass may
implement the ISerializable interface
allowing custom serialization.
[Serializable]
Marshal by value:
Object A
.Net remoting
infrastructure
.Net remoting
infrastructure
Copy of
object A
(marshal by
value)
Application domain A
Application domain B
Object A is serialized to
a stream
The stream containing a
serialized copy of object A
is transferred
Object A is deserialized from
the stream to a copy of the
object A
© Peter R. Egli 2015
7/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
4. .Net Remoting Server Object Activation Types (1/3)
Activation = creation and initialization of objects.
Activation of marshal by value types (Serializable):
Value type objects are activated through the de-serialization on the server side.
Activation of MarshalByRefObject types:
a. Client activated object (CAO):
• Object is activated by the client, transferred to the server and the called method
executed on the server side.
• Server object may retain state information between successive calls (stateful session).
• How it actually works:
Client Server
1. Object creation
2. Transfer to server
3. Execution in
the appl. domain
and process of
the server
MySrv
Proxy
MySrv
object
Client Server
Shared assembly
with MySrv type
Shared assembly
with MySrv type
Client creates the object locally. The
underlying .Net remoting
infrastructure actually creates a
proxy, creates a server object on the
server side and connects these 2
objects.
.Net remoting
infrastructure
.Net remoting
infrastructure
© Peter R. Egli 2015
8/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
4. .Net Remoting Server Object Activation Types (2/3)
b. SAO - Server Activated Object (1/2):
• SAO call semantics is stateless (no session semantics between client and server
object possible).
 Called „well-known“ types
 Published as an URI
 Server activates the objects and the client „connects“ to these.
 2 types of server-activated objects
Singleton objects:
 1 global instance for all clients and for all remote object calls
 Created when the first client accesses the server object.
 Server registration as singleton:
RemotingConfiguration.RegisterWellKnownServiceType(
typeof( SomeType ), "SomeURI", WellKnownObjectMode.Singleton );
Singleton
server
object
Client
proxy
object
Client
proxy
object
Client
proxy
object
© Peter R. Egli 2015
9/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
4. .Net Remoting Server Object Activation Types (3/3)
b. SAO - Server Activated Object (2/2):
Single-call objects:
 Individual object for each client method call.
 Every method call is executed on a new server object instance,
even if the call is made on the same client proxy object.
 Server registration as single-call object:
RemotingConfiguration.RegisterWellKnownServiceType(
typeof( SomeType ), "SomeURI", WellKnownObjectMode.SingleCall );
Single
server
object
Client
proxy
object
Single
server
object
Client
proxy
object
Single
server
object
Client
proxy
object
© Peter R. Egli 2015
10/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
5. .Net remoting object lifetime control
SAO single-call objects: Server object lives for 1 call only
SAO singleton and CAO objects: Lifetime managed by the Lease Manager
The Lease Manager decides if a remote object (server object) can be marked for deletion
(actual deletion is the job of the GC).
The Lease Manager contacts a sponsor in order to determine if a remote object can be marked
for deletion or if the lifetime of the object should be extended.
• Flexible design where client and server object lifetime are de-coupled.
• Lifetime of objects that are costly to create (lots of initialization etc.) can be given long
lifetimes.
• Objects that hold precious resources may be given short lifetimes (free resources quickly).
Server process
Server
Object
Lease
Lease
Manager
App Domain
Reference
Client process
Client
Sponsor
App Domain
© Peter R. Egli 2015
11/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
6. .Net remoting channel
.Net remoting channels are complex object-chains with at least 2 so called sinks (message
processing objects):
a. Formatter sink: Convert the message or object to be transported to the required
wire protocol (binary or SOAP)
b. Transport sink: Mapping of the serialized message stream into a transport
connection (binary formatter: plain TCP, SOAP: HTTP)
The programmer may add additional sink objects (e.g. logging or filtering sink object that logs
each message passing by).
Source: http://msdn.microsoft.com/en-us/library/tdzwhfy3(VS.71).aspx
Formatting into wire protocol (binary or SOAP)
Additional custom sinks
Mapping of serialized stream into transport connection
© Peter R. Egli 2015
12/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
Assembly mscorlib.dll (.Net
system assembly)
7. Assembly with remoting objects (1/2)
Both client and server must have the same assembly (.Net library in the form of a DLL or
executable) containing the shared interface. Both client and server must be linked with an
identical assembly containing the shared interface; only sharing the shared interface on
source level does not work (.Net remoting run-time throws an exception).
1. SAO scenario:
The shared assembly may only contain the interface (only minimal assembly with the shared
interface needs to be deployed). The server implementation (class CalcServer) is completely
hidden to the client.
Interface ICalc
CalcServer remote
object
MarshalByRefObject
Assembly ICalc.dll
Client application
Assembly CalcServer.exe
Link to
Assembly CalcClient.exe
Link to
Calc proxy
Connects to
© Peter R. Egli 2015
13/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
Assembly mscorlib.dll (.Net
system assembly)
7. Assembly with remoting objects (2/2)
2. CAO scenario:
Remotable object that extends MarshalByRefObject must be in the shared assembly because
it is created / activated by the client, but executed on the server; so both client and server
need the CalcServer class / object.
Interface ICalc
CalcServer application
MarshalByRefObject
Assembly Calc.dll
Client application
Assembly CalcServer.exe
Link to
Assembly CalcClient.exe
Link to
CalcServer
Transferred to
for execution
CalcServer
Link to
© Peter R. Egli 2015
14/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
8. Configuration files instead of programmatic creation of objects (1/2)
.Net remoting allows using XML-files for configuring various settings on the server and client
side, e.g. port numbers and formatters.
Advantage: Meta-programming without the need to change the code.
Disadvantage: If things don‘t work as expected debugging of configuration in XML-files is
difficult (Visual Studio does not provide help for creating configuration files).
Example server config file:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall" type="ICalc.CalcServer, ICalc" objectURI="ICalc.CalcServer"/>
</service>
<channels>
<channel ref="tcp" port="60000" bindTo="127.0.0.1">
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full"/>
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>
© Peter R. Egli 2015
15/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
8. Configuration files instead of programmatic creation of objects (2/2)
Example client config file:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown type="ICalc.CalcServer, ICalc“
url="tcp://127.0.0.1:60000/ICalc.CalcServer.soap"/>
</client>
</application>
</system.runtime.remoting>
</configuration>
© Peter R. Egli 2015
16/16
Rev. 1.40
Microsoft .Net Remoting indigoo.com
Async
delegate
9. Asynchronous remoting
Problem: Server method execution may take considerable time during which the client is
blocked (waits for the response).
Solution: Use of standard asynchronous delegates of .Net
 Further decoupling of client and server.
 Similar to asynchronous message oriented interaction between client and server.
Client
Proxy
object
Remote
object
Client passes the
proxy object to an
async delegate
for execution
(delegate runs in its
own thread)
Upon completion
the delegate calls
a callback method
in the client

More Related Content

What's hot (20)

PPT
Distributed System by Pratik Tambekar
Pratik Tambekar
 
PDF
Ekon25 mORMot 2 Server-Side Notifications
Arnaud Bouchez
 
PDF
Leveraging Android for the Internet of Things with Eclipse M2M
Benjamin Cabé
 
PDF
Component Based DDS with C++11 and R2DDS
Remedy IT
 
PDF
Istio Triangle Kubernetes Meetup Aug 2019
Ram Vennam
 
PPTX
Ietf91 ad hoc-coap-lwm2m-ipso
Michael Koster
 
PDF
Android chapter18 c-internet-web-services
Aravindharamanan S
 
PPTX
Device Management with OMA Lightweight M2M
Hannes Tschofenig
 
PDF
Beginning with wcf service
Binu Bhasuran
 
PDF
Microservices Architecture with Vortex — Part II
Angelo Corsaro
 
PDF
Hoti ofi 2015.doc
seanhefty
 
PDF
Introduction to OFI
seanhefty
 
PPTX
LWM2M Introduction - Edinburgh 2016 Workshop with ARM
Open Mobile Alliance
 
PPSX
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
PDF
Web services
Peter R. Egli
 
PDF
Service fabric and azure service fabric mesh
Mikkel Mørk Hegnhøj
 
PPT
Peer to Peer services and File systems
MNM Jain Engineering College
 
PDF
Openstack Workshop (Networking/Storage)
Affan Syed
 
PPTX
IPC: AIDL is not a curse
Yonatan Levin
 
PDF
Getting started with libfabric
Jianxin Xiong
 
Distributed System by Pratik Tambekar
Pratik Tambekar
 
Ekon25 mORMot 2 Server-Side Notifications
Arnaud Bouchez
 
Leveraging Android for the Internet of Things with Eclipse M2M
Benjamin Cabé
 
Component Based DDS with C++11 and R2DDS
Remedy IT
 
Istio Triangle Kubernetes Meetup Aug 2019
Ram Vennam
 
Ietf91 ad hoc-coap-lwm2m-ipso
Michael Koster
 
Android chapter18 c-internet-web-services
Aravindharamanan S
 
Device Management with OMA Lightweight M2M
Hannes Tschofenig
 
Beginning with wcf service
Binu Bhasuran
 
Microservices Architecture with Vortex — Part II
Angelo Corsaro
 
Hoti ofi 2015.doc
seanhefty
 
Introduction to OFI
seanhefty
 
LWM2M Introduction - Edinburgh 2016 Workshop with ARM
Open Mobile Alliance
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
Web services
Peter R. Egli
 
Service fabric and azure service fabric mesh
Mikkel Mørk Hegnhøj
 
Peer to Peer services and File systems
MNM Jain Engineering College
 
Openstack Workshop (Networking/Storage)
Affan Syed
 
IPC: AIDL is not a curse
Yonatan Levin
 
Getting started with libfabric
Jianxin Xiong
 

Viewers also liked (20)

PPTX
Net remoting
eduardojunior78
 
PPTX
.Net Remoting
nessita24_1
 
PPSX
Introduction to .net framework
Arun Prasad
 
PDF
7 Distribueret programming - .NET remoting
jeanette89
 
PPT
Basics of WCF and its Security
Mindfire Solutions
 
PPTX
MSDN Presents: Visual Studio 2010, .NET 4, SharePoint 2010 for Developers
Dave Bost
 
PPTX
NoSQL Database in .NET Apps
Shiju Varghese
 
PPT
Microsoft� .NET and Microsoft� Office 2003
Rishi Kothari
 
PDF
dotnet_remoting
OPENLANE
 
PPT
Top 9 Features Of a Successful Android Application
Grey Matter India Technologies PVT LTD
 
PPTX
14 Programación Web con .NET y C#
guidotic
 
PPT
Session 9
LiquidHub
 
DOC
Serialization in .NET
Abhi Arya
 
PPT
Session 6
LiquidHub
 
PPT
1.Philosophy of .NET
snandagopalan2
 
PPTX
Next .NET and C#
Bertrand Le Roy
 
PPT
C sharp
Satish Verma
 
PPTX
.Net framework
Gracia Marcom
 
PDF
Dotnet basics
Mir Majid
 
PPT
Nakov - .NET Framework Overview - English
Svetlin Nakov
 
Net remoting
eduardojunior78
 
.Net Remoting
nessita24_1
 
Introduction to .net framework
Arun Prasad
 
7 Distribueret programming - .NET remoting
jeanette89
 
Basics of WCF and its Security
Mindfire Solutions
 
MSDN Presents: Visual Studio 2010, .NET 4, SharePoint 2010 for Developers
Dave Bost
 
NoSQL Database in .NET Apps
Shiju Varghese
 
Microsoft� .NET and Microsoft� Office 2003
Rishi Kothari
 
dotnet_remoting
OPENLANE
 
Top 9 Features Of a Successful Android Application
Grey Matter India Technologies PVT LTD
 
14 Programación Web con .NET y C#
guidotic
 
Session 9
LiquidHub
 
Serialization in .NET
Abhi Arya
 
Session 6
LiquidHub
 
1.Philosophy of .NET
snandagopalan2
 
Next .NET and C#
Bertrand Le Roy
 
C sharp
Satish Verma
 
.Net framework
Gracia Marcom
 
Dotnet basics
Mir Majid
 
Nakov - .NET Framework Overview - English
Svetlin Nakov
 
Ad

Similar to Overview of Microsoft .Net Remoting technology (20)

PPTX
Remote Method Invocation
Sabiha M
 
PDF
RMI (Remote Method Invocation)
Thesis Scientist Private Limited
 
PDF
Distributed objects
Sharafat Husen
 
PPTX
Remoting and serialization
Chathurangi Shyalika
 
PDF
Component Object Model (COM, DCOM, COM+)
Peter R. Egli
 
PPTX
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic
 
PPT
Introduction to the Client OM in SharePoint 2010
Ben Robb
 
PPTX
.NET Intro & Dependency Injection Workshop
Serhii Kokhan
 
PDF
Blazor, lo sapevi che...
Andrea Dottor
 
PDF
.NET Core, ASP.NET Core Course, Session 17
Amin Mesbahi
 
PDF
react-slides.pdf
DayNightGaMiNg
 
PDF
react-slides.pdf gives information about react library
janet736113
 
PPTX
react-slides.pptx
DayNightGaMiNg
 
PPTX
Microservices
Ramesh (@Mavuluri)
 
PPTX
Docker containers introduction and its usage
saurabh22062
 
PPT
java web services - soap and rest services
VasantPrasad
 
PPTX
Building reusable components as micro frontends with glimmer js and webcompo...
Andrei Sebastian Cîmpean
 
PPTX
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
Shriram Pore
 
PPTX
Vert.x for Microservices Architecture
Idan Fridman
 
PDF
Developing maintainable Cordova applications
Ivano Malavolta
 
Remote Method Invocation
Sabiha M
 
RMI (Remote Method Invocation)
Thesis Scientist Private Limited
 
Distributed objects
Sharafat Husen
 
Remoting and serialization
Chathurangi Shyalika
 
Component Object Model (COM, DCOM, COM+)
Peter R. Egli
 
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic
 
Introduction to the Client OM in SharePoint 2010
Ben Robb
 
.NET Intro & Dependency Injection Workshop
Serhii Kokhan
 
Blazor, lo sapevi che...
Andrea Dottor
 
.NET Core, ASP.NET Core Course, Session 17
Amin Mesbahi
 
react-slides.pdf
DayNightGaMiNg
 
react-slides.pdf gives information about react library
janet736113
 
react-slides.pptx
DayNightGaMiNg
 
Microservices
Ramesh (@Mavuluri)
 
Docker containers introduction and its usage
saurabh22062
 
java web services - soap and rest services
VasantPrasad
 
Building reusable components as micro frontends with glimmer js and webcompo...
Andrei Sebastian Cîmpean
 
Object Striping In Swift_OpenStack HongKong Summit 2013_v2.2
Shriram Pore
 
Vert.x for Microservices Architecture
Idan Fridman
 
Developing maintainable Cordova applications
Ivano Malavolta
 
Ad

More from Peter R. Egli (20)

PDF
LPWAN Technologies for Internet of Things (IoT) and M2M Scenarios
Peter R. Egli
 
PDF
Data Networking Concepts
Peter R. Egli
 
PDF
Communication middleware
Peter R. Egli
 
PDF
Transaction Processing Monitors (TPM)
Peter R. Egli
 
PDF
Business Process Model and Notation (BPMN)
Peter R. Egli
 
PDF
Overview of Cloud Computing
Peter R. Egli
 
PDF
MQTT - MQ Telemetry Transport for Message Queueing
Peter R. Egli
 
PDF
Enterprise Application Integration Technologies
Peter R. Egli
 
PDF
Android Native Development Kit
Peter R. Egli
 
PDF
Overview of SCTP (Stream Control Transmission Protocol)
Peter R. Egli
 
PDF
Overview of SCTP (Stream Control Transmission Protocol)
Peter R. Egli
 
PDF
Overview of Spanning Tree Protocol (STP & RSTP)
Peter R. Egli
 
PDF
MSMQ - Microsoft Message Queueing
Peter R. Egli
 
PDF
Common Object Request Broker Architecture - CORBA
Peter R. Egli
 
PDF
JMS - Java Messaging Service
Peter R. Egli
 
PDF
Web Services (SOAP, WSDL, UDDI)
Peter R. Egli
 
PDF
REST - Representational State Transfer
Peter R. Egli
 
PDF
MOM - Message Oriented Middleware
Peter R. Egli
 
PDF
Windows Communication Foundation (WCF)
Peter R. Egli
 
PDF
Java API for XML Web Services (JAX-WS)
Peter R. Egli
 
LPWAN Technologies for Internet of Things (IoT) and M2M Scenarios
Peter R. Egli
 
Data Networking Concepts
Peter R. Egli
 
Communication middleware
Peter R. Egli
 
Transaction Processing Monitors (TPM)
Peter R. Egli
 
Business Process Model and Notation (BPMN)
Peter R. Egli
 
Overview of Cloud Computing
Peter R. Egli
 
MQTT - MQ Telemetry Transport for Message Queueing
Peter R. Egli
 
Enterprise Application Integration Technologies
Peter R. Egli
 
Android Native Development Kit
Peter R. Egli
 
Overview of SCTP (Stream Control Transmission Protocol)
Peter R. Egli
 
Overview of SCTP (Stream Control Transmission Protocol)
Peter R. Egli
 
Overview of Spanning Tree Protocol (STP & RSTP)
Peter R. Egli
 
MSMQ - Microsoft Message Queueing
Peter R. Egli
 
Common Object Request Broker Architecture - CORBA
Peter R. Egli
 
JMS - Java Messaging Service
Peter R. Egli
 
Web Services (SOAP, WSDL, UDDI)
Peter R. Egli
 
REST - Representational State Transfer
Peter R. Egli
 
MOM - Message Oriented Middleware
Peter R. Egli
 
Windows Communication Foundation (WCF)
Peter R. Egli
 
Java API for XML Web Services (JAX-WS)
Peter R. Egli
 

Recently uploaded (20)

PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Learn Computer Forensics, Second Edition
AnuraShantha7
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Learn Computer Forensics, Second Edition
AnuraShantha7
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 

Overview of Microsoft .Net Remoting technology

  • 1. © Peter R. Egli 2015 1/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com Peter R. Egli INDIGOO.COM OVERVIEW OF MICROSOFTS .NET REMOTING TECHNOLOGY .NET REMOTING
  • 2. © Peter R. Egli 2015 2/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com Contents 1. .Net Remoting architecture 2. .Net Remoting concepts 3. Remotable and nonremotable types 4. .Net Remoting Server Object Activation Types 5. .Net remoting object lifetime control 6. .Net remoting channel 7. Assembly with remoting objects 8. Configuration files instead of programmatic creation of objects 9. Asynchronous remoting
  • 3. © Peter R. Egli 2015 3/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 1. .Net Remoting architecture Proxy: Client-side stub object that connects to the (remote) server object. Channel: Transport channel for objects, defined by host + port + endpoint (= remote object service). Dispatcher: Part of the .Net remoting infrastructure; dispatches method call to the server object. Formatter and Transport sink see below. Client Proxy object Dispatcher Server (remote) object Client Server .Net remoting infrastructure Formatter sink Transport sink Formatter sink Transport sink Channel
  • 4. © Peter R. Egli 2015 4/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com ChannelServices 2. .Net Remoting concepts Channel: Comprises a server port number and a formatting (=protocol such as HTTP or TCP) Endpoint: Specifies the application that receives the calls (requests) ChannelServices HTTP Client Channel EP http://<host>:<port>/<endpoint> ServerObjectServerObject EP HTTP Server Channel ICalcICalc.dll (common assembly) Contains TCP Server ChannelTCP Client Channel ServerObject Transparent Proxy Client ICalc .Net remoting infrastructure Channel type (formatting, protocol) Channel port number Endpoint (application) <<has>> ICalc.dll (common assembly) .Net remoting infrastructure Register Formatter FormatterFormatter Get object reference Create proxy object as object reference Contains Real Proxy Interface for client Send/receive messages
  • 5. © Peter R. Egli 2015 5/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 3. Remotable and nonremotable types (1/2) Nonremotable types: Objects that neither derive from MarshalByRefObject nor are serializable. Examples: File handles, sockets, window handles (in general objects that can be used only in the local context / application domain). Remotable types: 1. Reference type objects: Objects that derive from MarshalByRefObject are remotable. The remote objects are marshalled by reference. The client obtains a local reference object (proxy) to the remote server object. MarshalByRefObject MyRemotableClass Only a reference to Object B is transferred Application domain A Object A Application domain B .Net remoting infrastructure .Net remoting infrastructure Object B marshal by reference A remote object becomes remotable by reference simply by deriving from the .Net class MarshalByRefObject
  • 6. © Peter R. Egli 2015 6/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 3. Remotable and nonremotable types (2/2) 2. Value objects: Objects that are serializable can be transferred into a different application domain. Serializable objects must be „tagged“ with the attribute [Serializable]. Additionally serializable objects may implement the ISerializable interface and provide a custom serialization (e.g. add some logging info to the serialized object stream). ISerializable MyRemotableClass The attribute Serializable is attached to MyRemoteClass marking it serializable (all members of the class need to be serializable as well). Optionally MyRemotableClass may implement the ISerializable interface allowing custom serialization. [Serializable] Marshal by value: Object A .Net remoting infrastructure .Net remoting infrastructure Copy of object A (marshal by value) Application domain A Application domain B Object A is serialized to a stream The stream containing a serialized copy of object A is transferred Object A is deserialized from the stream to a copy of the object A
  • 7. © Peter R. Egli 2015 7/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 4. .Net Remoting Server Object Activation Types (1/3) Activation = creation and initialization of objects. Activation of marshal by value types (Serializable): Value type objects are activated through the de-serialization on the server side. Activation of MarshalByRefObject types: a. Client activated object (CAO): • Object is activated by the client, transferred to the server and the called method executed on the server side. • Server object may retain state information between successive calls (stateful session). • How it actually works: Client Server 1. Object creation 2. Transfer to server 3. Execution in the appl. domain and process of the server MySrv Proxy MySrv object Client Server Shared assembly with MySrv type Shared assembly with MySrv type Client creates the object locally. The underlying .Net remoting infrastructure actually creates a proxy, creates a server object on the server side and connects these 2 objects. .Net remoting infrastructure .Net remoting infrastructure
  • 8. © Peter R. Egli 2015 8/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 4. .Net Remoting Server Object Activation Types (2/3) b. SAO - Server Activated Object (1/2): • SAO call semantics is stateless (no session semantics between client and server object possible).  Called „well-known“ types  Published as an URI  Server activates the objects and the client „connects“ to these.  2 types of server-activated objects Singleton objects:  1 global instance for all clients and for all remote object calls  Created when the first client accesses the server object.  Server registration as singleton: RemotingConfiguration.RegisterWellKnownServiceType( typeof( SomeType ), "SomeURI", WellKnownObjectMode.Singleton ); Singleton server object Client proxy object Client proxy object Client proxy object
  • 9. © Peter R. Egli 2015 9/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 4. .Net Remoting Server Object Activation Types (3/3) b. SAO - Server Activated Object (2/2): Single-call objects:  Individual object for each client method call.  Every method call is executed on a new server object instance, even if the call is made on the same client proxy object.  Server registration as single-call object: RemotingConfiguration.RegisterWellKnownServiceType( typeof( SomeType ), "SomeURI", WellKnownObjectMode.SingleCall ); Single server object Client proxy object Single server object Client proxy object Single server object Client proxy object
  • 10. © Peter R. Egli 2015 10/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 5. .Net remoting object lifetime control SAO single-call objects: Server object lives for 1 call only SAO singleton and CAO objects: Lifetime managed by the Lease Manager The Lease Manager decides if a remote object (server object) can be marked for deletion (actual deletion is the job of the GC). The Lease Manager contacts a sponsor in order to determine if a remote object can be marked for deletion or if the lifetime of the object should be extended. • Flexible design where client and server object lifetime are de-coupled. • Lifetime of objects that are costly to create (lots of initialization etc.) can be given long lifetimes. • Objects that hold precious resources may be given short lifetimes (free resources quickly). Server process Server Object Lease Lease Manager App Domain Reference Client process Client Sponsor App Domain
  • 11. © Peter R. Egli 2015 11/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 6. .Net remoting channel .Net remoting channels are complex object-chains with at least 2 so called sinks (message processing objects): a. Formatter sink: Convert the message or object to be transported to the required wire protocol (binary or SOAP) b. Transport sink: Mapping of the serialized message stream into a transport connection (binary formatter: plain TCP, SOAP: HTTP) The programmer may add additional sink objects (e.g. logging or filtering sink object that logs each message passing by). Source: http://msdn.microsoft.com/en-us/library/tdzwhfy3(VS.71).aspx Formatting into wire protocol (binary or SOAP) Additional custom sinks Mapping of serialized stream into transport connection
  • 12. © Peter R. Egli 2015 12/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com Assembly mscorlib.dll (.Net system assembly) 7. Assembly with remoting objects (1/2) Both client and server must have the same assembly (.Net library in the form of a DLL or executable) containing the shared interface. Both client and server must be linked with an identical assembly containing the shared interface; only sharing the shared interface on source level does not work (.Net remoting run-time throws an exception). 1. SAO scenario: The shared assembly may only contain the interface (only minimal assembly with the shared interface needs to be deployed). The server implementation (class CalcServer) is completely hidden to the client. Interface ICalc CalcServer remote object MarshalByRefObject Assembly ICalc.dll Client application Assembly CalcServer.exe Link to Assembly CalcClient.exe Link to Calc proxy Connects to
  • 13. © Peter R. Egli 2015 13/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com Assembly mscorlib.dll (.Net system assembly) 7. Assembly with remoting objects (2/2) 2. CAO scenario: Remotable object that extends MarshalByRefObject must be in the shared assembly because it is created / activated by the client, but executed on the server; so both client and server need the CalcServer class / object. Interface ICalc CalcServer application MarshalByRefObject Assembly Calc.dll Client application Assembly CalcServer.exe Link to Assembly CalcClient.exe Link to CalcServer Transferred to for execution CalcServer Link to
  • 14. © Peter R. Egli 2015 14/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 8. Configuration files instead of programmatic creation of objects (1/2) .Net remoting allows using XML-files for configuring various settings on the server and client side, e.g. port numbers and formatters. Advantage: Meta-programming without the need to change the code. Disadvantage: If things don‘t work as expected debugging of configuration in XML-files is difficult (Visual Studio does not provide help for creating configuration files). Example server config file: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application> <service> <wellknown mode="SingleCall" type="ICalc.CalcServer, ICalc" objectURI="ICalc.CalcServer"/> </service> <channels> <channel ref="tcp" port="60000" bindTo="127.0.0.1"> <serverProviders> <formatter ref="binary" typeFilterLevel="Full"/> </serverProviders> </channel> </channels> </application> </system.runtime.remoting> </configuration>
  • 15. © Peter R. Egli 2015 15/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com 8. Configuration files instead of programmatic creation of objects (2/2) Example client config file: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application> <client> <wellknown type="ICalc.CalcServer, ICalc“ url="tcp://127.0.0.1:60000/ICalc.CalcServer.soap"/> </client> </application> </system.runtime.remoting> </configuration>
  • 16. © Peter R. Egli 2015 16/16 Rev. 1.40 Microsoft .Net Remoting indigoo.com Async delegate 9. Asynchronous remoting Problem: Server method execution may take considerable time during which the client is blocked (waits for the response). Solution: Use of standard asynchronous delegates of .Net  Further decoupling of client and server.  Similar to asynchronous message oriented interaction between client and server. Client Proxy object Remote object Client passes the proxy object to an async delegate for execution (delegate runs in its own thread) Upon completion the delegate calls a callback method in the client