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


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

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

Обнаружение в многодомной среде

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

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

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

Обмен метаданными в многодомной среде

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

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

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