Articulo de referencia

JABÓN

SOAP (originalmente un acrónimo de Simple Object Access Protocol ) [ a ] es una especificación de protocolo de mensajería para el intercambio de información estructurada en la i...

SOAP (originalmente un acrónimo de Simple Object Access Protocol ) [ a ] es una especificación de protocolo de mensajería para el intercambio de información estructurada en la implementación de servicios web en redes informáticas . Utiliza XML Information Set para su formato de mensaje y se basa en protocolos de capa de aplicación , con mayor frecuencia el Protocolo de Transferencia de Hipertexto (HTTP), aunque algunos sistemas heredados se comunican a través del Protocolo Simple de Transferencia de Correo (SMTP), para la negociación y transmisión de mensajes.

Características

SOAP proporciona la capa de protocolo de mensajería de una pila de protocolos de servicios web para servicios web. Es un protocolo basado en XML que consta de tres partes:

  • un sobre, que define la estructura del mensaje [ 1 ] y cómo procesarlo
  • un conjunto de reglas de codificación para expresar instancias de tipos de datos definidos por la aplicación
  • una convención para representar llamadas y respuestas de procedimientos

SOAP tiene tres características principales:

  1. Extensibilidad (la seguridad y el WS-Addressing se encuentran entre las extensiones en desarrollo).
  2. neutralidad (SOAP puede operar sobre cualquier protocolo como HTTP , SMTP , TCP , UDP )
  3. independencia (SOAP permite cualquier modelo de programación )

Como ejemplo de las funcionalidades de los procedimientos SOAP, una aplicación puede enviar una solicitud SOAP a un servidor con servicios web habilitados —como una base de datos de precios inmobiliarios— con los parámetros de búsqueda. El servidor devuelve una respuesta SOAP (un documento en formato XML) con los datos resultantes, como precios, ubicación y características. Dado que los datos generados se presentan en un formato estandarizado y legible por máquina, la aplicación solicitante puede integrarlos directamente.

La arquitectura SOAP consta de varias capas de especificaciones para:

SOAP evolucionó como sucesor de XML-RPC , aunque toma prestada su neutralidad de transporte e interacción del direccionamiento de servicios web [ 2 ] y el sobre/encabezado/cuerpo de otro lugar (probablemente de WDDX ).

Historia

SOAP fue diseñado como un protocolo de acceso a objetos y lanzado como XML-RPC en junio de 1998 como parte de Frontier 5.1 por Dave Winer , Don Box , Bob Atkinson y Mohsen Al-Ghosein para Microsoft , donde Atkinson y Al-Ghosein trabajaban. [ 3 ] La especificación no estuvo disponible hasta que se presentó a la IETF el 13 de septiembre de 1999. [ 4 ] [ 5 ] Según Don Box, esto se debió a la política interna de Microsoft. [ 6 ] Debido a la reticencia de Microsoft, Dave Winer lanzó XML-RPC en 1998. [ 7 ]

El borrador de Internet presentado no alcanzó el estatus de RFC y, por lo tanto, no se considera un "estándar web" como tal. La versión 1.1 de la especificación se publicó como una nota del W3C el 8 de mayo de 2000. [ 8 ] Dado que la versión 1.1 no alcanzó el estatus de recomendación del W3C , tampoco puede considerarse un "estándar web". Sin embargo, la versión 1.2 de la especificación se convirtió en una recomendación del W3C el 24 de junio de 2003. SOAP originalmente significaba "Simple Object Access Protocol" (Protocolo simple de acceso a objetos), pero la versión 1.2 del estándar eliminó este acrónimo. [ 9 ]

La especificación SOAP [ 10 ] fue mantenida por el Grupo de Trabajo del Protocolo XML [ 11 ] del Consorcio World Wide Web hasta que el grupo fue cerrado el 10 de julio de 2009.

