在.NET之前的技术中,进程作为独立的边界来使用,每个进程都有其私有的虚拟内存。运行在一个进程中的应用程序不能写入另一个应用程序的内存,也不会因为这种方式破坏其他应用程序。进程可以看做应用程序之间的一个独立而安全的边界。
在.NET体系结构中,应用程序有一个新边界,应用程序域。它可以被看作是一个轻量级的进程。使用托管IL代码,运行库可以确保在同一个进程中不能访问另一个应用程序的内存。一个进程中可以包含多个应用程序域,一个应用程序域可以装载一个可执行程序(*.exe)或者多个程序集(*.dll)。这样可以在应用程序域之间实现深度隔离,即使进程中的某个应用程序域出现错误,也不会影响其他应用程序域的正常运作。
AppDomain类用于创建和终止应用程序域,加载和卸载程序集和类型,以及枚举应用程序域中的程序集和线程。
一个进程内可以包括多个应用程序域,也有包括多个线程。
在不同的时刻,线程可以运行于多个不同的应用程序域中。但在同一个时刻,线程只会处于一个应用程序域内。