ADSI 属性キャッシュ

ADSI オブジェクト モデルは、各 ADSI オブジェクトのクライアント サイド 属性キャッシュを提供します。 属性キャッシュは、ダウンロードされたほとんどのオブジェクト属性の名前と値を含むメモリ内のテーブルに相当します。 操作属性など、一部の属性はキャッシュされません。 ADSI では、プロパティ キャッシュを使用して属性操作のパフォーマンスを向上させ、属性の読み取りや書き込み操作のトランザクション機能を追加します。 この機能は、Microsoft Visual Basic 開発システムなどの属性を設定するためのネイティブ バッチ処理メカニズムのない言語で記述されたクライアントにとって重要です。 ADSI プロパティ キャッシュがないと、このようなクライアントは、属性が読み取りまたは書き込まれるたびにサーバーにアクセスしなければなりません。

オブジェクトが作成されるとき、または最初にバウンドされると、オブジェクトのプロパティ キャッシュは空になります。 IADs::GetInfo メソッドが呼び出されると、ADSI は、基になるディレクトリ サービスからローカル キャッシュにオブジェクトの要求された属性を読み込みます。 特定の属性値が読み取られ、キャッシュが空の場合、ADSI は IADs::GetInfo メソッドを暗黙的に呼び出します。 キャッシュがいっぱいになると、すべての属性の読み取り操作がキャッシュの内容に対してのみ機能します。

属性値が書き込まれると、IADs::SetInfoIADs::SetInfo メソッドが呼び出されるまで、新しい値がローカル キャッシュに格納されます。 IADs::SetInfo メソッドが呼び出されると、キャッシュ内の属性は基になるディレクトリ サービスにコミットされます。 IADs::SetInfo メソッドが呼び出されると、IADs::GetInfo メソッドの別の呼び出しで明示的に更新されるまで、キャッシュ内に値が残ります。

重要

IADs::GetInfo メソッドは、キャッシュされた値が変更された場合でも、基になるディレクトリ サービスのキャッシュ内の属性値を常に上書きするため、慎重に使用する必要があります。 つまり、キャッシュ内で変更されたが、基になるディレクトリ サービスにコミットされていない属性値は、IADs::SetInfo メソッドの呼び出しによって上書きされます。

 

次の図は、キャッシュの操作に使用されるさまざまなメソッドを示しています。

adsi attribute cache