Protocolo SOAP

Originalmente, em 1988, o termo SOAP era o acrônimo de Simple Object Access Protocol (Protocolo Simples de Acesso a Objeto). Seu objetivo era permitir que diferentes sistemas pudessem enviar e receber objetos (no sentido do paradigma de Programação Orientada a Objetos) utilizando a linguagem XML como meio de representação destes objetos.

Porém, a partir da especificação 1.2 de 2007, o conceito de objeto foi abandonado e o objetivo do protocolo passou a ser simplesmente possibilitar que diferentes sistemas troquem mensagens em formato XML contendo dados de diversos tipos. Ainda assim, por uma questão de conveniencia, o acrônimo foi mantido.

A principal motivação para a criação do protocolo foi reconhecer que a infraestrutura da internet e a popularidade de seus protocolos, especialmente o HTTP, tornaram bastante simples a tarefa de fazer com que aplicações enviassem e recebessem dados.

Por ser um protocolo, padronizado pelo W3C, o SOAP é usado principalmente por empresas para a realização de negócios entre si, conhecido pelo acrônimo B2B (Business to Business).

Por exemplo, suponha uma loja precisa recompor o seu estoque. Para isso é preciso entrar em contato com o fabricante dos produtos que estão faltando para saber o preço e o prazo de entrega. Depois é preciso solicitar a compra, indicando os protudos desejados e suas quantidades.

Dependendo do porte das empresas, os dados envolvidos neste negócio podem estar registrados "no guardanapo" (visualize um cara de bigode, lápis na orelha, olhando para a prateleira do seu estabelecimento comercial) ou em algo mais moderno como uma planilha eletrônica e a comunicação sendo feita via telefone. Neste cenário há muitas chances para mal entendidos (nomes dos produtos, quantidades desejadas, prazos, preços, etc). Mal entendidos, que fique bem entendido, significa perder dinheiro por causa de um serviço mal feito.

No contexto SOAP, todos os dados envolvidos na transação comercial são representados por textos escritos na linguagem XML. Com isso é possível automatizar o processo de validação dos dados, ou seja, que todos os dados tenham sido preenchidos corretamente.

O provedor de serviço pode tornar público (acessável via Internet):

  • os serviços que oferece (indicando qual a URL para acessar cada serviço).
  • o formato esperado do documento XML que especifica os dados do serviço solicitado (quais campos, qual o tipo de informação, se o preenchimento é obrigatório, etc).

  • o formato do documento XML que contém a resposta de cada serviço.

O consumidor do serviço pode então, via internet, enviar e receber dados (representados na forma de documentos XML) aos provedores de serviço.

Exemplo

O documento XML abaixo mostra um exemplo de mensagem SOAP que contém um pedido de reserva de viagem para uma agência de turismo fictícia.

<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
 <env:Header>
  <m:reservation xmlns:m="http://travelcompany.example.org/reservation" 
          env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
           env:mustUnderstand="true">
   <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>
   <m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime>
  </m:reservation>
  <n:passenger xmlns:n="http://mycompany.example.com/employees"
          env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
           env:mustUnderstand="true">
   <n:name>Åke Jógvan Øyvind</n:name>
  </n:passenger>
 </env:Header>
 <env:Body>
  <p:itinerary
    xmlns:p="http://travelcompany.example.org/reservation/travel">
   <p:departure>
     <p:departing>New York</p:departing>
     <p:arriving>Los Angeles</p:arriving>
     <p:departureDate>2001-12-14</p:departureDate>
     <p:departureTime>late afternoon</p:departureTime>
     <p:seatPreference>aisle</p:seatPreference>
   </p:departure>
   <p:return>
     <p:departing>Los Angeles</p:departing>
     <p:arriving>New York</p:arriving>
     <p:departureDate>2001-12-20</p:departureDate>
     <p:departureTime>mid-morning</p:departureTime>
     <p:seatPreference/>
   </p:return>
  </p:itinerary>
  <q:lodging
   xmlns:q="http://travelcompany.example.org/reservation/hotels">
   <q:preference>none</q:preference>
  </q:lodging>
 </env:Body>
</env:Envelope>

Fonte: https://www.w3.org/TR/soap12-part0/#Example

Leitura Obrigatória
SOAP
Leitura Sugerida
Especificação SOAP - Parte 0
Biblioteca node-soap

results matching ""

    No results matching ""