SOAP (antes conhecido como Simple Object Access Protocol) é um protocolo reduzido destinado à troca de informações em um ambiente distribuído, descentralizado. Uma mensagem SOAP é a transmissão de informações de um emissor para um receptor. Mensagens SOAP podem ser combinadas para a execução de padrões de pedido/resposta.
O SOAP não é dependente de transporte, mas é mais comumente transportado sobre HTTP para execução com a infra-estrutura existente da Internet. Ele permite a ligação e o uso de serviços da Web descobertos, definindo um caminho de roteamento de mensagens. O SOAP é utilizado para consultar o UDDI em busca de serviços da Web. O ambiente de trabalho suporta o SOAP 1.1.
SOAP é um protocolo baseado em XML que define três partes para cada mensagem:
O SOAP suporta dois estilos de comunicação diferentes:
Chamada de procedimento remoto (RPC): chamada de uma operação que retorna um resultado. Em geral, utilizado com codificação SOAP, que não é compatível com WS-I.
Estilo de Documento: Também conhecido como estilo orientado a documento ou estilo orientado a mensagem, Este estilo fornece uma camada inferior de abstração e exige mais trabalho de programação.
Em ambientes de computação distribuídos, estilos de codificação definem como valores de dados definidos no aplicativo podem ser convertidos em/de um formato de protocolo específico. O processo de conversão é conhecido como serialização e desserialização.
A especificação SOAP define o estilo de codificação SOAP:
Codificação SOAP: o estilo de codificação SOAP permite serializar/desserializar valores de tipos de dados do modelo de dados SOAP. Esse estilo de codificação é definido no padrão SOAP 1.1, e não é compatível com WS-I.
O WSDL define o estilo de codificação Literal XML:
Literal XML: Literal se refere ao fato de que o documento deve ser lido como está, ou sem codificação. O documento é serializado como XMI, o que significa que a mensagem XML é compatível com o esquema no WSDL. Ao utilizar codificação Literal, cada parte da mensagem se refere a uma definição concreta de esquema. A codificação Literal é compatível com WS-I.
A finalidade do modelo de dados SOAP é fornecer uma abstração independente de linguagem para tipos de dados utilizados por tipos comuns de linguagem de programação. Ele consiste em:
Todos os elementos e identificadores que compõem o modelo de dados SOAP são definidos no espaço de nomes do URI. O padrão SOAP define as regras de como os tipos de dados podem ser construídos. Um esquema XML específico do projeto deve definir os tipos de dados reais. Os elementos da especificação SOAP são definidos em http://schemas.xmlsoap.org/soap/envelope/ e em http://schemas.xmlsoap.org/soap/encoding/
Diferentes implementações do protocolo SOAP estão disponíveis atualmente. Por exemplo, a Apache Foundation fornece o Apache SOAP, que surgiu de um projeto da IBM® denominado SOAP4J, bem como os ambientes de tempo de execução Apache Axis e IBM WebSphere®.
Um mapeamento define uma associação entre um nome de elemento XML qualificado, um nome de classe Java™ e um estilo de codificação. O mapeamento especifica como, sob a codificação dada, um elemento XML de entrada com um nome completo é convertido em uma classe Java, e vice-versa.
Para obter informações adicionais sobre o Apache SOAP, consulte xml.apache.org/soap. Para obter informações adicionais sobre o SOAP, consulte www.w3.org/TR/SOAP