SOAP: explicación del protocolo de red

Interactuar en redes como Internet solo es posible si se siguen unas reglas establecidas. Para que los diferentes ordenadores y otros dispositivos con conectividad no caigan en el caos, se atienen a un protocolo de red. SOAP es, junto con REST, uno de los protocolos más importantes de Internet.

¿Qué es SOAP?

La comunicación en Internet se basa principalmente en protocolos como HTTP, HTTPS, FTP o, a otro nivel, TCP. Pero SOAP es esencial para los servicios web, interfaces a través de las cuales un dispositivo puede hacer uso del servicio de un servidor. Los buscadores, las tiendas en línea y otros muchos servicios en Internet funcionan a través de dichos servicios web, y SOAP es uno de los protocolos que lo hacen posible.

Hecho

Inicialmente, la denominación SOAP se utilizó como acrónimo de “Simple Object Access Protocol”. Ya que dicha denominación no encaja realmente con el protocolo (no es ni simple ni accede a ningún objeto), en la actualidad se utiliza SOAP como nombre propio.

SOAP se viene utilizando desde los años noventa para posibilitar la comunicación entre un cliente, como el navegador de Internet, y los servicios de un servidor. Para que esto sea posible, el cliente debe enviar una solicitud a la API. El framework de SOAP determina la forma que debe adoptar dicha solicitud. Dentro de esta definición de la solicitud también pueden incluirse datos específicos de la aplicación, lo que es un punto fuerte de SOAP. De esta forma, los servicios web pueden desplegar aplicaciones diferentes. Para que puedan utilizarse como servicios web sin necesidad de tener la misma sintaxis, SOAP establece unas reglas básicas.

Nota

El desarrollador de software Dave Wiener creó SOAP en colaboración con un equipo de Microsoft para conseguir un protocolo que funcionara bien para Internet. Para ello se le dio mucha importancia a que SOAP fuera compatible con los estándares W3C, convirtiéndose así en una recomendación de W3C.

SOAP web services: campos de aplicación del protocolo

SOAP juega un papel importante cuando un sistema quiere acceder a otro de manera ordenada y limitada. En lugar de darle al cliente solicitante acceso total al servidor, con un protocolo como SOAP puede limitarse el acceso a las funciones que necesita. La arquitectura del protocolo, al facilitar un marco al que la aplicación puede incorporarse, ofrece así la ventaja de que sistemas muy diferentes pueden cooperar entre sí.

Una gran diversidad de servicios web se basa en SOAP. Por ejemplo, Amazon e eBay trabajan (parcialmente) con el protocolo de red.

La estructura de SOAP: funcionamiento del protocolo

SOAP se basa en el metalenguaje XML. Este, que también es una recomendación de W3C, es un conjunto de unidades de información que son necesarias para dar como resultado un documento XML bien formado (es decir, de acuerdo con una estructura recomendada). SOAP asimila su estructura de mensajes y por consiguiente se corresponde principalmente con un documento XML.

En la mayoría de los casos, SOAP se integra también en HTTP. El transporte se realiza a través del protocolo y se integra en su estructura. Un mensaje HTTP con una solicitud SOAP tiene la siguiente forma:

POST /example HTTP/1.1
Host: example.org
Content-Type: text/xml; charset=utf-8
…
<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
...
   <SOAP-ENV:Header>
      ...
   </SOAP-ENV:Header>

   <SOAP-ENV:Body>
      ...
   </SOAP-ENV:Body>

</SOAP_ENV:Envelope>

En este ejemplo, la solicitud comienza con un encabezado HTTP. A continuación, sigue el llamado Envelope (sobre) de SOAP, que envuelve el contenido real del mensaje como un sobre. Los elementos principales de SOAP son el Header (encabezado) y el Body (cuerpo).

  • Header: el encabezado de la solicitud SOAP contiene metadatos como la encriptación que se ha utilizado. Su uso es opcional.
  • Body: en el cuerpo del mensaje se encuentran los datos en sí.

Los conceptos utilizados en el Body no tienen nada que ver con SOAP, sino que dependen completamente de la aplicación.

El protocolo aparece a menudo en combinación con el lenguaje WSDL (Web Services Description Language). Se trata de un lenguaje de descripción especial para servicios web que, por otra parte, no depende de plataforma. Con su ayuda, un cliente puede reconocer qué servicios ofrece un servicio web. A partir del archivo WSDL, el cliente deduce qué posibilidades tiene para realizar una solicitud SOAP. El dúo WSDL y SOAP permite que dos sistemas diferentes se comuniquen sin tener que adaptarse previamente.

SOAP vs. REST

Tanto SOAP como REST (que, al fin y al cabo, es una arquitectura y no un protocolo) se utilizan para servicios web, aunque procesan las tareas de manera distinta. Mientras que SOAP es algo más antiguo, REST (también conocido como RESTful Web Services) ha ido ganando terreno y en la actualidad distribuye aproximadamente el 70 por ciento de los servicios web.

No obstante, cada uno ofrece ventajas diferentes: REST está considerado relativamente sencillo, no trabaja solo con XML, es más rápido y, en comparación con SOAP, más ligero. La libertad que caracteriza a REST a la hora de elegir si trabajar con XML (a menudo recurre a JSON) caracteriza a SOAP a la hora de elegir el protocolo. Aunque HTTP es a menudo la opción elegida, teóricamente SOAP funciona también en combinación con FTP, SMTP u otros protocolos.

Respecto a la seguridad, SOAP supone una gran ventaja: WS-Security (especificaciones para los criterios de seguridad respecto a servicios web) está anclado en el protocolo de red. También el tratamiento de los errores está mejor regulado en SOAP, porque incorpora directamente una función para la repetición de la solicitud.

En resumen

Tanto SOAP como REST presentan ventajas y desventajas, de modo que no se puede concluir que una solución sea mejor que la otra. Sin embargo, por su sencillez, la mayoría de los desarrolladores recurren a REST. Finalmente, la decisión depende del lenguaje de programación que se utilice y del contexto en el que se quiera utilizar el protocolo.