Now lets examine what these App Domains are.
Application domains are basically logical boundaries which provide a secure, versatile unit of processing that the Common Language Runtime (CLR) uses to provide isolation between applications.
Thus, you can run several application domains in a single process with the same level of isolation that would exist in separate processes, but without incurring the additional overhead of making cross-process calls or switching between processes.
The ability to run multiple applications within a single process dramatically increases server scalability.
Thus, the Application domains provide an isolation that has the following advantages:
- Application Security
- Faults in one application cannot affect other applications.
- Individual applications can be stopped without stopping the entire process.
- Code running in one application cannot directly access code or resources from another application. The CLR enforces this isolation by preventing direct calls between objects in different application domains.
- The Scope of the code is controlled by the Application domain. The Application domain provides configuration settings such as application version policies, the location of any remote assemblies it accesses, and information about where to locate assemblies that are loaded into the domain.
- The Permissions granted to code can be controlled by the application domain in which the code is running.