What is the major use of MarshalByRefObject?

C#.Net

C# Problem Overview


What's the purpose for MarshalByRefObject?

C# Solutions


Solution 1 - C#

Remoting; it means that between AppDomains or machines, rather than serialize and transfer the object, the object stays at one end and a proxy is created at the other. All method calls to the proxy are intercepted and the call is transmitted as RPC wiki, msdn, causing the method to execute on the other machine (typically serialising the arguments and return value).

Note: this can lead to unexpectedly "chatty" interfaces. The object/proxy/RPC approach is now less preferable to approaches with an explicit service boundary; Microsoft now recommends WCF wiki, msdn instead of remoting.

Solution 2 - C#

Another important use of MarshalByRefObject is for implementing AOP via remoting sink-chains.

If you have an object that derives from ContextBoundObject (which itself derives from MarshalByRefObject) you can instantiate it in a separate Context within the same AppDomain and have communications between objects automatically go through the Remoting proxy system - allowing you to plug custom sinks into the Remoting sink-chain.

This ultimately allows you to 'decorate' method calls to your objects and implement cross-cutting services, such as logging and security etc.

Solution 3 - C#

it basic use is for support access of objects between two appdomains and these appdomains can be on the same computer or in the different computers via remoting.

See Here

Solution 4 - C#

Any object outside the application domain of the caller application should be considered as Remote Object. A Remote Object that should be derived from MarshalByRefObject Class. Any object can be changed into a Remote Object by deriving it from MarshalByRefObject. Objects without inheriting from MarshalByRefObject are called Non-remotable Objects.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser496949View Question on Stackoverflow
Solution 1 - C#Marc GravellView Answer on Stackoverflow
Solution 2 - C#Dean ChalkView Answer on Stackoverflow
Solution 3 - C#TalentTunerView Answer on Stackoverflow
Solution 4 - C#Arvind SinghView Answer on Stackoverflow