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


Реализация устройства WSD с несколькими устройствами

WS-Discovery и профиль устройств для веб-служб (DPWS) не описывают реализацию многопользовательских устройств. В этом разделе описывается поддержка нескольких устройств в WSDAPI и приводятся рекомендации по реализации для разработчиков клиентов и устройств. В этом разделе предполагается, что сообщения обнаружения отправляются по протоколам IPv4 и IPv6 (если они доступны) с одинаковыми идентификаторами сообщений и сведениями о последовательности приложений.

Обнаружение в многопользовательской среде

Как упоминалось в разделе Hello и XAddrsраздела Дополнительные функции WS-Discovery, WSDAPI никогда не предоставляет XAddrs в сообщении Hello. Это означает, что одно и то же сообщение Hello можно отправить на всех сетевых интерфейсах с одинаковыми идентификаторами сообщений и сведениями о последовательности приложений. Это упрощает обнаружение конфликтов клиентов при удалении нескольких сообщений Hello с одного устройства, когда клиент и устройство совместно используют несколько подсетей.

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

При отправке сообщения ResolveMatch устройство должно предоставлять XAddrs , связанные с сетевым интерфейсом, по которому оно передает одноадресное сообщение. Это помогает избежать нескольких попыток подключения клиента и сложной логики повторных попыток.

Обмен метаданными в многопользовательской среде

Реализация обмена метаданными в многопользовательской среде сложнее, чем реализация обнаружения из-за управления версиями метаданных. Если клиент запрашивает метаданные через несколько интерфейсов, клиент может получать несколько сообщений GetResponse через разные интерфейсы. Эти сообщения GetResponse могут содержать разные разделы метаданных связи с одной и той же версией метаданных. Это уменьшает значение номера версии метаданных.

Существует альтернативный подход, при котором в ответ отправляется одно сообщение GetResponse со всеми адресами службы. Недостатком этого метода является то, что может быть раскрыта частная информация, например топология косвенно доступных сетей.

В Windows Vista метаданные, предоставляемые WSDAPI, содержат только адреса, допустимые для интерфейса, от которого был получен запрос на метаданные.