Поделиться через


Определение состояния отправки или вытягивания

Поставщик класса можно моделировать как поставщик push-уведомлений или поставщик по запросу, который указывает, как поставщик ожидает взаимодействовать с инструментарием WMI. Поставщики по запросу получают запрос от WMI и удовлетворяют запрос, создавая данные динамически или извлекая их из локального кэша. Поставщики по запросу также должны реализовывать большое количество интерфейсов.

Поставщик по запросу создает определения классов динамически. Как правило, данные, управляемые поставщиком по запросу, часто изменяются, поэтому поставщику требуется динамически создавать класс или извлекать класс из локального кэша каждый раз, когда приложение отправляет запрос. Поставщик по запросу должен реализовать собственные механизмы получения данных, кэширования и уведомления о событиях. Так как большинство поставщиков являются поставщиками по запросу, в документации в этом файле предполагается, что вы создаете поставщик по запросу, если явно не указано иное.

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

Используя репозиторий WMI в качестве области хранения, поставщик push-уведомлений получает следующие преимущества по сравнению с поставщиком по запросу:

  • Поставщику не нужно реализовывать локальный кэш для хранения данных.
  • Поставщику не требуется поддержка извлечения данных; Вместо этого поставщик может использовать WMI для обеспечения поддержки извлечения.
  • Когда приложение запрашивает данные, предоставленные поставщиком, WMI выполняет этот запрос.
  • Поставщик также может использовать WMI для поддержки уведомлений о событиях.

Однако так как поставщик принудительной отправки обновляется только во время инициализации, любые изменения в классе могут некоторое время не отражаться в репозитории WMI. Поэтому модель поставщика push-уведомлений лучше всего работает с классами, которые мало изменяются или являются полностью статическими.