Determinazione dello stato push o pull

È possibile modellare un provider di classi come provider push o pull, che specifica come un provider prevede di interagire con WMI. I provider di pull ricevono una richiesta da WMI e soddisfano la richiesta generando i dati in modo dinamico o recuperandoli da una cache locale. I provider di pull devono anche implementare un numero elevato di interfacce.

Un provider di pull genera definizioni di classe in modo dinamico. In genere, i dati gestiti da un provider di pull cambiano di frequente, richiedendo al provider di generare la classe in modo dinamico o recuperare la classe da una cache locale ogni volta che un'applicazione invia una richiesta. Un provider di pull deve implementare i propri meccanismi di recupero dei dati, cache e notifica degli eventi. Poiché la maggior parte dei provider è provider di pull, la documentazione in questo file presuppone che si stia creando un provider di pull, se non diversamente specificato in modo esplicito.

WMI usa invece i dati nel repository WMI per gestire tutte le richieste dell'applicazione per i provider di push. I provider di push usano anche un minor numero di metodi di interfaccia e quindi sono più facili da implementare. Un provider di push usa il repository WMI come area di archiviazione per informazioni sull'oggetto gestito e aggiorna tali informazioni solo durante l'inizializzazione. Ad esempio, il provider di classi WDM incluso nella sezione WMI di Microsoft Windows Software Development Kit (SDK) viene modellato come provider di push.

Usando il repository WMI come area di archiviazione, un provider di push ottiene i vantaggi seguenti rispetto a un provider di pull:

  • Il provider non deve implementare una cache locale per archiviare i dati.
  • Il provider non deve supportare il recupero dei dati; Al contrario, il provider può basarsi su WMI per fornire supporto per il recupero.
  • Quando un'applicazione richiede dati forniti dal provider, WMI soddisfa tale richiesta.
  • Il provider può anche basarsi su WMI per supportare la notifica degli eventi.

Tuttavia, poiché un provider di push viene aggiornato solo durante l'inizializzazione, le modifiche apportate a una classe potrebbero non essere riflesse nel repository WMI per un certo periodo di tempo. Pertanto, il modello del provider di push funziona meglio con le classi che cambiano poco o altro sono completamente statiche.