This chapter gives you a short introduction to the world of distributed application development and its respective technologies. Here you get a chance to examine some scenarios in which .NET Remoting can be employed and learn some historical background on the progress and development of various remoting frameworks during the last ten years.
Remoting is the process of programs or components interacting across certain boundaries. These contexts will normally resemble either different processes or machines. 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 provides 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.
.NET extends this concept to include the ability to define additional contexts within one running application. Object accesses crossing these boundaries will pass the .NET Remoting Framework as well.