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


Обзор интерфейсов WSDAPI

Веб-службы на устройствах API (WSDAPI) используются для разработки клиентских приложений, которые находят и получают доступ к устройствам, а также для разработки узлов устройств и связанных служб, работающих в Windows Vista и Windows Server 2008. API обнаружения функций и инструмент WsdCodeGen являются дополнительными инструментами, которые можно использовать для разработки клиентов, устройств-хостов и служб. Интерфейсы WSDAPI можно использовать непосредственно для предоставления расширенных функций.

Основные интерфейсы WSDAPI

Четыре основных интерфейса WSDAPI : IWSDiscoveryProvider, IWSDiscoveryPublisher, IWSDeviceProxyи IWSDeviceHost. Для получения списка всех интерфейсов WSDAPI см. раздел "Интерфейсы веб-служб на устройствах".

IWSDiscoveryProvider

IWSDiscoveryProvider используется для реализации функций WS-Discovery на клиентах.

iWSDiscoveryProvider отправляет сообщения WS-Discovery Probe и Resolve и получает сообщения Hello, Bye, ProbeMatchesи ResolveMatches. Используйте информацию, полученную через интерфейс IWSDiscoveryProvider при создании интерфейса IWSDDeviceProxy, используемого для описания и управления конкретным устройством DPWS.

Интерфейс IWSDiscoveryProvider не требуется при простом разрешении определенного адреса устройства DPWS перед созданием прокси-сервера устройства. WSDCreateDeviceProxy при необходимости будет автоматически определять адрес устройства.

API обнаружения функций можно использовать для универсального обнаружения устройств и служб, так как API может обнаруживать устройства DPWS, а также устройства с помощью других протоколов. При написании универсального приложения обнаружения рекомендуется использовать обнаружение функций.

IWSDiscoveryPublisher

IWSDiscoveryPublisher используется для реализации функций WS-Discovery в целевых службах, таких как устройства.

IWSDiscoveryPublisher позволяет приложению публиковать свое присутствие с помощью WS-Discovery сообщений Hello и Bye. Этот интерфейс позволяет приложению получать запросы Probe и Resolve, а также создавать и отправлять ответные сообщения ProbeMatches и ResolveMatches.

Интерфейс IWSDiscoveryPublisher не требуется при простой публикации существования объекта IWSDDeviceHost. IWSDDeviceHost управляет своим собственным WS-Discovery присутствием.

IWSDDeviceProxy

IWSDeviceProxy используется для реализации клиентских функций WS-Discovery, WS-MetadataExchange и управления. Эта функция включает необязательный безопасный канал, WS-Eventing и возможности вложений.

Интерфейс IWSDDeviceProxy имеет следующие три использования.

  • При необходимости уточняет адреса логических устройств.
  • Инициирует запросы метаданных на устройства для перечисления типов и адресов служб.
  • Предоставляет источник для объектов IWSDServiceProxy, которые можно использовать для выдачи сообщений управления определенным службам на устройстве.

Объект IWSDDeviceProxy обычно создается и используется полностью внутри кода, созданного WsdCodeGen.

IWSDDeviceHost

IWSDDeviceHost используется для реализации WS-Discovery, WS-MetadataExchange и функций размещения служб на стороне устройства. Размещенные службы могут обрабатывать управляющие сообщения и поддерживать безопасный канал, WS-Eventing и возможности вложений.

Интерфейс IWSDeviceHost использует следующие функции.

  • Размещает объекты службы.
  • Объявляет о присутствии узла устройства в сети с помощью WS-Discovery.
  • Отвечает на запросы WS-MetadataExchange и описывает типы и расположения хостинг-служб.
  • Отправляет сетевые запросы в объекты службы.

Функции управления подписками WS-Discovery, WS-MetadataExchange и WS-Eventing полностью обрабатываются в объекте узла устройства. Прежде чем служба может быть размещена в хосте устройства, необходимо выполнить следующие требования.

  • Узел должен быть создан путем вызова WSDCreateDeviceHost.
  • Метаданные, связанные с службой, должны быть зарегистрированы.
  • Сама служба должна быть зарегистрирована.
  • Устройство-хост должно быть запущено.

ОбъектIWSDeviceHostобычно создается и используется внутри кода, созданного WsdCodeGen.