Соответствие спецификации DPWS
В этом разделе описывается, как WSDAPI реализует выборные функции в спецификации Профиля устройств для веб-служб (DPWS). В нем также описывается, какие функции DPWS были опущены в реализации WSDAPI.
Спецификация DPWS предоставляет согласованный способ обмена сообщениями с устройствами. В ней также добавлены конкретные ограничения и рекомендации, упрощающие процесс поддержки веб-служб на встраиваемом оборудовании.
Спецификация DPWS описывает выборную функциональность с использованием терминов MAY или SHOULD в данной рекомендации или ограничении реализации. Пропущенные функциональные возможности могут быть описаны как REQUIRED в спецификации DPWS, которая не была реализована WSDAPI, или это может быть функциональность, реализованная WSDAPI в методе, другом в том, который указан в спецификации DPWS.
Этот раздел следует макету раздела DPWS по разделам. В каждом разделе описывается, как конкретные ограничения, требования и выборные функции обрабатываются реализацией WSDAPI. Этот раздел лучше всего читать в сочетании со спецификацией DPWS.
DPWS 3.0 Messaging
Форматы URI DPWS 3.1
Ограничения R0025 и R0027 ограничивают URI MAX_URI_SIZE октетами. WSDAPI применяет оба этих ограничения, как указано.
Обмен сообщениями UDP в DPWS 3.2
Рекомендация R0029 предполагает, что пакеты UDP, превышающие максимальную единицу передачи (MTU) для UDP, не следует отправлять. WSDAPI не реализует эту рекомендацию и позволит реализациям отправлять и получать сообщения обнаружения, размер которых превышает MTU.
СООБЩЕНИЯ HTTP DPWS 3.3
Для R0001 требуется, чтобы службы поддерживали фрагментированную передачу. WSDAPI принимает фрагментированные данные в сообщениях запроса и отправляет фрагментированные данные в сообщениях запроса.
R0012 и R0013 описывают обязательные части привязки HTTP SOAP. Для R0012 WSDAPI реализует привязку HTTP SOAP, но не начнет чтение ответа HTTP до тех пор, пока WSDAPI не завершит отправку HTTP-запроса. WSDAPI реализует требуемый шаблон обмена сообщениями в R0013, реализует необязательный ответный узел SOAP в R0014 и не реализует необязательную функцию веб-метода в R0015. WSDAPI также поддерживает требования в R0030 и R0017.
КОНВЕРТ SOAP DPWS 3.4
WSDAPI поддерживает R0034 и по умолчанию применяет R0003 и R0026. В частности, в соответствии с R0003 и R0026, если WSDAPI получает конверт SOAP больше, чем MAX_ENVELOPE_SIZE по протоколу HTTP, он отклоняется и соединение закрывается.
WS-Addressing DPWS 3.5
R0004 отражает рекомендуемое использование API устройства в WSDAPI и поддерживается клиентским API в WSDAPI. Так как это рекомендация, WSDAPI позволит клиентам и устройствам использовать URI, отличные urn:uuid
от URI, для конечных точек устройств, чтобы обеспечить максимальную совместимость. Так как API устройства в WSDAPI не сохраняет состояние между инициализациями, разработчики приложений, использующие API устройства в WSDAPI, должны обеспечить правильную поддержку R0005 и R0006. Клиентский API в WSDAPI предполагает, что удостоверения устройств являются уникальными и сохраняются, а для создания функциональных возможностей клиентского API в WSDAPI (например, PnP-X) это потребуется для правильного распознавания устройства при перезагрузке устройства.
R0007 рекомендует не использовать свойства ссылок в ссылках на конечные точки. WSDAPI по-прежнему будет распознавать и принимать конечные точки со свойствами ссылки, и разработчики могут использовать их, но по умолчанию WSDAPI не будет заполнять их в создаваемых конечных точках. Аналогичным образом при использовании R0042 при создании конечных точек службы WSDAPI будет использовать транспортный адрес HTTP или HTTPS, но не потребуется, чтобы устройства использовали транспортные адреса HTTP или HTTPS в конечных точках службы. Поведение клиента при попытке взаимодействия со службой, которая не использует HTTP или HTTPS, не определено.
При сбоях R0031 ограничивает конечную точку ответа и описывает ошибку для отправки, если ошибка не является анонимной. WSDAPI заставляет конечную точку ответа использовать правильное значение при отправке сообщений и правильно завершит ошибку, если WSDAPI получит сообщение запроса с неправильной конечной точкой ответа. R0041 предоставляет реализации возможность удалить ошибку, если конечная точка ответа недопустима. Вместо того чтобы удалить ошибку, WSDAPI отправит ошибку обратно в канале запроса, адресованном анонимной конечной точке, в качестве "наилучшего усилия" для взаимодействия с клиентом.
Наконец, существуют два ограничения на заголовки SOAP, R0019 и R0040, оба из которых WSDAPI соответствует и применяется к полученным сообщениям.
Вложения DPWS 3.6
WSDAPI поддерживает вложения и соответствует требованиям R0022. WSDAPI также соответствует R0037. При отправке вложений WSDAPI всегда устанавливает для кодировки передачи содержимого значение binary для всех частей MIME. Однако WSDAPI не применяет R0036. Поведение WSDAPI при получении части MIME с кодировкой передачи содержимого, не равной "двоичному", не определено.
DPWS также определяет предложения упорядочения частей MIME. Для R0038 WSDAPI применяет порядок частей и отклоняет сообщение MIME, если конверт SOAP не является первой частью MIME. Для R0039 WSDAPI всегда отправляет конверт SOAP в качестве первой части MIME.
Обнаружение DPWS 4.0
R1013 и R1001 отличают обнаружение устройств и обнаружение служб. WSDAPI соответствует R1013. Реализация размещения соответствует R1001, но WSDAPI не применяет эту рекомендацию к клиенту.
DPWS также предоставляет рекомендации по типам и область правилам сопоставления. WSDAPI поддерживает все правила сопоставления область, определенные в WS-Discovery, кроме LDAP. WSDAPI также предоставляет расширяемую модель для определения пользовательских область правил сопоставления, что соответствует R1019. API размещения также всегда будет предоставлять wsdp:Device
тип обнаружения для каждого R1020, но клиентский API не требует его наличия. Другие приложения, созданные на основе WSDAPI, такие как PnP-X, имеют жесткие требования к wsdp:Device
типу, который должен присутствовать при обнаружении.
Для упрощения обнаружения и привязки WSDAPI поддерживает R1009 и R1016. В R1018 WSDAPI будет игнорировать многоадресную рассылку UDP, не отправленную на анонимный адрес. R1015, R1021 и R1022 определяют привязку HTTP для сообщения пробы, которую WSDAPI поддерживает, как описано.
Описание DPWS 5.0
WSDAPI принудительно применяет R2044 к клиенту. На стороне размещения WSDAPI будет предоставлять wsx:Metadata
только элемент в тексте конверта SOAP. R2045 позволяет устройствам поддерживать подмножество функций WS-Transfer . API размещения всегда будет генерировать ошибку wsa:ActionNotSupported
.
Характеристики DPWS 5.1
DPWS описывает основные характеристики устройства. В дополнение к ограничениям, описанным в этом разделе, ограничения длины определяются для конкретных строк и URI. WSDAPI применяет ограничения длины в этом разделе DPWS 5.1 либо перед отправкой сообщения, либо после анализа его содержимого.
DPWS также описывает необходимые разделы метаданных и циклические циклы версии метаданных. Реализация клиента обеспечивает наличие метаданных ThisModel и ThisDevice. Реализация размещения также правильно управляет версией метаданных и всегда предоставляет эти разделы в соответствии с R2038, R2012, R2001, R2039, R2014 и R2002.
Размещение DPWS 5.2
В этом разделе описывается иерархия служб и метаданных связей. WSDAPI не применяет уникальность ServiceId, как описано в этом разделе, на стороне клиента или устройства.
WSDAPI соответствует R2040, и реализация размещения может отправить ответ метаданных без раздела связи, если нет размещенных служб. Клиентская реализация правильно принимает ответ метаданных.
R2029 позволяет использовать несколько разделов связей в ответе метаданных, которые WSDAPI будет правильно принимать. R2030 и R2042 описывают управление версией метаданных, которая правильно реализована в API размещения.
DPWS 5.3 WSDL
Если служба предоставляет данные языка описания веб-служб (WSDL), клиентские реализации могут получить определение службы и управлять службой на лету. Используется клиентами с поздней привязкой. Реализация клиента WSDAPI будет принимать WSDL, предоставленный службой, но клиент не проверяет его и клиент не предоставляет модель программирования с поздним привязкой. Реализация размещения может использоваться для предоставления WSDL, но узел не обязан делать это, так как метаданные уровня обслуживания не управляются самим узлом.
WS-Policy DPWS 5.4
DPWS описывает утверждения политики, которые будут использоваться для устройств. Поскольку WSDAPI не предоставляет и не интерпретирует WSDL, он не может распознавать и применять политики, внедренные в данные WSDL.
События DPWS 6.0
Подписка DPWS 6.1
ДЛЯ DPWS требуется поддержка принудительной доставки. WSDAPI реализует принудительная доставка на стороне службы, что соответствует требованиям R3009 и R3010 и принимает режим принудительной доставки только на стороне клиента. R3017 и R3018 требуют определенных ошибок от службы, если она не распознает NotifyTo
адреса или EndTo
. WSDAPI не проверяет эти адреса заранее и не создает эти ошибки. Однако реализация клиента правильно распознает эти ошибки. Аналогичным образом R3019 является необязательным, и WSDAPI не реализует эту рекомендацию, но реализация клиента правильно распознает SubscriptionEnd
сообщение и уведомит приложение о сбое доставки.
Фильтрация DPWS 6.1.1
WSDAPI соответствует R3008 и реализует Action
фильтр. В соответствии с R3011 и R3012 WSDAPI не будет создавать ошибки в указанных условиях. WSDAPI также реализует описанную ошибку R3020, если не распознает действия, по которым ему предлагается отфильтровать.
Длительность и продление подписки DPWS 6.2
WSDAPI соответствует требованиям R3005, R3006 и R3016. WSDAPI всегда будет использовать xs:duration
, но будет принимать xs:dateTime
, если это указано, и, следовательно, не выдает необязательный сбой в R3013. WSDAPI поддерживает GetStatus
и не будет выдавать ошибку для wsa:ActionNotSupported
R3015. WSDAPI принимает ошибку, wsa:ActionNotSupported
если служба отвечает на GetStatus
запрос.
Безопасность DPWS 7.0
DPWS описывает рекомендуемую модель безопасности для устройств. WSDAPI не реализует эти рекомендации, как описано, и не применяет ограничения, описанные в этом разделе.
Приложение I DPWS
DPWS изменяет глобальные константы из других спецификаций в соответствии с устройствами. WSDAPI использует константы из этого раздела и переопределяет константы по умолчанию в реализации WS-Discovery этими константами. Приложения, использующие WSDAPI для WS-Discovery, будут привязаны к константам, определенным в DPWS, а не к константам, определенным в WS-Discovery.