Remoting is the process of programs or components interacting across certain boundaries. These contexts will normally resemble either different processes or machines.1 In the .NET Framework, this technology provides the foundation for distributed applications—it simply replaces DCOM.
Remoting implementations generally distinguish between remote objects and mobile objects. The former provide the ability to execute methods on remote servers, passing parameters and receiving return values. The remote object will always "stay" at the server, and only a reference to it will be passed around among other machines.
When mobile objects pass a context boundary, they are serialized (marshaled) into a general representation—either a binary or a human readable format like XML—and then deserialized in the other context involved in the process. Server and client both hold copies of the same object. Methods executed on those copies of the object will always be carried out in the local context, and no message will travel back to the machine from which the object originated. In fact, after serialization and deserialization, the copied objects are indistinguishable from regular local objects, and there is also no distinction between a server object and a client object.
Was this article helpful?