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