SOAP (anteriormente conocido como Simple Object Access Protocol) es un protocolo ligero para el intercambio de información en entornos descentralizados y distribuidos. Un mensaje SOAP es una transmisión de información de un remitente a un destinatario. Los mensajes SOAP se pueden combinar para ejecutar patrones de solicitud/respuesta.
SOAP es independiente del transporte, pero normalmente se ejecuta a través de
HTTP para que se pueda utilizar con la infraestructura de Internet existente. SOAP permite el enlace y el uso de los servicios web descubiertos mediante la definición de una vía de acceso de mensajes para direccionar los mensajes. SOAP se utiliza para consultar los servicios web en el UDDI.
El estándar JAX-WS (API de Java™ para servicios web XML) introduce la posibilidad de dar soporte a SOAP 1.1 y SOAP 1.2. Si tiene instalado WebSphere Application Server V7.0 y posteriores o WebSphere Application Server Liberty Profile, el entorno de trabajo da soporte a SOAP 1.1 y SOAP 1.2.
SOAP 1.1
SOAP 1.1 es un transporte independiente del protocolo que se puede utilizar en combinación con otros protocolos. En los servicios web que se desarrollan y se implementan con WebSphere Application Server, se utiliza SOAP en combinación con HTTP, la infraestructura de extensiones HTTP y Java Message Service (JMS). SOAP también es independiente del sistema operativo y no está vinculado con ningún
lenguaje de programación ni tecnología de componentes. Siempre que el cliente pueda emitir mensajes XML, no importa qué tecnología se utiliza para implementar el cliente. De forma parecida, el servicio puede implementarse en cualquier idioma, siempre que pueda procesar los mensajes SOAP. Asimismo, el cliente y el servidor pueden residir en cualquier plataforma compatible.
SOAP es un protocolo basado en XML que define tres partes de cada mensaje:
- Sobre. El sobre define una infraestructura
para describir el contenido del mensaje y cómo procesarlo. Un mensaje SOAP es un sobre que contiene cero o más cabeceras y exactamente un cuerpo. El sobre es el elemento de nivel superior del documento XML, que proporciona un contenedor para información de control, la dirección de un mensaje y el propio mensaje. Las cabeceras transportan cualquier tipo de información de control como, por ejemplo, los atributos de calidad de servicio. El cuerpo contiene la identificación del mensaje y sus parámetros. Las cabeceras y el cuerpo son elementos hijo del sobre.
- Normas de codificación. El conjunto de normas
de codificación expresa las instancias de los tipos de datos definidos por
la aplicación. Las normas de codificación definen
un mecanismo de serialización que se puede utilizar para intercambiar instancias de tipos de datos definidos por la aplicación. SOAP
define un esquema de tipos de datos independiente del lenguaje de programación basado
en XSD y normas de codificación para todos los tipos de datos definidos de acuerdo
con este modelo. La codificación SOAP no es compatible con WS-I, por lo que el uso
de Literal (que no está codificado) es el recomendado para los servicios web
interoperativos y el que se necesita para la conformidad con WS-I.
- Estilos de comunicación. Las comunicaciones pueden
seguir un formato de llamada a procedimiento remoto (RPC) o un formato orientado a los mensajes (documento).
SOAP da soporte a dos estilos de
comunicación diferentes:
- Llamada a procedimiento remoto (RPC): RPC es la invocación de una operación que devuelve un resultado. RPC se utiliza normalmente con la codificación SOAP, que no es compatible con WS-I.
- Estilo de documento : el estilo de documento también se conoce como el estilo orientado a documentos u orientado a mensajes. Este estilo proporciona una capa de abstracción más profunda y requiere más trabajo de programación.
En los entornos de informática distribuida, los estilos de codificación especifican cómo pueden convertirse los valores de datos definidos en la aplicación hacia y desde un determinado formato de protocolo. El proceso de conversión se conoce como serialización y deserialización. La especificación SOAP 1.1 define el estilo de codificación SOAP:
- Codificación SOAP: el estilo de codificación SOAP permite serializar y deserializar los valores de tipos de datos del modelo de datos SOAP. Este estilo de codificación se define en el estándar SOAP 1.1 y no es compatible
con WS-I.
WSDL define el estilo de codificación XML literal:
- XML literal: literal se refiere al hecho de que debe leerse el
documento tal cual, sin codificar. El documento se serializa como XMI,
lo que significa que el XML del mensaje cumple el esquema en el WSDL. Cuando se utiliza la codificación literal, cada parte del mensaje hace referencia a una definición de esquema en concreto. La codificación literal es compatible con WS-I.
SOAP 1.2
La especificación SOAP 1.2 también es una recomendación de World Wide Web Consortium (W3C), y las herramientas incluidas en este entorno de trabajo siguen los estándares que se describen en SOAP 1.2. La especificación SOAP 1.2 tiene tres partes, además de algunas aserciones y una colección de pruebas:
SOAP 1.2 proporciona una definición más específica del modelo de proceso
SOAP, que suprime muchas de las ambigüedades que pueden generar problemas de
interoperatividad cuando no existen perfiles WS-I (Web Services-Interoperability).
SOAP 1.2 debe reducir la probabilidad de que existan problemas de interoperatividad con
las implementaciones de SOAP 1.2 entre distintos proveedores.
Algunos de los
cambios más importantes en la especificación SOAP 1.2 son:
- La posibilidad de definir oficialmente otros protocolos de transporte distintos
del protocolo HTTP, siempre que los proveedores cumplan la infraestructura de
enlaces definida en SOAP 1.2. Aunque HTTP es ubicuo, no es tan seguro como
transporte como TCP/IP, MQ, etc.
- El hecho de que SOAP 1.2 se basa en el conjunto de información XML (Infoset
XML). El conjunto de información proporciona una forma de describir el documento XML
utilizando el esquema XSD, pero no necesariamente serializa el documento utilizando
la serialización XML 1.0. SOAP 1.1 se basa en la serialización XML 1.0. El conjunto
de información permite utilizar de forma más fácil otros formatos de serialización
como el formato de protocolo binario. Puede utilizar un formato de protocolo binario
para reducir el mensaje a un formato más compacto, en el que la información de
codificación verbosa no será necesaria.