Tras su introducción, SOAP se convirtió en la capa subyacente de un conjunto más complejo de servicios web , basados ​​en WSDL , XSD y UDDI . Estos servicios, especialmente UDDI, han demostrado ser de mucho menor interés, pero comprenderlos permite entender completamente el papel que se esperaba de SOAP en comparación con la evolución real de los servicios web.

Terminología SOAP

La especificación SOAP puede definirse ampliamente como compuesta por los siguientes tres componentes conceptuales: conceptos de protocolo, conceptos de encapsulación y conceptos de red. [ 12 ]

Conceptos de protocolo

JABÓN
Se trata de un conjunto de reglas que formalizan y rigen el formato y las normas de procesamiento de la información intercambiada entre un emisor SOAP y un receptor SOAP.
nodos SOAP
Se trata de máquinas físicas/lógicas con unidades de procesamiento que se utilizan para transmitir, recibir y procesar mensajes SOAP. Son análogas a los nodos de una red.
Roles SOAP
En la ruta de un mensaje SOAP, todos los nodos asumen un rol específico. El rol del nodo define la acción que realiza sobre el mensaje que recibe. Por ejemplo, un rol " ninguno" significa que ningún nodo procesará el encabezado SOAP y simplemente transmitirá el mensaje a lo largo de su ruta.
Enlace del protocolo SOAP
Un mensaje SOAP necesita funcionar en conjunto con otros protocolos para ser transferido a través de una red. Por ejemplo, un mensaje SOAP podría usar TCP como protocolo de capa inferior para transferir mensajes. Estas vinculaciones se definen en el marco de vinculación del protocolo SOAP. [ 13 ]
Características SOAP
SOAP proporciona únicamente un marco de mensajería. Sin embargo, puede ampliarse para añadir funcionalidades como fiabilidad, seguridad, etc. Existen reglas que deben seguirse al añadir funcionalidades al marco SOAP.
Módulo SOAP
Una colección de especificaciones sobre la semántica del encabezado SOAP para describir cualquier nueva característica que se extienda a SOAP. Un módulo debe implementar cero o más características. SOAP requiere que los módulos se adhieran a reglas prescritas. [ 14 ]

conceptos de encapsulación de datos

Mensaje SOAP
Representa la información que se intercambia entre 2 nodos SOAP.
sobre de jabón
Es el elemento que encapsula un mensaje XML y lo identifica como un mensaje SOAP.
Bloque de encabezado SOAP
Un encabezado SOAP puede contener más de un bloque de este tipo, cada uno de los cuales constituye un bloque computacional independiente dentro del encabezado. En general, la información de rol SOAP se utiliza para definir los nodos de la ruta. Se dice que un bloque de encabezado está dirigido a un nodo SOAP si su rol SOAP coincide con el nombre de un rol que desempeña dicho nodo. (Por ejemplo: un bloque de encabezado SOAP con el atributo de rol " ultimateReceiver" se dirige únicamente al nodo de destino que posee este rol. Un encabezado con el atributo de rol " next" se dirige a cada nodo intermedio, así como al nodo de destino).
Encabezado SOAP
Una colección de uno o más bloques de encabezado dirigidos a cada receptor SOAP.
Cuerpo de jabón
Contiene el cuerpo del mensaje destinado al receptor SOAP. La interpretación y el procesamiento del cuerpo SOAP se definen mediante bloques de cabecera.
Error de SOAP
En caso de que un nodo SOAP no pueda procesar un mensaje SOAP, agrega la información de error al elemento de error SOAP. Este elemento se encuentra dentro del cuerpo SOAP como un elemento secundario.

Conceptos de emisor y receptor de mensajes

