IAD と IDirectoryObject インターフェイス
ADSI クライアントは、2 つの COM インターフェイス IAD または IDirectoryObject のいずれかを使用して、ディレクトリ サービス オブジェクトを管理および操作します。 IAD は 、 Microsoft Visual Basic、Java、さまざまなスクリプト言語で記述されたクライアントなど、遅延バウンドされたクライアントで使用することを目的とした IDispatch インターフェイスです。 IDirectoryObject は、C や C++ で記述されたクライアントなど、早期バウンドされたクライアントからオブジェクトに直接アクセスできる vtable インターフェイスです。
各 ADSI オブジェクトは、IAD と IDirectoryObject の両方を実装する必要があります。 vtable に直接アクセスできる C や C++ などの言語で記述された ADSI クライアントは、どちらのインターフェイスも使用できますが、両方を同じアプリケーションで使用することはできません。 Visual Basic または Java で記述された ADSI クライアントは、IAD の使用 に限定されます の使用に限定されます。
IAD インターフェイスを使用すると、遅延バウンドクライアントは ADSI オブジェクト モデルの固有のハウスキーピング機能が利用できるようになります。 これらの機能の中にはプロパティ キャッシュがあり、クライアントは呼び出しごとにネットワークを経由せずにプロパティの読み取りと書き込みを行うことができます。 さらに、クライアント アプリケーションは、強力な UI および ActiveX 制御ライブラリと、よりシンプルなスタイルのプログラミングを使用できるようにします。 その代わり、遅延バウンド クライアントは VARIANT データ型を使用する必要があります。これは、ADSI によって提供される豊富なネイティブ データ型の使用ができなくなります。
IDirectoryObject インターフェイスを使用すると、事前バウンド クライアントは、プロパティ キャッシュを使用することでパフォーマンス上のわずかな利点が犠牲になる代償として、ネイティブディレクトリサービスのデータ型を最大限に活用できます。 その代わり、IDirectoryObject インターフェイスは、個々 の get および put 呼び出しではなく、単一の要求を介してオブジェクト プロパティに直接有線アクセスを提供します。