Cumplimiento de la especificación de DPWS
En este tema se describe cómo WSDAPI implementa la funcionalidad electiva en la especificación Device Profile for Web Services (DPWS). También describe qué funcionalidad de DPWS se omite de la implementación de WSDAPI.
La especificación DPWS proporciona una manera coherente de enviar mensajes con dispositivos. También agrega restricciones y recomendaciones específicas que simplifican el proceso de compatibilidad de servicios web en hardware insertado.
La especificación DPWS describe la funcionalidad electiva mediante los términos MAY o SHOULD en una recomendación o restricción de implementación determinada. La funcionalidad omitida puede ser funcionalidad descrita como REQUERIDA en la especificación DPWS que WSDAPI no implementó, o puede ser una funcionalidad que WSDAPI implementó en un método otro en el especificado en la especificación DPWS.
En este tema se sigue el diseño de la sección DPWS por sección. En cada sección se describe cómo la implementación de WSDAPI controla las restricciones, los requisitos y la funcionalidad electiva específicas. Este tema se lee mejor junto con la especificación DPWS.
Mensajería de DPWS 3.0
Formatos de URI de DPWS 3.1
Las restricciones R0025 y R0027 restringen los URI a MAX_URI_SIZE octetos. WSDAPI aplica ambas restricciones como se especifica.
Mensajería UDP de DPWS 3.2
La recomendación R0029 sugiere que no se deben enviar paquetes UDP mayores que la unidad de transferencia máxima (MTU) para UDP. WSDAPI no implementa esta recomendación y permitirá que las implementaciones envíen y reciban mensajes de detección mayores que el MTU.
Mensajería HTTP de DPWS 3.3
R0001 requiere que los servicios admitan la transferencia fragmentada. WSDAPI acepta datos fragmentados en mensajes de solicitud y enviará datos fragmentados en mensajes de solicitud.
R0012 y R0013 describen las partes necesarias del enlace HTTP SOAP. Para R0012, WSDAPI implementa el enlace HTTP SOAP, pero no comenzará a leer la respuesta HTTP hasta que WSDAPI haya terminado de enviar la solicitud HTTP. WSDAPI implementa el patrón de intercambio de mensajes necesario en R0013, implementa el nodo SOAP opcional que responde en R0014 y no implementa la característica de método web opcional en R0015. WSDAPI también admite los requisitos en R0030 y R0017.
Sobre SOAP de DPWS 3.4
WSDAPI admite R0034 y aplica R0003 y R0026 de forma predeterminada. Más concretamente, de acuerdo con R0003 y R0026, si WSDAPI recibe un sobre SOAP mayor que MAX_ENVELOPE_SIZE a través de HTTP, se rechaza y se cierra la conexión.
DPWS 3.5 WS-Addressing
R0004 refleja el uso recomendado de la API de dispositivo en WSDAPI y es compatible con la API cliente en WSDAPI. Dado que se trata de una recomendación, WSDAPI permitirá a los clientes y dispositivos usar URI distintos urn:uuid
de los URI para sus puntos de conexión de dispositivo para garantizar la máxima compatibilidad. Dado que la API de dispositivo en WSDAPI no conserva el estado entre inicializaciones, es necesario que los desarrolladores de aplicaciones usen la API de dispositivo en WSDAPI para asegurarse de que R0005 y R0006 son compatibles correctamente. La API de cliente en WSDAPI supone que las identidades de dispositivo son únicas y persistentes, y la funcionalidad que se basa en la API de cliente en WSDAPI (como PnP-X) requerirá esto para reconocer correctamente el dispositivo en los reinicios del dispositivo.
R0007 recomienda el uso de propiedades de referencia en las referencias de punto de conexión. WSDAPI seguirá reconocendo y aceptando puntos de conexión con propiedades de referencia, y los desarrolladores pueden optar por usarlos, pero de forma predeterminada WSDAPI no los rellenará en los puntos de conexión que crea. Del mismo modo, con R0042, cuando WSDAPI crea puntos de conexión de servicio, usará una dirección de transporte HTTP o HTTPS, pero no requerirá que los dispositivos usen direcciones de transporte HTTP o HTTPS en sus puntos de conexión de servicio. El comportamiento del cliente al intentar comunicarse con un servicio que no usa HTTP o HTTPS no está definido.
En los errores, R0031 restringe el punto de conexión de respuesta y describe el error para enviar si el error no es anónimo. WSDAPI obliga al punto de conexión de respuesta a usar el valor correcto al enviar mensajes y se producirá un error correctamente si WSDAPI recibe un mensaje de solicitud con el punto de conexión de respuesta incorrecto. R0041 proporciona a las implementaciones la opción de quitar un error si el punto de conexión de respuesta no es válido. En lugar de quitar el error, WSDAPI devolverá el error en el canal de solicitud, dirigido al punto de conexión anónimo, como un "mejor esfuerzo" para comunicarse con el cliente.
Por último, hay dos restricciones en los encabezados SOAP, R0019 y R0040, que WSDAPI cumple y aplica en los mensajes recibidos.
Datos adjuntos de DPWS 3.6
WSDAPI admite datos adjuntos y cumple con R0022. WSDAPI también cumple con R0037. Al enviar datos adjuntos, WSDAPI siempre establecerá la codificación de transferencia de contenido en "binary" para todas las partes MIME. Sin embargo, WSDAPI no aplica R0036. El comportamiento de WSDAPI al recibir un elemento MIME con una codificación de transferencia de contenido no establecida en "binary" no está definida.
DPWS también define cláusulas de ordenación de elementos MIME. Para R0038, WSDAPI aplicará el orden de partes y rechazará un mensaje MIME si el sobre SOAP no es la primera parte MIME. Para R0039, WSDAPI siempre enviará el sobre SOAP como primera parte MIME.
Detección de DPWS 4.0
R1013 y R1001 diferencian la detección de dispositivos y la detección de servicios. WSDAPI cumple con R1013. La implementación de hospedaje cumple con R1001, pero WSDAPI no aplica esta recomendación en el cliente.
DPWS también proporciona instrucciones sobre tipos y reglas de coincidencia de ámbito. WSDAPI admite todas las reglas de coincidencia de ámbito definidas en WS-Discovery excepto LDAP. WSDAPI también proporciona un modelo extensible para definir reglas de coincidencia de ámbito personalizadas, cumpliendo así con R1019. La API de hospedaje también proporcionará siempre el wsdp:Device
tipo de detección por R1020, pero la API de cliente no requiere que esté presente. Otras aplicaciones basadas en WSDAPI, como PnP-X, tienen un requisito difícil para que el tipo esté presente en la wsdp:Device
detección.
Para facilitar la detección y el enlace, WSDAPI admite R1009 y R1016. Por R1018, WSDAPI omitirá UDP de multidifusión no enviado a la dirección anónima. R1015, R1021 y R1022 definen un enlace HTTP para el mensaje de sondeo, que WSDAPI admite como se describe.
Descripción de DPWS 5.0
WSDAPI aplica R2044 en el cliente. En el lado de hospedaje, WSDAPI solo proporcionará el wsx:Metadata
elemento en el cuerpo del sobre SOAP. R2045 permite a los dispositivos admitir un subconjunto de la funcionalidad de transferencia de WS . La API de hospedaje siempre generará el wsa:ActionNotSupported
error.
Características de DPWS 5.1
DPWS describe las características básicas del dispositivo. Además de las restricciones descritas en este tema, los límites de longitud se definen para cadenas y URI específicos. WSDAPI aplica los límites de longitud de esta sección 5.1 de DPWS, ya sea antes de enviar el mensaje o después de analizar su contenido.
DPWS también describe las secciones de metadatos necesarias y el ciclo de la versión de metadatos. La implementación del cliente aplica la presencia de metadatos ThisModel y ThisDevice. La implementación de hospedaje también administra correctamente la versión de metadatos y siempre proporciona estas secciones, cumpliendo con R2038, R2012, R2001, R2039, R2014 y R2002.
Hospedaje de DPWS 5.2
En esta sección se describe la jerarquía de servicios y metadatos de relación. WSDAPI no aplica la unicidad de ServiceId como se describe en esta sección en el cliente o en el lado del dispositivo.
WSDAPI cumple con R2040 y es posible que la implementación de hospedaje envíe una respuesta de metadatos sin ninguna sección de relación si no hay ningún servicio hospedado. La implementación del cliente acepta correctamente la respuesta de metadatos.
R2029 permite varias secciones de relación en una respuesta de metadatos, que WSDAPI aceptará correctamente. R2030 y R2042 describen la administración de la versión de metadatos, que se implementa correctamente en la API de hospedaje.
DPWS 5.3 WSDL
Si un servicio proporciona datos del lenguaje de descripción de servicios web (WSDL), las implementaciones de cliente pueden obtener la definición del servicio y manipular el servicio sobre la marcha. Esto lo usan los clientes enlazados en tiempo de ejecución. La implementación del cliente WSDAPI aceptará WSDL proporcionado desde un servicio, pero el cliente no lo valida y el cliente no proporciona un modelo de programación enlazado en tiempo de ejecución. La implementación de hospedaje se puede usar para proporcionar WSDL, pero no es necesario que el host lo haga, ya que el propio host no administra los metadatos de nivel de servicio.
DPWS 5.4 WS-Policy
DPWS describe las aserciones de directiva que se usarán para los dispositivos. Dado que WSDAPI no proporciona y no interpreta WSDL, no puede reconocer ni aplicar la directiva insertada en datos WSDL.
Eventos de DPWS 6.0
Suscripción a DPWS 6.1
DPWS requiere compatibilidad con la entrega de inserción. WSDAPI implementa la entrega push en el lado del servicio, cumpliendo así con R3009 y R3010, y solo aceptará el modo de entrega de inserción en el lado cliente. R3017 y R3018 requieren errores específicos del servicio si no reconoce las NotifyTo
direcciones o EndTo
. WSDAPI no valida estas direcciones por adelantado y no generará estos errores. Sin embargo, la implementación del cliente reconocerá estos errores correctamente. Del mismo modo, R3019 es opcional y WSDAPI no implementa esta recomendación, pero la implementación del cliente reconocerá correctamente el SubscriptionEnd
mensaje y notificará a la aplicación un error de entrega.
Filtrado de DPWS 6.1.1
WSDAPI cumple con R3008 e implementa el Action
filtro. En cumplimiento con R3011 y R3012, WSDAPI no generará los errores en las condiciones indicadas. WSDAPI también implementa el error descrito en R3020 si no reconoce las acciones en las que se le pide que filtre.
Duración y renovación de la suscripción de DPWS 6.2
WSDAPI cumple con R3005, R3006 y R3016. WSDAPI siempre usará xs:duration
, pero aceptará xs:dateTime
si se proporciona y, por tanto, no emitirá el error opcional en R3013. WSDAPI admite GetStatus
y no emitirá el wsa:ActionNotSupported
error por R3015. WSDAPI acepta el wsa:ActionNotSupported
error si un servicio responde a una GetStatus
solicitud con él.
Seguridad de DPWS 7.0
DPWS describe un modelo de seguridad recomendado para dispositivos. WSDAPI no implementa estas recomendaciones como se describe y no aplica las restricciones de esta sección, como se describe.
Apéndice I de DPWS
DPWS modifica constantes globales de otras especificaciones para adaptarse a los dispositivos. WSDAPI usa las constantes de esta sección e invalida las constantes predeterminadas en la implementación de WS-Discovery con estas constantes. Las aplicaciones que usan WSDAPI para WS-Discovery se enlazarán a las constantes definidas en DPWS, no a las constantes definidas en WS-Discovery.