Remitente SOAP
El nodo que transmite un mensaje SOAP.
Receptor SOAP
El nodo que recibe un mensaje SOAP. (Podría ser un nodo intermediario o el nodo de destino).
Ruta del mensaje SOAP
La ruta que comprende todos los nodos que el mensaje SOAP recorrió para llegar al nodo de destino.
Remitente SOAP inicial
Este es el nodo que originó el mensaje SOAP que se va a transmitir. Esta es la raíz de la ruta del mensaje SOAP.
intermediario SOAP
Todos los nodos intermedios entre el originador SOAP y el destino SOAP previsto. Procesa los bloques de encabezado SOAP dirigidos a él y actúa para reenviar un mensaje SOAP hacia un receptor SOAP final.
Receptor SOAP definitivo
El receptor de destino del mensaje SOAP. Este nodo es responsable de procesar el cuerpo del mensaje y cualquier bloque de encabezado dirigido al mismo.

Especificación

Estructura SOAP

La especificación SOAP define el marco de mensajería, que consta de:

  • El modelo de procesamiento SOAP , que define las reglas para procesar un mensaje SOAP [ 15 ]
  • El modelo de extensibilidad SOAP define los conceptos de características SOAP y módulos SOAP [ 15 ].
  • El marco de enlace del protocolo subyacente SOAP describe las reglas para definir un enlace a un protocolo subyacente que se puede utilizar para intercambiar mensajes SOAP entre nodos SOAP [ 15 ].
  • La construcción del mensaje SOAP que define la estructura de un mensaje SOAP [ 15 ]

bloques de construcción SOAP

Un mensaje SOAP es un documento XML ordinario que contiene los siguientes elementos:

Métodos de transporte

Tanto SMTP como HTTP son protocolos válidos de capa de aplicación que se utilizan como transporte para SOAP, pero HTTP ha ganado mayor aceptación, ya que funciona bien con la infraestructura de internet actual; en concreto, HTTP funciona bien con los cortafuegos de red . SOAP también se puede utilizar sobre HTTPS (que es el mismo protocolo que HTTP a nivel de aplicación, pero utiliza un protocolo de transporte cifrado subyacente) con autenticación simple o mutua; este es el método recomendado por WS-I para proporcionar seguridad a los servicios web, tal como se indica en el Perfil Básico 1.1 de WS-I .

Esto supone una gran ventaja sobre otros protocolos distribuidos como GIOP/IIOP o DCOM , que normalmente son filtrados por cortafuegos. SOAP sobre AMQP es otra posibilidad que admiten algunas implementaciones. SOAP también tiene la ventaja sobre DCOM de que no se ve afectado por los permisos de seguridad configurados en las máquinas que requieren conocimiento tanto de los nodos transmisores como de los receptores. Esto permite que SOAP tenga un acoplamiento flexible, algo imposible con DCOM . También existe el estándar OASIS para SOAP sobre UDP .

Formato del mensaje

XML Information Set was chosen as the standard message format because of its widespread use by major corporations and open source development efforts. Typically, XML Information Set is serialized as XML. A wide variety of freely available tools significantly eases the transition to a SOAP-based implementation. The somewhat lengthy syntax of XML can be both a benefit and a drawback. While it facilitates error detection and avoids interoperability problems such as byte-order (endianness), it can slow processing speed and can be cumbersome. For example, CORBA, GIOP, ICE, and DCOM use much shorter, binary message formats. On the other hand, hardware appliances are available to accelerate processing of XML messages.[16][17]Binary XML is also being explored as a means for streamlining the throughput requirements of XML. XML messages by their self-documenting nature usually have more 'overhead' (e.g., headers, nested tags, delimiters) than actual data in contrast to earlier protocols where the overhead was usually a relatively small percentage of the overall message.

In financial messaging SOAP was found to result in a 24 times larger message than previous protocols FIX (Financial Information Exchange) and CDR (Common Data Representation).[18]

XML Information Set does not have to be serialized in XML. For instance, CSV and JSON XML-infoset representations exist. There is also no need to specify a generic transformation framework. The concept of SOAP bindings allows for specific bindings for a specific application. The drawback is that both the senders and receivers have to support this newly defined binding.

Example message (encapsulated in HTTP)

The message below requests a stock price for AT&T (stock ticker symbol "T").

