Реализация устройства 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, содержат только адреса, допустимые для интерфейса, от которого был получен запрос на метаданные.