Определение статуса отправки или получения
Вы можете моделировать поставщика классов как поставщика push-событий или pull-запросов, что определяет, как поставщик ожидает взаимодействовать с WMI. Поставщики выборки получают запрос от WMI и отвечают на него, генерируя данные динамически или извлекая их из локального кэша. Поставщики по запросу также должны реализовать большое количество интерфейсов.
Поставщик по запросу динамически создает определения классов. Как правило, данные, управляемые поставщиком pull-сервиса, часто изменяются, требуя от поставщика либо динамического создания класса, либо извлечения класса из локального кэша всякий раз, когда приложение делает запрос. Поставщик по запросу должен реализовать собственные механизмы получения данных, кэша и уведомлений о событиях. Поскольку большинство поставщиков являются поставщиками по запросу, документация в этом файле предполагает, что вы создаете именно такой тип поставщика, если не указано иное.
В отличие от этого, WMI использует данные в репозитории WMI для обработки всех запросов приложений для поставщиков push-уведомлений. Поставщики push-уведомлений также используют меньше методов интерфейса и поэтому проще реализовать. Поставщик push-уведомлений использует репозиторий WMI в качестве области хранения для сведений об управляемом объекте и обновляет эти сведения только во время инициализации. Например, поставщик класса WDM, включенный в раздел WMI пакета SDK для Microsoft Windows, моделировается как поставщик push-уведомлений.
Используя репозиторий WMI в качестве области хранения, поставщик push-уведомлений получает следующие преимущества по сравнению с поставщиком по запросу:
- Поставщику не нужно реализовать локальный кэш для хранения данных.
- Поставщику не нужно поддерживать получение данных; Вместо этого поставщик может полагаться на WMI для предоставления поддержки извлечения.
- Когда приложение запрашивает данные, предоставленные поставщиком, WMI выполняет этот запрос.
- Поставщик также может полагаться на WMI для поддержки уведомлений о событиях.
Однако, поскольку поставщик push-уведомлений обновляется только во время инициализации, любые изменения в классе могут не отражаться в репозитории WMI в течение некоторого времени. Таким образом, модель поставщика push-уведомлений лучше всего работает с классами, которые изменяют мало или иначе являются полностью статическими.