POST/InStockHTTP/1.1Host:www.example.orgContent-Type:application/soap+xml; charset=utf-8Content-Length:299SOAPAction:"http://www.w3.org/2003/05/soap-envelope"<?xml version="1.0"?> <soap:Envelope xmlns:soap= "http://www.w3.org/2003/05/soap-envelope" xmlns:m= "http://www.example.org" > <soap:Header> </soap:Header> <soap:Body> <m:GetStockPrice> <m:StockName> T </m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope>

Crítica técnica

Ventajas

  • La característica de neutralidad de SOAP lo hace explícitamente adecuado para su uso con cualquier protocolo de transporte. Las implementaciones suelen usar HTTP como protocolo de transporte, pero se pueden usar otros protocolos de transporte populares. Por ejemplo, SOAP también se puede usar sobre SMTP, [ 19 ] JMS [ 20 ] [ 21 ] y colas de mensajes .
  • SOAP, al combinarse con los intercambios HTTP de publicación/respuesta, atraviesa fácilmente los cortafuegos y proxies existentes y, en consecuencia, no requiere modificar las infraestructuras informáticas y de comunicación generalizadas que existen para procesar los intercambios HTTP de publicación/respuesta.
  • SOAP dispone de todas las funcionalidades de XML, incluyendo una fácil internacionalización y extensibilidad mediante espacios de nombres XML.

Desventajas

  • Al utilizar la implementación estándar y el enlace SOAP/HTTP predeterminado, el conjunto de información XML se serializa como XML. Para mejorar el rendimiento en el caso especial de XML con objetos binarios incrustados, se introdujo el Mecanismo de Optimización de la Transmisión de Mensajes .
  • Cuando se utiliza HTTP como protocolo de transporte y no se emplea el direccionamiento de servicios web ni un bus de servicios empresariales , los roles de las partes que interactúan son fijos. Solo una de las partes (el cliente) puede utilizar los servicios de la otra.
  • SOAP es menos "simple" de lo que su nombre sugiere. La verbosidad del protocolo, la baja velocidad de análisis de XML y la falta de un modelo de interacción estandarizado propiciaron el predominio de los servicios que utilizan el protocolo HTTP de forma más directa. Véase, por ejemplo, REST .
  • Al ser independiente del protocolo, SOAP no puede aprovechar las características y optimizaciones específicas del protocolo, como la interfaz uniforme de REST o el almacenamiento en caché , sino que tiene que reimplementarlas (como ocurre con WS-Addressing ).

Véase también

Notas

  1. Desde la versión 1.2 de la especificación, ya no es un acrónimo de Protocolo Simple de Acceso a Objetos

