El formato de los mensajes SOAP se describe en una definición WSDL, por lo tanto, el intermediario debe poder correlacionar este WSDL y el modelo de mensaje que utiliza para analizar estos mensajes durante la ejecución. La finalidad de este tema es resaltar las relaciones clave entre WSDL y el modelo de mensaje.
Las partes físicas de la definición WSDL no se representan en el modelo del intermediario, por lo tanto, sólo debe tener en cuenta las definiciones de la operación WSDL, del mensaje y sus partes. Comenzando por los bloques de creación de nivel inferior, una definición WSDL describe:
El generador WSDL utiliza las categorías de mensajes para definir las operaciones WSDL necesarias. No obstante, en el modelo de mensaje del intermediario las categorías de mensajes no tienen ninguna importancia en tiempo de ejecución y no se crean cuando se importa el WSDL.
La relación de una categoría de mensaje con el modelo de mensaje del intermediario depende del estilo WSDL:
El hijo único de <soap:Body> representa la llamada rpc (función) y se hace referencia al mismo como el reiniciador o accesor rpc. El nombre del accesor rpc lo proporciona el nombre de la operación WSDL y su espacio de nombres se proporciona mediante el atributo de espacio de nombres de la definición <soap:body>, que únicamente se utiliza para rpc-style. Los hijos del accesor rpc representan los parámetros de la llamada rpc. Los nombres de los elementos hijo los proporcionan los nombres de las partes que se obtienen de la definición del mensaje WSDL correspondiente. Estos son locales para el accesor rpc y no tienen un espacio de nombres.
Se pueden utilizar cabeceras SOAP y errores junto con mensajes rpc-style pero estos no se correlacionan con los parámetros rpc-style y debido al perfil básico WS-I deben utilizar document-style.
Los mensajes intercambiados los describe en su totalidad el esquema XML (sólo se permite la codificación literal). Ninguna parte del mensaje SOAP se deriva de los objetos WSDL como, por ejemplo, los nombres de operación y partes.
El perfil básico WS-I especifica que un mensaje document-style no debe tener más de una parte en el cuerpo del mensaje. El elemento SOAP-ENV:Header puede tener varios elementos hijo (bloques de cabecera). El mensaje de detalle de error se define mediante una parte del mensaje WSDL individual.
En cada caso, el esquema del elemento se define mediante el elemento al que se hace referencia en la definición de las partes del mensaje y pertenece al targetNamespace de <schema> que define el elemento.
El modelo resultante permite al usuario analizar los mensajes SOAP de entrada utilizando el analizador MRM XML en el que el tipo de mensaje será Envelope. El modelo de mensaje para el sobre SOAP (Envelope) define el reiniciador SOAP externo con las secciones de cabecera y cuerpo que lo constituyen y un número de puntos de conexión donde pueden aparecer diferentes cargas de datos de la empresa. Estos puntos de conexión se definen con la composición del mensaje ("message"), lo que permite que los mensajes de intermediarios creados por el importador o generador WSDL aparezcan en estos puntos.
La tabla siguiente muestra los puntos de conexión y las conexiones posibles en cada punto.
Estilo WSDL | ||
---|---|---|
Punto de conexión | rpc | documento |
Envelope.Body | accesor de operación individual | debe tener un solo hijo |
Envelope.Header | puede tener varios hijos e incluso duplicados | puede tener varios hijos e incluso duplicados |
Envelope.Body.Fault.detail | debe tener un solo hijo | debe tener un solo hijo |