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


Дополнительные функции WS-Discovery

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

WSDAPI также реализует выбранные части WS-Discovery версии 1.1 CD1 для взаимодействия с прокси-сервером обнаружения по протоколу HTTP.

Цель этого раздела — описать функциональные возможности обнаружения, реализованные WSDAPI, но не описаны в спецификациях DPWS или WS-Discovery.

Адреса IPv6 и формат URI soap.udp

SOAP-over-UDP и WS-Discovery явно не описывают, как литерал IPv6-адрес представлен в формате URI soap.udp. RFC 2396под названием "Универсальные идентификаторы ресурсов (URI): универсальный синтаксис", указывает, что литеральные IPv6-адреса не поддерживаются форматом URI soap.udp.

Для простоты WSDAPI распознает IPv6-адреса, заключенные в квадратные скобки в схему soap.udp. Например, адрес soap.udp://[2001:abcd:0001:0002:0003:0004:0005:0032]:3702 распознается WSDAPI. Это аналогично обработке IPv6-адресов в ПРОТОКОЛе HTTP.

Hello и XAddrs

Объект размещения WSDAPI DPWS никогда не отправляет сообщение WS-Discovery Hello с XAddrs в тексте сообщения. Клиент всегда отправляет сообщение разрешить после получения сообщения Hello, если клиенту нужно получить XAddrs.

Существует два преимущества этого подхода. Во-первых, устройство, созданное на основе WSDAPI, никогда не будет предоставлять XAddrs, которые раскрывают IP-адреса частных сетей. Во-вторых, устройство, созданное на основе WSDAPI, предоставляет только XAddrs, доступные клиенту, что означает, что IPv6-адреса никогда не отправляются клиенту IPv4.

При получении сообщения пробы или разрешения только один XAddr отправляется в ответ. Отправленный XAddr соответствует локальному адресу, по которому был получен запрос. Если запрос был получен через подсети через IPv6, WSDAPI предоставит глобальный IPv6-адрес в ответе.

Предпочтительный адрес

Устройство может предоставить несколько XAddrs в Hello, ProbeMatchили message ResolveMatch. Служба также может быть доступна в нескольких конечных точках с различными адресами транспорта. В таких случаях WSDAPI попытается взаимодействовать с устройством на первом найденном им адресе. Адрес можно использовать, если он доступен из доступного протокола, например IPv4 на компьютере, где установлен IPv4 или IPv6 на компьютере, где установлен IPv6. Кроме того, если адрес был получен из устройства или службы, которая не находится в локальной подсети, он доступен только в том случае, если это локальный сайт IPv4, IPv6 или локальный канал IPv6.

WSDL в обмене метаданными

Устройства и службы, созданные на основе WSDAPI, не предоставляют WSDL в обмен метаданными, если приложение не расширяет эти сведения. По умолчанию подготовка WSDL не является частью модели программирования.

APP_MAX_DELAY

DPWS определяет APP_MAX_DELAY, случайный интервал для задержки между получением пробы и отправкой ProbeMatch, как 5000 миллисекунд. Брандмауэр Windows требует, чтобы модель ответа многоадресной рассылки или одноадресной рассылки для UDP работала только в 4-м окне брандмауэра. В результате WSDAPI будет передавать ответы в 2500 мс или меньше, а не в 5000 мс окна, описанного APP_MAX_DELAY.

Резервирование портов IANA

WSDAPI использует TCP-порт 5357 для HTTP-трафика и TCP-порта 5358 для трафика HTTPS по умолчанию. Эти порты зарезервированы для более низких привилегий через резервирование URL-адресов в HTTP.sys, а также зарезервированы с помощью IANA.

Общий доступ к портам UDP

WSDAPI использует общий доступ к портам. Сообщения юниадресной рассылки, отправленные через порт 3702, могут не обрабатываться всеми приложениями на основе WSDAPI. Если приложение привязывается исключительно к порту 3702, это может препятствовать правильному использованию приложений на основе WSDAPI.

WS-Discovery прокси-сервер CD1 версии 1.1

WSDAPI будет искать и взаимодействовать с прокси-сервером обнаружения, реализующим протокол управляемого режима WS-Discovery версии 1.1 CD1. WS-Discovery версии 1.1 CD1 является первой редакцией WS-Discovery, чтобы включить явное описание протокола HTTP для связи между прокси-сервером и клиентом или устройством.

Чтобы ограничить количество параллельных версий, используемых в многоадресных запросах, WSDAPI отправляет запрос WS-Discovery пробы в пространстве имен 2005/04, но ищет тип WS-Discovery версии 1.1 CD1 DiscoveryProxy. Если прокси-сервер отвечает, WSDAPI отправит запрос пробы HTTP или разрешения на указанную конечную точку прокси-сервера, как определено в WS-Discovery версии 1.1 CD1.