共用方式為


裝載概觀

更新:2007 年 11 月

.NET Framework 2.0 版讓裝載 Common Language Runtime (CLR) 的應用程式,可以控制許多執行階段功能。您可以用自訂的實作 (Implementation) 取代某些功能,例如記憶體配置和組件的載入。您可以控制其他功能的行為、在執行階段接收事件的告知,以及管理應用程式定義域。

初始化及啟動裝載的執行階段

CorBindToRuntimeEx 函式會初始化執行階段,和舊版的執行階段一樣。您可以選擇要載入哪一個執行階段版本,但是一個處理序只能裝載一個版本。如果已載入 2.0 版,這個函式會傳回 ICLRRuntimeHost 介面,用來啟動執行階段及執行 Managed 程式碼。

注意事項:

在舊版中會傳回 ICorRuntimeHost 介面。

啟動執行階段的內容在將 Common Language Runtime 載入處理序中,執行 Managed 程式碼的內容在轉換為 Managed 裝載程式碼中會有詳細的討論。

裝載管理介面

在 .NET Framework 2.0 版中,CLR 可裝載管理介面以控制裝載之執行階段的許多功能、啟用裝載應用程式以實作執行階段所提供的其他管理介面,並可讓您實作自己的裝置管理介面。

為了進行探索,可將管理介面分為兩個廣泛的類型:

  • 主應用程式所實作,且執行階段透過 IHostControl 介面所探索的管理介面。

  • CLR 所提供,且主應用程式透過 ICLRControl 介面所探索的管理介面。

下表根據介面所提供的功能種類來對介面進行分類,會先列出每一個群組中最重要的介面。

群組

功能

介面

組件載入管理

可讓主應用程式 (Host) 自訂載入組件的位置、管理版本的方式,以及可以載入哪些格式的組件。例如,組件可以從資料庫載入,而不是從硬碟的檔案載入。

此 CLR 使用 IHostControl 介面來探索主應用程式是否會實作這個介面群組。

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

原則管理

可讓主應用程式指定處理程式失敗的方式,以支援不同的可靠性需求。

主應用程式會使用 ICLRControl 介面存取執行階段管理員,並為執行階段傳回的失敗通知,實作 IHostPolicyManager 回呼 (callback)。

ICLRPolicyManager

IHostPolicyManager

主應用程式保護管理

避免使用指定的型別或成員,讓主應用程式強制執行它自己的程式撰寫模型 (Programming Model)。例如,主應用程式可不允許使用執行緒或同步處理原始物件。

這個主應用程式會使用 ICLRControl 介面來存取執行階段管理員。

ICLRHostProtectionManager

記憶體管理

以取代 CLR 用於配置記憶體的作業系統函式的方式,讓主應用程式控制記憶體配置。

此 CLR 使用 IHostControl 介面來探索主應用程式是否會實作這個介面群組。

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

記憶體回收管理

可讓主應用程式實作方法,在記憶體回收開始和結束時接收通知。可讓主應用程式初始化集合、收集統計資料,並指定集合的某些特性。

這個主應用程式會使用 ICLRControl 介面來存取執行階段管理員。此 CLR 使用 IHostControl 介面來探索主應用程式是否會實作這個介面群組。

IHostGCManager

ICLRGCManager

偵錯管理

可讓主應用程式探索是否已附加偵錯工具、提供額外的偵錯資訊以及自訂偵錯工作。

這個主應用程式會使用 ICLRControl 介面來存取執行階段管理員。

ICLRDebugManager

CLR 事件管理

可讓主應用程式註冊由 EClrEvent 所列舉的事件通知。

主應用程式會使用 ICLRControl 介面,存取執行階段管理員,並使用 IActionOnCLREvent 介面以實作事件處理常式。

ICLROnEventManager

IActionOnCLREvent

工作管理

可讓主應用程式在執行緒於 Managed 和 Unmanaged 程式碼之間轉換時收到通知。可讓主應用程式控制執行緒相似性、啟動和結束工作的時機,以及如何排程執行緒。

此 CLR 使用 IHostControl 介面來探索主應用程式是否會實作這個介面群組。

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

執行緒集區管理

可讓主應用程式針對要使用的執行階段實作它自己的執行緒集區。

此 CLR 使用 IHostControl 介面來探索主應用程式是否會實作這個介面群組。

IHostThreadPoolManager

同步處理管理

可讓主應用程式針對要使用的執行階段實作它自己的同步處理基礎。主應用程式可以提供事件、關鍵區段 (Critical Section) 和號誌 (Semaphore)。

此 CLR 使用 IHostControl 介面來探索主應用程式是否會實作這個介面群組。

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

I/O 完成管理

可讓主應用程式實作它自己的非同步 (Asynchronous) 輸入/輸出實作 (Implementation)。

此 CLR 使用 IHostControl 介面來探索主應用程式是否會實作這個介面群組。

IHostIoCompletionManager

注意事項:

如需舊版執行階段之裝載介面的詳細資訊,請參閱 .NET Framework 1.0 及 1.1 的裝載介面

應用程式定義域管理員

如果是裝載 CLR 的程式,應用程式定義域會隔離各組件以提供更高的可靠性。可以藉由卸載應用程式定義域來從處理序卸載組件。

為了要管理多個應用程式定義域,.NET Framework 2.0 版提供了 AppDomainManager 類別當做基底類別 (Base Class),您可以從這個類別衍生您自己的應用程式定義域管理員。您為主應用程式 (Host Application) 設計的應用程式定義域管理員基本上是主應用程式的擴充功能 (以 Managed 程式碼撰寫),它會自動載入處理序內建立的每個應用程式定義域中。

應用程式定義域管理員可藉由排除 Managed 和 Unmanaged 程式碼之間的某些轉換而提高效能,它可以接收建立新應用程式定義域的告知,讓您有機會可以進行設定;應用程式定義域管理員也可為 Unmanaged 主應用程式提供一個方法來呼叫 Managed 程式碼。

請參閱

概念

將 Common Language Runtime 載入處理序

參考

AppDomainManager

其他資源

裝載 Common Language Runtime

應用程式定義域

.NET Framework 2.0 和以後版本的裝載介面