Referencias

  1. Hirsch, Frederick; Kemp, John; Ilkka, Jani (11 de enero de 2007). Servicios web móviles: arquitectura e implementación . John Wiley & Sons (publicado en 2007). pág. 27. ISBN  9780470032596. Consultado el 15/09/2014 . El Protocolo Simple de Acceso a Objetos (SOAP) define una estructura de sobre de mensajería diseñada para transportar la carga útil de la aplicación en una parte del sobre (el cuerpo del mensaje) y la información de control en otra (el encabezado del mensaje).
  2. "Web Services Addressing (WS-Addressing)" . www.w3.org . Archivado del original el 25 de septiembre de 2016. Consultado el 15 de septiembre de 2016 .
  3. "Entrevista exclusiva de .NET Developer's Journal "Indigo" con Don Box de Microsoft" . Dotnet.sys-con.com. Archivado del original el 6 de enero de 2019. Consultado el 4 de octubre de 2012 .
  4. "Páginas de portada XML sobre la historia de SOAP" . Coverpages.org. Archivado del original el 3 de marzo de 2001. Consultado el 22 de julio de 2003 .
  5. "SOAP: Protocolo simple de acceso a objetos" . Ietf Datatracker . Septiembre de 1999. Archivado del original el 25 de febrero de 2021. Consultado el 20 de septiembre de 2015 .
  6. "Don Box sobre la historia de SOAP" . XML.com. 4 de abril de 2001. Archivado del original el 18 de junio de 2015. Consultado el 20 de septiembre de 2015 .
  7. "XML-RPC para principiantes" . 14 de julio de 1998. Archivado del original el 12 de octubre de 1999.
  8. "Nota del W3C sobre el Protocolo Simple de Acceso a Objetos (SOAP) 1.1" . W3C. 8 de mayo de 2000. Archivado del original el 4 de marzo de 2021. Consultado el 20 de septiembre de 2015 .
  9. "SOAP Versión 1.2 Parte 1: Marco de Mensajería (Segunda Edición)" . W3C . 27 de abril de 2007. Archivado del original el 19 de junio de 2012. Consultado el 15 de junio de 2012. Nota : En versiones anteriores de esta especificación, el nombre SOAP era un acrónimo. Esto ya no es así. (Debajo de la sección 1. Introducción)
  10. "Especificaciones SOAP" . W3C. Archivado del original el 15 de abril de 2021. Consultado el 29 de marzo de 2014 .
  11. "Grupo de trabajo del protocolo XML del W3C" . W3C. Archivado del original el 25/12/2018 . Consultado el 29/03/2014 .
  12. "SOAP Versión 1.2 Parte 1: Marco de mensajería (Segunda edición)" . www.w3.org . Archivado del original el 20 de septiembre de 2016. Consultado el 14 de septiembre de 2016 .
  13. "Propuesta de marco vinculante" . www.w3.org . Archivado del original el 11 de julio de 2017. Consultado el 14 de septiembre de 2016 .
  14. "SOAP Versión 1.2 Parte 1: Marco de mensajería (Segunda edición)" . www.w3.org . Archivado del original el 20 de septiembre de 2016. Consultado el 14 de septiembre de 2016 .
  15. 1 2 3 4 "SOAP Versión 1.2 Parte 1: Marco de mensajería (Segunda edición)" . www.w3.org . Archivado del original el 2 de abril de 2017. Consultado el 24 de junio de 2020 .
  16. "IBM Datapower" . 306.ibm.com. 30 de noviembre de 2011. Archivado del original el 22 de junio de 2008. Consultado el 4 de octubre de 2012 .
  17. "IBM Zurich XML Accelerator Engine" (PDF) . Archivado del original (PDF) el 30/09/2012 . Consultado el 04/10/2012 .
  18. "Evaluación de SOAP para aplicaciones empresariales de alto rendimiento: sistemas de negociación en tiempo real" . Tenermerx Pty Ltd, Universidad Tecnológica de Sídney. 30 de noviembre de 2011. Archivado del original el 10 de agosto de 2013. Consultado el 14 de marzo de 2013 .
  19. Jonathan Chawke (9 de marzo de 2001). "Realización de invocaciones SOAP de Apache mediante SMTP" . Preguntas frecuentes del usuario de Apache-SOAP .
  20. "SOAP sobre protocolo JMS" . IBM. Archivado del original el 22 de marzo de 2020. Recuperado el 22 de marzo de 2020 .
  21. "Preguntas frecuentes sobre SOAP-JMS" . Grupo de trabajo de enlace SOAP-JMS. Archivado del original el 17 de julio de 2017. Consultado el 22 de marzo de 2020 .

Lecturas adicionales

  • Marchal, Benoît (1 de febrero de 2001). "Soapbox: Por qué uso SOAP" . IBM Developer Works . Archivado del original el 19 de agosto de 2007.
  • Box, Don (2000). "Guía para jóvenes sobre el Protocolo Simple de Acceso a Objetos: SOAP aumenta la interoperabilidad entre plataformas y lenguajes" . Revista MSDN . Microsoft.
  • Ogbuji, Uche (13 de marzo de 2001). "Tutorial: Mensajería XML con SOAP" . IBM Developer Works . Archivado del original el 3 de febrero de 2006.
  • Página SOAP del W3C
  • Especificación SOAP versión 1.2
  • Crear un mensaje SOAP en Java