Boundaries: Processes and Application Domains
This topic is specific to a legacy technology that is retained for backward compatibility with existing applications and is not recommended for new development. Distributed applications should now be developed using the Windows Communication Foundation (WCF).
Modern operating systems and run-time environments need to protect individual applications from the failure of other applications. This protection mechanism is implemented by using processes and application domains.
Processes
Microsoft Windows operating systems protect applications from each other by running each application in its own process. If an application fails for some reason, only that process is affected; applications in other processes continue to perform. Of course, because memory addresses in one process have no meaning in another process, it can be somewhat complex to call functions in one process from some other process. Marshaling is the term given to the events that occur when a call, and any arguments, are packaged in one process and unpackaged in another so that a call across a process boundary can be successful.
Application Domains
In the managed environment, application domains (which you can think of as logical processes) and contexts provide isolation and security at less cost and with greater ability to scale well than an operating-system process by relying on, among other things, the fact that managed code is verifiably type-safe. Every managed application runs in an application domain, whether another application starts a domain on its behalf or the host environment starts one for it. .NET remoting helps to provide the infrastructure to communicate between application domains in a straightforward manner, protected by security technologies.
See Also
Other Resources
Making Objects Remotable
Application Domains
Overview of the .NET Framework