Push- of pull-status bepalen
U kunt een klasseprovider modelleren als push- of pull-provider, waarmee wordt aangegeven hoe een provider verwacht te communiceren met WMI. Pull-providers ontvangen een aanvraag van WMI en voldoen aan de aanvraag door de gegevens dynamisch te genereren of op te halen uit een lokale cache. Pull-providers moeten ook een groot aantal interfaces implementeren.
Een pull-provider genereert dynamisch klassedefinities. Normaal gesproken worden de gegevens die worden beheerd door een pull-provider regelmatig gewijzigd, waardoor de provider de klasse dynamisch moet genereren of de klasse moet ophalen uit een lokale cache wanneer een toepassing een aanvraag uitgeeft. Een pull-provider moet zijn eigen mechanismen voor gegevens ophalen, cache en gebeurtenismeldingen implementeren. Omdat de meeste providers pull-providers zijn, wordt in de documentatie in dit bestand ervan uitgegaan dat u een pull-provider bouwt, tenzij expliciet anders wordt vermeld.
WMI gebruikt daarentegen gegevens in de WMI-opslagplaats om alle toepassingsaanvragen voor pushproviders te verwerken. Pushproviders gebruiken ook minder interfacemethoden en zijn dus eenvoudiger te implementeren. Een pushprovider gebruikt de WMI-opslagplaats als een opslaggebied voor informatie over het beheerde object en werkt die informatie alleen bij tijdens de initialisatie. De WDM-klasseprovider die is opgenomen in de WMI-sectie van de Microsoft Windows Software Development Kit (SDK) is bijvoorbeeld gemodelleerd als pushprovider.
Door de WMI-opslagplaats als een opslaggebied te gebruiken, profiteert een pushprovider van de volgende voordelen ten opzichte van een pull-provider:
- De provider hoeft geen lokale cache te implementeren om gegevens op te slaan.
- De provider hoeft het ophalen van gegevens niet te ondersteunen; In plaats daarvan kan de provider vertrouwen op WMI om ondersteuning voor het ophalen te bieden.
- Wanneer een toepassing gegevens aanvraagt die door de provider worden verstrekt, voldoet WMI aan die aanvraag.
- De provider kan ook vertrouwen op WMI ter ondersteuning van gebeurtenismeldingen.
Omdat een push provider echter alleen wordt bijgewerkt tijdens het initiƫren, zijn wijzigingen in een klasse mogelijk voor enige tijd niet zichtbaar in de WMI repository. Daarom werkt het model van de pushprovider het beste met klassen die weinig veranderen of anderszins volledig statisch zijn.