Protocolo simple de acceso a objetos (SOAP)

SOAP
SOAP



Protocolo Simple de Acceso a Objetos (SOAP). Es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Este protocolo deriva de un protocolo creado por David Winerenen 1998, llamado XML-RPC. SOAP fue creado por Microsoft, IBM y otros y está actualmente bajo el auspicio de la W3C. Es uno de los protocolos utilizados en los Servicios Web.

Objetivos primordiales de SOAP

  • Establecer un protocolo estándar de invocación de servicios remotos, basado en protocolos estándares de Internet: HTTP (Protocolo de transporte de Hipertexto) para la transmisión y XML (lenguaje de marcado extensible) para la codificación de datos.
  • Independencia de plataforma, lenguaje de desarrollo e implementación (modelo de objetos).

El protocolo de comunicación HTTP es el empleado intrínsecamente para la conexión sobre Internet. Garantiza que cualquier cliente con un navegador estándar pueda conectarse con un servidor remoto. La transmisión de datos se empaqueta con XML, que se ha convertido en el estándar del intercambio de datos, salvando las incompatibilidades entre otros protocolos, tales como el RDR (Representación de Datos en Red) o el RDC (Representación de Datos Comunes).

Por otra parte, los Servidores Web pueden procesar las peticiones de usuario, empleando las tecnologías de Servlets, páginas ASP (Active Server Pages) o JSP (Java Server Pages), o un servidor de aplicaciones, invocando objetos de tipos CORBA, COM o EJB.

Como SOAP circunscribe información adicional incluida en el documento XML a continuación se presentará la descripción de dicho documento.

Algunas ventajas de SOAP

  • No está asociado con ningún lenguaje: los desarrolladores involucrados en nuevos proyectos pueden elegir desarrollar con el último y mejor lenguaje de programación que exista pero los desarrolladores responsables de mantener antiguas aflicciones heredadas podrían no poder hacer esta elección sobre el lenguaje de programación que utilizan. SOAP no especifica una API, por lo que la implementación de la API se deja al lenguaje de programación, como en Java, y la plataforma como ASP.NET.
  • No se encuentra fuertemente asociado a ningún protocolo de transporte: La especificación de SOAP no describe como se deberían asociar los mensajes de SOAP con HTTP. Un mensaje de SOAP no es más que un documento XML, por lo que puede transportarse utilizando cualquier protocolo capaz de transmitir texto.
  • No está atado a ninguna infraestructura de objeto distribuido La mayoría de los sistemas de objetos distribuidos se pueden extender, y ya lo están alguno de ellos para que admitan SOAP.
  • Aprovecha los estándares existentes en la industria: Los principales contribuyentes a la especificación SOAP evitaron, intencionadamente, reinventar las cosas. Optaron por extender los estándares existentes para que coincidieran con sus necesidades. Por ejemplo, SOAP aprovecha XML para la codificación de los mensajes, en lugar de utilizar su propio sistema de tipo que ya están definidas en la especificación esquema de XML. Y como ya se ha mencionado SOAP no define un medio de trasporte de los mensajes; los mensajes de SOAP se pueden asociar a los protocolos de transporte existentes como HTTP y SMTP.
  • Permite la interoperabilidad entre múltiples entornos: SOAP se desarrollo sobre los estándares existentes de la industria, por lo que las aplicaciones que se ejecuten en plataformas con dicho estándares pueden comunicarse mediante mensaje SOAP con aplicaciones que se ejecuten en otras plataformas. Por ejemplo, una aplicación de escritorio que se ejecute en una PC puede comunicarse con una aplicación del back-end ejecutándose en un mainframe capaz de enviar y recibir XML sobre HTTP.

Funcionamiento de SOAP

A continuación se muestra un esquema del funcionamiento de SOAP

Funcionamiento de SOAP.JPG


La especificación SOAP menciona que las aplicaciones deben ser independientes del lenguaje de desarrollo, por lo que las aplicaciones cliente y servidor pueden estar escritas con HTML, DHTML, Java, Visual Basic u otras herramientas y lenguajes disponibles. Lo importante es tener alguna implementación de SOAP (dependiendo de la herramienta de desarrollo elegida) y enlazar sus librerías con la aplicación. Aunque esto no es estrictamente necesario, es preferible trabajar usando dichas librerías, con el fin de no reescribir un código ya probado.
Las peticiones con el uso del protocolo HTTP emplean el comando POST para transmitir información entre el cliente y el servidor.
Por otra parte el término Object en el nombre significa que se adhiere al paradigma de la programación orientada a objetos.
SOAP es un marco extensible y descentralizado que permite trabajar sobre múltiples pilas de protocolos de redes informáticas. Los procedimientos de llamadas remotas pueden ser modelados en la forma de varios mensajes SOAP interactuando entre sí.
Estos mensajes constan de 3 secciones: envelope, header y body.
Donde:
• envelope (envoltura): Es el elemento raíz del mensaje para describir su contenido y la forma de procesarlo.
• header (encabezado): Es la información de identificación del contenido. Un grupo de reglas de codificación para expresar las instancias de tipos de datos definidos por la aplicación.
• body (cuerpo): Es el contenido del mensaje. Una convención para representar las llamadas y las respuestas a procedimientos remotos.

Modelo de intercambio de mensajes

• Los mensajes SOAP son transmisiones unidireccionales desde un emisor a un receptor.
• Se suelen combinar mensajes para implementar patrones, como petición/respuesta.
• Las implementaciones SOAP se pueden optimizar para explotar las características específicas de sistemas de red concretos.

Procesamiento de mensajes

Una aplicación SOAP debe procesar un mensaje siguiendo un orden de acciones:
1. Identificar las partes del mensaje SOAP dirigido a dicha aplicación.
2. Aceptar las partes obligatorias identificadas en el paso 1 y procesarlas de la forma adecuada. De lo contrario, descartar el mensaje.
3. Si la aplicación SOAP no es el destino final del mensaje, quitar todas las partes identificadas en el paso 1 antes de reenviar el mensaje.
También hay que tener en cuenta que este protocolo es extensible.

Fuentes

Protocolo simple de acceso a objetos (SOAP)

SOAP (Simple Object Access Protocol)

Simple Object Access Protocol