.net中應用程序域的概念

在.NET平臺下,程序集並沒有直接承載在進程中(而傳統的win32程序是直接承載的)。實際上.NET可執行程序承載在進程的壹個邏輯分區中,術語稱為應用程序域(也稱AppDomain)。可見,壹個進程可以包含多個應用程序域,每壹個應用程序域中承載壹個.NET可執行程序,這樣的好處如下:

  應用程序域是.NET平臺操作系統獨立性的關鍵特性。這種邏輯分區將不同操作系統加載可執行程序的差異抽象化了。

  和壹個完整的進程相比,應用程序域的CPU和內存占用要小的多。因此CLR加載和卸載應用程序域比起完整的進程來說也快的多。

  應用程序域為承載的應用程序提供了深度隔離。如果進程中壹個應用程序域失敗了,其他的應用程序域也能保持正常。

  AppDomain的主要成員:

  CreateDomain():該靜態方法在當前進程中創建壹個新的應用程序域。由於CLR能夠根據需要創建應用程序域,所以必須調用這個方法的機會很少。

  GetCurrentThreadId():該靜態方法返回當前應用程序域上活動的線程ID。

  UnLoad():該靜態方法在進程中卸載指定的應用程序域。

  BaseDirectory:獲取基目錄,該目錄用於探測相關的程序集。

  CreateInstance():在指定程序集文件中創建指定類型的新實例。

  ExecuteAssembly():根據文件名在應用程序域中執行程序集。

  GetAssemblies():獲取已加載到此應用程序域中的.NET程序集(基於COM和C的二進制文件除外)。

  Load():動態加載程序集到當前應用程序域。