Share via


ホストの概要

更新 : 2007 年 11 月

.NET Framework Version 2.0 を使用すると、共通言語ランタイム (CLR: Common Language Runtime) をホストするアプリケーションで、ランタイムの多くの機能を制御できます。メモリの割り当て、アセンブリの読み込みなどの一部の機能は、カスタムの実装に置き換えることができます。他の機能の動作の制御、ランタイムのイベントの通知の受け取り、およびアプリケーション ドメインの管理ができます。

ホストされたランタイムの初期化および起動

以前のバージョンのランタイムと同様に、ランタイムは CorBindToRuntimeEx 関数によって初期化されます。読み込むランタイムを選択できますが、各プロセスでホストできるランタイムは 1 バージョンのみです。Version 2.0 が読み込まれると、関数から ICLRRuntimeHost インターフェイスが返されます。このインターフェイスを使用して、ランタイムが起動され、マネージ コードが実行されます。

zaf1h1h5.alert_note(ja-jp,VS.90).gifメモ :

以前のバージョンでは、ICorRuntimeHost インターフェイスが返されます。

ランタイムの起動については「プロセスへの共通言語ランタイムの読み込み」を、マネージ コードの実行については「マネージ ホスト コードへの遷移」を参照してください。

ホスト管理インターフェイス

.NET Framework Version 2.0 の CLR には、ホストされるランタイムの多くの機能を制御するホスト管理インターフェイスが用意されています。また、ランタイムが提供する他の管理インターフェイスをホスト アプリケーションで実装したり、ユーザーが独自のホスト管理インターフェイスを実装したりできます。

検出という視点から、管理インターフェイスは次の 2 つに大きく分けられます。

  • ホストが実装し、ランタイムが IHostControl インターフェイスを使用して検出する管理インターフェイス

  • CLR で用意され、ホストが ICLRControl インターフェイスを使用して検出する管理インターフェイス

次の表は、用意されている機能別にインターフェイスをまとめたものです。各グループで最も重要なインターフェイスが最初に記載されています。

グループ

機能

インターフェイス

アセンブリ読み込み管理

アセンブリの読み込み元の場所、バージョン管理の方法、およびアセンブリの読み込み元の形式を、ホストがカスタマイズできるようにします。たとえば、ハード ディスク上のファイルの代わりに、データベースからアセンブリを読み込むようにできます。

CLR は IHostControl インターフェイスを使用して、ホストがこのインターフェイスのグループを実装しているかどうかを検出します。

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

ポリシー管理

さまざまな信頼性要件をサポートするために、プログラム エラーの処理方法をホストが指定できるようにします。

ホストは、ICLRControl インターフェイスを使用してランタイム マネージャにアクセスし、IHostPolicyManager コールバックを実装してランタイムからのエラーを通知します。

ICLRPolicyManager

IHostPolicyManager

ホスト保護管理

指定した型またはメンバの使用を防止することにより、独自のプログラミング モデルをホストが適用できるようにします。たとえば、ホストで、スレッド処理または同期プリミティブの使用を許可しないようにできます。

ホストは、ICLRControl インターフェイスを使用してランタイム マネージャにアクセスします。

ICLRHostProtectionManager

メモリ管理

CLR がメモリの割り当てに使用するオペレーティング システム関数を置き換えることにより、ホストがメモリの割り当てを制御できるようにします。

CLR は IHostControl インターフェイスを使用して、ホストがこのインターフェイスのグループを実装しているかどうかを検出します。

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

ガベージ コレクション管理

ガベージ コレクションの開始および終了の通知を受け取るメソッドをホストが実装できるようにします。コレクションの初期化、統計情報の収集、およびコレクションの一部の特性の指定をホストで行うことができるようにします。

ホストは、ICLRControl インターフェイスを使用してランタイム マネージャにアクセスします。CLR は IHostControl インターフェイスを使用して、ホストがこのインターフェイスのグループを実装しているかどうかを検出します。

IHostGCManager

ICLRGCManager

デバッグ管理

追加のデバッグ情報を提供し、デバッグ タスクをカスタマイズするために、デバッガがアタッチされているかどうかをホストが検出できるようにします。

ホストは、ICLRControl インターフェイスを使用してランタイム マネージャにアクセスします。

ICLRDebugManager

CLR イベント管理

EClrEvent によって列挙されたイベントの通知をホストが登録できるようにします。

ホストは、ICLRControl インターフェイスを使用してランタイム マネージャにアクセスし、IActionOnCLREvent インターフェイスを使用してそのイベント ハンドラを実装します。

ICLROnEventManager

IActionOnCLREvent

タスク管理

スレッドがマネージ コードとアンマネージ コードとの間で遷移したときに、ホストが通知を受けられるようにします。タスクが起動および停止されるときのスレッドの関係の制御、およびタスクのスケジュール設定をホストが行うことができるようにします。

CLR は IHostControl インターフェイスを使用して、ホストがこのインターフェイスのグループを実装しているかどうかを検出します。

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

スレッド プール管理

ランタイムが使用する独自のスレッド プールをホストが実装できるようにします。

CLR は IHostControl インターフェイスを使用して、ホストがこのインターフェイスのグループを実装しているかどうかを検出します。

IHostThreadPoolManager

同期管理

ランタイムが使用する独自の同期プリミティブをホストが実装できるようにします。イベント、クリティカル セクション、およびセマフォをホストが提供できます。

CLR は IHostControl インターフェイスを使用して、ホストがこのインターフェイスのグループを実装しているかどうかを検出します。

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

I/O 完了管理

独自の非同期 I/O をホストが実装できるようにします。

CLR は IHostControl インターフェイスを使用して、ホストがこのインターフェイスのグループを実装しているかどうかを検出します。

IHostIoCompletionManager

zaf1h1h5.alert_note(ja-jp,VS.90).gifメモ :

以前のバージョンのランタイムのホスト インターフェイスについては、「.NET Framework 1.0 および 1.1 のホスト インターフェイス」を参照してください。

アプリケーション ドメイン マネージャ

CLR をホストするプログラムについては、アプリケーション ドメインがアセンブリを互いに分離することによって、信頼性を高めています。アプリケーション ドメインをアンロードすることにより、アセンブリをプロセスからアンロードできます。

複数のアプリケーション ドメインを管理するため、.NET Framework Version 2.0 には、AppDomainManager クラスが基本クラスとして用意されていて、このクラスから独自のアプリケーション ドメイン マネージャを派生させることができます。ホスト アプリケーション用に設計するアプリケーション ドメイン マネージャは、基本的にマネージ コード内のホストの拡張機能です。これは、プロセス内で作成される各アプリケーション ドメイン内に自動的に読み込まれます。

アプリケーション ドメイン マネージャにより、マネージ コードとアンマネージ コードとの間の遷移を削減することで、パフォーマンスを改善できます。新しいアプリケーション ドメインが作成された時点でアプリケーション ドメイン マネージャは通知を受け取ることができるため、開発者はそれらのドメインを構成できます。アンマネージ ホストからマネージ コードを呼び出す方法も用意されています。

参照

概念

プロセスへの共通言語ランタイムの読み込み

参照

AppDomainManager

その他の技術情報

共通言語ランタイムのホスト

アプリケーション ドメイン

.NET Framework 2.0 以降のホスト インターフェイス