在.NET平臺下,程序集並沒有直接承載在進程中(而傳統的win32程序是直接承載的)。實際上.NET可執行程序承載在進程的壹個邏輯分區中,術語稱為應用程序域(也稱AppDomain)。可見,壹個進程可以包含多個應用程序域,每壹個應用程序域中承載壹個.NET可執行程序,這樣的好處如下:
應用程序域是.NET平臺操作系統獨立性的關鍵特性。這種邏輯分區將不同操作系統加載可執行程序的差異抽象化了。
和壹個完整的進程相比,應用程序域的CPU和內存占用要小的多。因此CLR加載和卸載應用程序域比起完整的進程來說也快的多。
應用程序域為承載的應用程序提供了深度隔離。如果進程中壹個應用程序域失敗了,其他的應用程序域也能保持正常。
AppDomain的主要成員:
CreateDomain():該靜態方法在當前進程中創建壹個新的應用程序域。由於CLR能夠根據需要創建應用程序域,所以必須調用這個方法的機會很少。
GetCurrentThreadId():該靜態方法返回當前應用程序域上活動的線程ID。
UnLoad():該靜態方法在進程中卸載指定的應用程序域。
BaseDirectory:獲取基目錄,該目錄用於探測相關的程序集。
CreateInstance():在指定程序集文件中創建指定類型的新實例。
ExecuteAssembly():根據文件名在應用程序域中執行程序集。
GetAssemblies():獲取已加載到此應用程序域中的.NET程序集(基於COM和C的二進制文件除外)。
Load():動態加載程序集到當前應用程序域。