All Windows applications run in a process. The process has resources such as memory and core objects, while threads perform the code that is loaded into the process. In the same operating system, different processes are interfere with each other, so a process is impossible to accidentally affect the execution of applications in another process. In order to let multiple applications run on the same computer, this mutually uninterrupted is the most basic requirement. This security requires no matter what happens (or even crash), it will not affect other applications. run. The process provides a good application fault tolerance, which is why these processes are required when IIS and COM are running in high isolation mode.
In Windows, the problem exists in Windows is that the creation and management of the process takes a lot of resources while their retractability is not very good when using a large number of processes. For example: If you are using IIS, you can configure a lot of sites to isolate running, each site has its own process, and these processes will consume many resources (such as memory).
The application domain in .NET has the same advantages, but multiple application domains can run in the same process.
The application domain can run safely in the same process, because the CLR code check function ensures that the code is allowed to execute safely. This provides strong scalability and reliability.
When ASP.NET is run as part of IIS4 / 5, it uses the application domain to perform an instance of each ASP.NET application, because each ASP.NET application is running in its application domain, so It does not conflicts with other ASP.NET applications in the same computer. At the same time, ASP.NET ignores the process isolation you specified in IIS.