次の方法で共有


ADSI 拡張機能のアーキテクチャ

ADSI 拡張機能は、いくつかの拡張機能を備えた COM 集計モデルに基づいています。 拡張機能は、すべての COM 規則に従う必要があります。 詳細については、COM 仕様を参照してください。

COM 集計モデルのレビューを次に示します。

com aggregation model

集約 (内部オブジェクトとも呼ばれます) は、アグリゲーターが作成するオブジェクトです。 拡張機能オブジェクトは集計です。

アグリゲーター (外部オブジェクトとも呼ばれます) は、集計を作成するオブジェクトです。 ADSI はアグリゲーターです。

内部オブジェクトは、その IUnknown をアグリゲーターの IUnknown に委任します

ADSI 拡張機能では、COM 集計に次の機能強化が追加され、その要件が満たされます。

  • 各拡張機能ライターが ADSI オブジェクトを拡張できるようにします。 拡張機能ライターは、拡張機能を ADSI に登録でき、他の拡張機能の存在の影響を受けないようにすることができます。 COM 集計モデルでは、アグリゲーターに集計の CLSID が必要です。 ADSI は、それ自体をすべての拡張機能のアグリゲーターとして機能させることで、この要件を緩和します。 したがって、入れ子になったコンポーネントのレイヤーを形成する代わりに、拡張機能は同じレベルになります。
  • 1 つのオブジェクト (1 つの IDispatch) を許可します。 Automation のサポートは、ADSI の最も重要な機能の 1 つです。 AUTOMATION のサポートは、ADSI が IDispatch インターフェイスをサポートしているために実現されます。 拡張機能ライターは、IDispatch インターフェイスをサポートすることをお勧めします。 ただし、特定のオブジェクトには IDispatch インターフェイスが 1 つだけ必要です。 ADSI は、さまざまな拡張機能から多数 の IDispatch インターフェイスを統合して収集し、それらを 1 つの一貫性のある IDispatch として Automation コントローラーに提示します。 集約された各拡張機能は、その IDispatch 呼び出しを ADSI によって提供される IDispatch に再ルーティングする必要があります。

これらのソリューションはすべて、ADSI オブジェクト マネージャーが提供するサービスが、各 ADSI プロバイダーに存在するため可能です。

次の図は、ADSI 拡張モデルのアーキテクチャを示しています。

adsi extension model architecture

ADSI では、次の 2 つのレベルの拡張機能がサポートされています。

  • 早期バインディングのサポート。 これは、拡張機能の最初のレベルです。 拡張機能は登録をサポートし、新しいインターフェイスを実装する必要があります。 拡張機能コンシューマーは、Visual C++ や Visual Basic などの早期バインディングをサポートするツールまたはスクリプト ホストを使用する必要があります。
  • 遅延バインディングのサポート。 これは、拡張機能が初期バインディング要件をすべて満たし、追加のインターフェイス である IADsExtension を実装する場合に発生します。 拡張機能の実装者は、Windows スクリプト ホスト、Active Server ページ、VBScript を使用した HTML など、オートメーション コントローラーとして動作する任意のツールを使用できます。