julio 06, 2022

SOAP

De acuerdo a W3C , SOAP ( Simple Object Access Protocol)   es un protocolo ligero para el intercambio de información en un entorno distribuido y descentralizado. Esta  basado en XML y  consta de tres partes: 

  • El constructo Sobre o envelope   define un marco general para expresar lo que hay en un mensaje; quién debe ocuparse de él, y si es opcional u obligatorio.
  • Las reglas de codificación SOAP definen un mecanismo de serialización que se puede utilizar para intercambiar instancias de tipos de datos definidos por la aplicación.
  • La representación SOAP RPC  define una convención que se puede utilizar para representar llamadas y respuestas a procedimientos remotos.

Sobre 

Un mensaje SOAP contiene lo siguiente, vea el esquema presentado en la figura 1:
  • El Sobre o Envelope es el elemento superior, la raíz del documento XML que representa el mensaje.
  • El Encabezado o Header  es un mecanismo genérico para agregar características a un mensaje SOAP de manera descentralizada sin acuerdo previo entre las partes comunicantes. 
  • El Cuerpo o Body  es un contenedor de información obligatoria destinada al destinatario final del mensaje.

1. Sobre o Envelope. Tomado de [1]

Reglas de Codificación SOAP 

El conjunto de reglas de codificación expresa instancias de tipos de datos definidos por la aplicación. Las reglas de codificación definen un mecanismo de serialización que puede utilizarse para intercambiar instancias de los 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 (XML Schema) más reglas de codificación para todos los tipos de datos definidos de acuerdo con este modelo.
Ver el detalle de estas reglas en  W3C Soap Encoding

La representación SOAP RPC

Las comunicaciones pueden seguir el formato de llamada a procedimiento remoto (RPC).  ver W3C SOAP RPC 

Un mensaje SOAP se puede utilizar para transmitir un documento o para respaldar la comunicación cliente-servidor:
  • El mensaje o documento  que se va a comunicar se coloca directamente dentro del elemento body junto con una referencia a un esquema XML que contiene la descripción del servicio, que define los nombres y tipos utilizados en el documento. Este tipo de mensaje SOAP se puede enviar de forma síncrona o asíncrona. 
  • Para la comunicación cliente-servidor, el elemento del cuerpo contiene una Solicitud o una Respuesta. Estos dos casos se pueden ver en la  Figura 2 y la Figura 3.

2. Mensaje solicitud. Tomado de [1]
3. Mensaje de Respuesta. Tomado de [1]
 
La figura 2 [1]  muestra un ejemplo de un mensaje de solicitud simple sin encabezado. El cuerpo incluye un elemento que contiene el nombre del procedimiento que se llamará y el URI del espacio de nombres  para la descripción del servicio relevante, que se denota por m. Los elementos internos de un mensaje de solicitud contienen los argumentos del procedimiento. Este mensaje de solicitud proporciona dos cadenas que el procedimiento del servidor devolverá en el orden opuesto. El espacio de nombres XML denotado por env contiene las definiciones SOAP para un envelope.

La Figura 3 muestra el ejemplo de un  mensaje de respuesta correspondiente, que contiene los dos argumentos de salida. Si un procedimiento tiene un valor de retorno, entonces puede indicarse como un elemento denominado rpc:result. El mensaje de respuesta utiliza los mismos dos esquemas XML que el mensaje de solicitud, el primero define el sobre SOAP y el segundo los nombres de argumentos y procedimientos específicos de la aplicación.

SOAP y HTTP

Se requiere un protocolo de transporte para enviar un mensaje SOAP a su destino. SOAP sigue  el modelo de mensaje de solicitud/respuesta HTTP que proporciona parámetros de solicitud SOAP en una solicitud HTTP y parámetros de respuesta SOAP en una respuesta HTTP.  La figura 4 ilustra cómo se utiliza el método HTTP POST para transmitir un mensaje SOAP. 

4. HTTP y SOAP. Tomado de [1]


Los encabezados y el cuerpo HTTP se utilizan de la siguiente manera:

  • Encabezados HTTP especifican la dirección del punto final (el URI del último receptor) y la acción que se llevará a cabo. El encabezado Action tiene como objetivo optimizar el envío al revelar el nombre de la operación sin necesidad de analizar el mensaje SOAP en el cuerpo del mensaje HTTP. 
  • El cuerpo HTTP lleva el mensaje SOAP.
Como HTTP es un protocolo síncrono, se usa un mensaje de respuesta SOAP para devolver la respuesta. Si una solicitud SOAP es solo una solicitud de devolución de información, no tiene argumentos y no altera los datos en el servidor, entonces se puede usar el método HTTP GET para llevarla a cabo.


Referencias

  1. Coulouris, George F. Distributed Systems: Concepts and Design. Boston: Addison-Wesley, 2012.
  2. Tanenbaum, Andrew S., and Maarten van Steen. Distributed Systems: Principles and Paradigms. Upper Saddle River, NJ: Pearson Prentice Hall, 2007. 
  3. Thomas Erl, Service Oriented Architecture: Principles of Service Design. The Prentice Hall Service-Oriented Computing Series by Thomas Erl. 2007 
  4. Salas, A., Marquez, A. Arquitectura orientada a Microservicios aplicada a un sistema de Comercio Electrónico. Trabajo de Grado de Pregrado, UNEG. 2017.

No hay comentarios.:

Publicar un comentario