プッシュまたはプルの状態の決定

クラス プロバイダーをプッシュまたはプル プロバイダーとしてモデル化できます。これは、プロバイダーが WMI とやり取りする方法を指定します。 プル プロバイダーは WMI から要求を受け取り、データを動的に生成するか、ローカル キャッシュから取得することによって要求を満たします。 プル プロバイダーでは、多数のインターフェイスを実装する必要もあります。

プル プロバイダーは、クラス定義を動的に生成します。 通常、プル プロバイダーによって管理されるデータは頻繁に変更され、アプリケーションが要求を発行するたびに、プロバイダーはクラスを動的に生成するか、ローカル キャッシュからクラスを取得する必要があります。 プル プロバイダーは、独自のデータ取得、キャッシュ、イベント通知のメカニズムを実装する必要があります。 ほとんどのプロバイダーはプル プロバイダーであるため、このファイルのドキュメントでは、特に明記されていない限り、プル プロバイダーを構築していることを前提としています。

これに対し、WMI は WMI リポジトリ内のデータを使用して、プッシュ プロバイダーに対するすべてのアプリケーション要求を処理します。 プッシュ プロバイダーは、使用するインターフェイス メソッドも少ないため、実装がより簡単です。 プッシュ プロバイダーは、WMI リポジトリをマネージド オブジェクトに関する情報の記憶域として使用し、初期化時にのみその情報を更新します。 たとえば、Microsoft Windows ソフトウェア開発キット (SDK) の WMI セクションに含まれる WDM クラス プロバイダーは、プッシュ プロバイダーとしてモデル化されます。

WMI リポジトリを記憶域として使用すると、プッシュ プロバイダーはプル プロバイダーに比べて次の利点を得られます。

  • プロバイダーは、データを格納するためにローカル キャッシュを実装する必要がありません。
  • プロバイダーは、データ取得をサポートする必要がありません。代わりに、プロバイダーは WMI を利用して取得サポートを提供できます。
  • アプリケーションがプロバイダーから提供されたデータを要求すると、WMI がその要求を満たします。
  • プロバイダーは、WMI を利用してイベント通知をサポートすることもできます。

ただし、プッシュ プロバイダーは初期化中にのみ更新されるので、しばらくの間、クラスに対する変更が WMI リポジトリに反映されない場合があります。 したがって、プッシュ プロバイダー モデルは、ほとんど変更がないか完全に静的なクラスで最適に動作します。