Simple Object Access Protocol

Concepto 
O concepto fundamental que hai tras SOAP é o RPC ou Remote procedure call (chamada de procedemento remoto). Baixo este concepto  un ordenador pode enviar unha mensaxe a outro na rede. O ordenador receptor recibe a chamada pode controlala mediante un software local. Enviando, se fose necesario, unha resposta ó ordenador emisor.

 Tecnoloxía 
A diferenza de DCOM e CORBA, que son binarios, SOAP usa o código textual XML, que facilita a eliminación de erros, co custo de ser menos eficiente. O intercambio de mensaxes realízase mediante tecnoloxía de compoñentes (software componentry, ver enxeñaría de software). O termo Object no nome significa que se adhire ao paradigma da programación orientada a obxectos.

SOAP é un marco extensíbel e descentralizado que permite traballar sobre múltiplas pilas de protocolos de redes informáticas. Os procedementos de chamadas remotas (RPC) poden ser modelados na forma de varios mensaxes SOAP interactuando entre si.

SOAP corre sobre calquera protocolo de Internet, xeralmente HTTP, que é o único homologado polo W3C. SOAP ten como base XML, cun deseño que cumpre o padrón Cabeceira-Desenvolvemento de deseño de software, como outros moitos deseños, tales como HTML. A cabeceira Header é opcional e contén metadatos sobre enrutamento (routing), seguridade ou transaccións. O desenvolvemento Body contén a información principal, que se coñece como carga útil (payload). A carga útil acóllese a un Schema XML propio.

 Alternativas a SOAP 
Debido ao longo que é o formato XML, SOAP é considerablemente mais lento que outras tecnoloxías de middleware tales como CORBA. Tipicamente, SOAP é unhas 10 veces mais lento que un protocolo binario tal como RMI ou IIOP.
Ademais, diversos autores teñen considerado a SOAP, unha interface moito máis complexa ca outras, especialmente REST. Así, por exemplo, Amazon ofreceu interfaces de ambos tipos ás súas plataformas, constatándose que a acollida da interface REST foi máis positiva por parte dos programadores web.

 Exemplos de mensaxes SOAP 

Como exemplo móstrase a forma en que un cliente solicitaría información dun produto a un provedor de servizos Web:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetails xmlns="http://warehouse.example.com/ws">
       <produtId>827635</produtId>
     </getProductDetails>
   </soap:Body>
 </soap:Envelope>

O elemento Envelope é contedor da mensaxe SOAP. O seguinte elemento en importancia e obrigatorio é o Body, onde están os datos propios da chamada. Existe a posibilidade de declarar unha seción Header, mais esta é opcional. 

E esta sería a contestación do provedor:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProdutDetailsResponse xmlns="http://warehouse.example.com/ws">
       <getProductDetailsResult>
         <produtName>Toptimate 3-Pece Set</produtName>
         <produtId>827635</produtId>
         <description>3-Pece age set.  Black Polyester.</description>
         <prezo>96.50</prezo>
         <inStock>tro</inStock>
       </getProductDetailsResult>
     </getProdutDetailsResponse>
   </soap:Body>
 </soap:Envelope>

HTTP foi elixido como protocolo de transporte primario polas súas vantaxes, para lidar con devasas, por exemplo. Outros protocolos como XIOP/IIOP ou DCOM acostuman ser repelidos por estas devasas.

 Estrutura 
Unha mensaxe SOAP consta de tres estruturas ben definidas: dúas obrigatorias: o Envelope ou sobre e o corpo da mensaxe e unha opcional: a cabeceira.
 Sobre (Envelope) 
 Cabeceira (Header) 
Trátase dunha sección xeralmente opcional, mais pode ser marcada como obrigatoria polo emisor da mensaxe, empregando o parámetro MustUnderstand. Se o receptor non está preparado para tratar devandita cabeceira produciríase un erro e a mensaxe non sería tratada.
Habitualmente a cabeceira pode levar dous tipos de información. Información relacionada coa seguridade ou identificación das partes implicadas, tales coma certificados electrónicos, sinaturas dixitais ou outros tipos de credenciais.
Ademais tamén pode conter diversos elementos en formato XML que conteñan información adicional sobre o proceso de negocio en curso.

 Corpo da mensaxe (Body) 

 Notas 

 Véxase tamén 
 Temas relacionados 
 Inxeñaría de software (software componentry)
 Servizos Web, WSDL, UDDI
 WS-I
 SOA

 Ligazóns externas 
 W3C SOAP primeiro
 XML protocol activity
 Technology Report 
 two-way SOAP to CORBA bridge
 Discussion on Web Services technology (SOAP and REST)

Categoría:Protocolos de Internet