O formato das mensagens SOAP é descrito em uma definição WSDL, portanto, o intermediário deve poder mapear entre o WSDL e o modelo de mensagem utilizado para analisar essas mensagens no tempo de execução. A finalidade deste tópico é realçar os relacionamentos-chave entre o WSDL e o modelo de mensagem.
As partes físicas da definição WSDL não são representadas no modelo do intermediário, portanto, é necessário considerar apenas as definições de operação, de mensagem e de parte WSDL. Começando com os blocos de construção de nível inferior, uma definição WSDL descreve:
O gerado WSDL utiliza categorias de mensagem para definir as operações WSDL requeridas. No entanto, as categorias de mensagem não possuem significado de tempo de execução no modelo de mensagem do intermediário e não são criadas quando o WSDL é importado.
O relacionamento de uma Categoria de Mensagem com o modelo de mensagem do intermediário depende do estilo WSDL:
O único filho de <soap:Body> representa a chamada rpc (função) e é referido como o wrapper ou acessador rpc. O nome do acessador rpc é especificado pelo nome da operação WSDL e seu espaço de nomes é especificado pelo atributo de espaço de nomes na definição <soap:body>, que é utilizada apenas para estilo de rpc. Os filhos do acessador rpc representam os parâmetros da chamada rpc. Os nomes dos elementos filhos são especificados pelos nomes de partes da definição de mensagem WSDL correspondente. Eles são locais para o acessador rpc e não possuem espaço de nomes.
Os cabeçalhos e falhas SOAP podem ser utilizados junto com mensagens de estilo rpc, mas eles não são mapeados para parâmetros estilo de rpc e são requeridos para utilizar o estilo de documento pelo WS-I Basic Profile.
As mensagens trocadas são totalmente descritas pelo Esquema XML (apenas a codificação literal é permitida). Nenhuma das partes da mensagem SOAP é derivada de objetos WSDL, tais como, nomes de operações e de partes.
O Perfil Básico do WS-I especifica que uma mensagem de estilo de documento deve ter no máximo uma parte de corpo. O elemento SOAP-ENV:Header pode ter vários elementos-filhos (blocos de cabeçalhos). A mensagem de detalhe de falha é definida por uma única parte de mensagem WSDL.
Em cada caso, o esquema de elemento é definido pelo elemento referido na definição de parte da mensagem WSDL e pertence ao targetNamespace do <schema> que define o elemento.
O modelo resultante permite que o usuário analise as mensagens SOAP que chegam utilizando o analisador MRM XML no qual o tipo de mensagem seria Envelope. O modelo de mensagem para o envelope SOAP define o SOAP externo com suas seções de Cabeçalho e Corpo constituintes e vários pontos de conexão nos quais podem aparecer várias cargas úteis de negócios. Estes pontos de conexão são definidos com a composição 'message', permitindo que as mensagens do intermediário criadas pelo importador ou gerador WSDL apareçam nestes pontos.
A tabela mostra os pontos de conexão e as possíveis conexões em cada ponto.
Estilo WSDL | ||
---|---|---|
Ponto de Conexão | rpc | documento |
Envelope.Body | acessador de operação única | deve ter um único filho |
Envelope.Header | pode ter vários filhos, incluindo duplicatas | pode ter vários filhos, incluindo duplicatas |
Envelope.Body.Fault.detail | deve ter um único filho | deve ter um único filho |