SOAP (anteriormente un acrónimo de Simple Object Access Protocol ) es una especificación de protocolo de mensajería para intercambiar 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 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.
![]() | |
Familia | Protocolo de mensajería |
---|---|
Diseñada por | Dave Winer , Don Box , Bob Atkinson y Mohsen Al-Ghosein |
Apareció por primera vez | Inicialmente como XML-RPC en junio de 1998 |
Lanzamiento estable | 1.2 / 27 de abril de 2007 |
SOAP permite a los desarrolladores invocar procesos que se ejecutan en sistemas operativos dispares (como Windows , macOS y Linux ) para autenticarse, autorizar y comunicarse mediante Extensible Markup Language (XML). Dado que los protocolos web como HTTP están instalados y se ejecutan en todos los sistemas operativos, SOAP permite a los clientes invocar servicios web y recibir respuestas independientemente del idioma y las plataformas.
Caracteristicas
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 a procedimientos
SOAP tiene tres características principales:
- extensibilidad (la seguridad y WS-Addressing se encuentran entre las extensiones en desarrollo)
- neutralidad (SOAP puede operar sobre cualquier protocolo como HTTP , SMTP , TCP , UDP )
- independencia (SOAP permite cualquier modelo de programación )
Como ejemplo de lo que pueden hacer los procedimientos SOAP, una aplicación puede enviar una solicitud SOAP a un servidor que tiene servicios web habilitados, como una base de datos de precios inmobiliarios, con los parámetros para una búsqueda. Luego, el servidor devuelve una respuesta SOAP (un documento en formato XML con los datos resultantes), por ejemplo, precios, ubicación, características. Dado que los datos generados vienen en un formato analizable por máquina estandarizado, la aplicación solicitante puede integrarlos directamente.
La arquitectura SOAP consta de varias capas de especificaciones para:
- formato de mensaje
- Patrones de intercambio de mensajes (MEP)
- enlaces de protocolo de transporte subyacentes
- modelos de procesamiento de mensajes
- extensibilidad del protocolo
SOAP evolucionó como un sucesor de XML-RPC , aunque toma prestada su neutralidad de transporte e interacción del Web Service Addressing [2] y el sobre / encabezado / cuerpo de otros lugares (probablemente de WDDX ). [ cita requerida ]
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 estaban trabajando. [3] La especificación no estuvo disponible hasta que fue enviada al IETF el 13 de septiembre de 1999. [4] [5] Según Don Box, esto se debió a la política dentro de Microsoft. [6] Debido a las dudas de Microsoft, Dave Winer envió XML-RPC en 1998. [7]
El Borrador de Internet enviado no alcanzó el estado 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 nota del W3C el 8 de mayo de 2000. [8] Dado que la versión 1.1 no alcanzó el estado 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.
La especificación SOAP [9] fue mantenida por el XML Protocol Working Group [10] del World Wide Web Consortium hasta que el grupo fue cerrado el 10 de julio de 2009. SOAP originalmente significaba "Simple Object Access Protocol", pero la versión 1.2 del estándar eliminó este acrónimo. [11]
Después de la introducción de SOAP, se convirtió en la capa subyacente de un conjunto más complejo de servicios web , basado en el lenguaje de descripción de servicios web (WSDL), el esquema XML y el descubrimiento e integración de descripciones universales (UDDI). Estos diferentes servicios, especialmente UDDI, han demostrado ser de mucho menos interés, pero su apreciación brinda una comprensión completa del papel esperado de SOAP en comparación con la forma en que los servicios web han evolucionado realmente.
Terminología SOAP
La especificación SOAP se puede definir ampliamente para que consta de los siguientes 3 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 gobiernan el formato y las reglas de procesamiento de la información intercambiada entre un remitente 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 / reenviar, recibir y procesar mensajes SOAP. Son análogos a los nodos de una red.
- Roles de 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 el nodo en el mensaje que recibe. Por ejemplo, un rol " ninguno" significa que ningún nodo procesará el encabezado SOAP de ninguna manera y simplemente transmitirá el mensaje a lo largo de su ruta.
- Enlace de protocolo SOAP
- Un mensaje SOAP debe funcionar junto con otros protocolos para ser transferido a través de una red. Por ejemplo, un mensaje SOAP podría utilizar TCP como protocolo de capa inferior para transferir mensajes. Estos enlaces se definen en el marco de enlace del protocolo SOAP. [13]
- Funciones de SOAP
- SOAP solo proporciona un marco de mensajería. Sin embargo, se puede ampliar para agregar características como confiabilidad, seguridad, etc. Hay reglas que se deben seguir al agregar características al marco SOAP.
- Módulo SOAP
- Una colección de especificaciones con respecto a la semántica del encabezado SOAP para describir cualquier característica nueva que se extiende a SOAP. Un módulo necesita realizar cero o más funciones. SOAP requiere que los módulos se adhieran a las 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 adjunto de un mensaje XML que lo identifica como un mensaje SOAP.
- Bloque de encabezado SOAP
- Un encabezado SOAP puede contener más de uno de estos bloques, cada uno de los cuales es un bloque computacional discreto dentro del encabezado. En general, la información de la función SOAP se utiliza para apuntar a nodos en la ruta. Se dice que un bloque de encabezado está dirigido a un nodo SOAP si el rol SOAP para el bloque de encabezado es el nombre de un rol en el que opera el nodo SOAP. (p. ej., un bloque de encabezado SOAP con el atributo de rol como ultimateReceiver está dirigido solo al nodo de destino que tiene este rol. Un encabezado con un atributo de rol como el siguiente está dirigido a cada intermediario, así como al nodo de destino).
- Encabezado SOAP
- Una colección de uno o más bloques de encabezado destinados 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 encabezado.
- Fallo de SOAP
- En caso de que un nodo SOAP no pueda procesar un mensaje SOAP, agrega la información de falla al elemento de falla SOAP. Este elemento está contenido en el cuerpo de SOAP como un elemento secundario.
Conceptos de emisor y receptor de mensajes
- Remitente de SOAP
- El nodo que transmite un mensaje SOAP.
- Receptor de jabón
- El nodo que recibe un mensaje SOAP. (Podría ser un intermediario o el nodo de destino).
- Ruta del mensaje SOAP
- La ruta que consta de todos los nodos que atravesó el mensaje SOAP para llegar al nodo de destino.
- Remitente SOAP inicial
- Este es el nodo que originó el mensaje SOAP a transmitir. Esta es la raíz de la ruta del mensaje SOAP.
- Intermediario SOAP
- Todos los nodos 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 definitivo.
- Receptor de 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 a él.
Especificación

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 que define los conceptos de características y módulos SOAP [15]
- El marco de enlace de protocolo subyacente SOAP que 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 de SOAP
Un mensaje SOAP es un documento XML normal que contiene los siguientes elementos:
Elemento | Descripción | Requerido |
---|---|---|
Sobre | Identifica el documento XML como un mensaje SOAP. | sí |
Encabezamiento | Contiene información de encabezado. | No |
Cuerpo | Contiene información sobre llamadas y respuestas. | sí |
Culpa | Proporciona información sobre los errores que se produjeron al procesar el mensaje. | No |
Métodos de transporte
Tanto SMTP como HTTP son protocolos de capa de aplicación válidos que se utilizan como transporte para SOAP, pero HTTP ha ganado una aceptación más amplia ya que funciona bien con la infraestructura de Internet actual; específicamente, HTTP funciona bien con firewalls de red . SOAP también se puede usar sobre HTTPS (que es el mismo protocolo que HTTP a nivel de aplicación, pero usa un protocolo de transporte encriptado debajo) con autenticación simple o mutua; este es el método WS-I recomendado para proporcionar seguridad de servicio web como se indica en WS-I Basic Profile 1.1.
Esta es una gran ventaja sobre otros protocolos distribuidos como GIOP / IIOP o DCOM , que normalmente son filtrados por firewalls. 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 derechos de seguridad configurados en las máquinas que requieren conocimiento de los nodos transmisores y receptores. Esto permite que SOAP se acople de manera flexible de una manera que no es posible con DCOM . También existe el estándar SOAP-over-UDP OASIS .
Formato de mensaje
Se eligió XML Information Set como formato de mensaje estándar debido a su uso generalizado por parte de las principales corporaciones y los esfuerzos de desarrollo de código abierto . Normalmente, XML Information Set se serializa como XML . Una amplia variedad de herramientas disponibles gratuitamente facilita significativamente la transición a una implementación basada en SOAP. La sintaxis algo larga de XML puede ser tanto una ventaja como una desventaja. Si bien promueve la legibilidad para los humanos, facilita la detección de errores y evita problemas de interoperabilidad como el orden de bytes ( endianidad ), puede ralentizar la velocidad de procesamiento y puede resultar engorroso. Por ejemplo, CORBA , GIOP , ICE y DCOM utilizan formatos de mensajes binarios mucho más cortos. Por otro lado, hay dispositivos de hardware disponibles para acelerar el procesamiento de mensajes XML . [16] [17] XML binario también se está explorando como un medio para optimizar los requisitos de rendimiento de XML. Los mensajes XML por su naturaleza autodocumentada suelen tener más "gastos generales" (por ejemplo, encabezados, etiquetas anidadas, delimitadores) que los datos reales en contraste con los protocolos anteriores donde los gastos generales solían ser un porcentaje relativamente pequeño del mensaje general.
En la mensajería financiera, se encontró que SOAP da como resultado un mensaje de 2 a 4 veces más grande que los protocolos anteriores FIX (Intercambio de información financiera) y CDR (Representación de datos comunes). [18]
El conjunto de información XML no tiene que ser serializado en XML. Por ejemplo, existen representaciones de conjuntos de información XML CSV y JSON . Tampoco es necesario especificar un marco de transformación genérico. El concepto de enlaces SOAP permite enlaces específicos para una aplicación específica. El inconveniente es que tanto los emisores como los receptores deben admitir este enlace recién definido.
Mensaje de ejemplo (encapsulado en HTTP)
El siguiente mensaje solicita un precio de las acciones de AT&T (símbolo de cotización "T").
POST / InStock HTTP / 1.1 Host : www.example.org Tipo de contenido : aplicación / soap + xml; charset = utf-8 Longitud del contenido : 299 SOAPAction : "http://www.w3.org/2003/05/soap-envelope" xml version = "1.0"?> xmlns: soap = "http://www.w3.org/2003/05/soap-envelope" xmlns: m = "http: //www.example. org " > T
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 a menudo usan HTTP como protocolo de transporte, pero se pueden usar otros protocolos de transporte populares. Por ejemplo, SOAP también se puede utilizar sobre SMTP, JMS [19] [20] y colas de mensajes .
- SOAP, cuando se combina con intercambios de respuesta / publicación HTTP, se conecta fácilmente a través de firewalls y proxies existentes y, en consecuencia, no requiere modificar las infraestructuras de comunicación y computación generalizadas que existen para procesar los intercambios de respuesta / publicación HTTP.
- SOAP tiene a su disposición todas las facilidades de XML, incluida la fácil internacionalización y extensibilidad con espacios de nombres XML.
Desventajas
- Cuando se utiliza 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 para el caso especial de XML con objetos binarios incrustados, se introdujo el Mecanismo de optimización de transmisión de mensajes .
- Cuando se confía en HTTP como protocolo de transporte y no se utiliza el direccionamiento de servicios web o un bus de servicio empresarial , los roles de las partes que interactúan son fijos. Solo una parte (el cliente) puede utilizar los servicios de la otra.
- SOAP es menos "simple" de lo que sugiere el nombre. La verbosidad del protocolo, la velocidad de análisis lenta de XML y la falta de un modelo de interacción estandarizado llevaron al dominio de los servicios que utilizan el protocolo HTTP de manera más directa. Consulte, por ejemplo, REST .
Ver también
- SOAP con archivos adjuntos
- SOAP con API de archivos adjuntos para Java
- SOAP sobre UDP
- Lista de protocolos de servicios web
- Mecanismo de optimización de transmisión de mensajes (MTOM)
- Empaquetado optimizado binario XML (XOP)
- Protocolo de interfaz de usuario extensible (XUP) : un protocolo de interfaz de usuario basado en SOAP
- SOAPjr : un híbrido de SOAP y JSON-RPC
- WebSocket
- Seguridad de los servicios web
Referencias
- ^ 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). pag. 27. ISBN 9780470032596. Consultado el 15 de septiembre de 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).
- ^ "Direccionamiento de servicios web (WS-Addressing)" . www.w3.org . Consultado el 15 de septiembre de 2016 .
- ^ "Entrevista exclusiva de .NET Developer's Journal" Indigo "con Don Box de Microsoft" . Dotnet.sys-con.com . Consultado el 4 de octubre de 2012 .
- ^ "Páginas de portada XML sobre la historia de SOAP" . Coverpages.org . Consultado el 22 de julio de 2003 .
- ^ "SOAP: Protocolo simple de acceso a objetos" . Septiembre de 1999.
- ^ "Don Box sobre la historia de SOAP" . XML.com. 2001-04-04.
- ^ "XML-RPC para principiantes" . 1998-07-14. Archivado desde el original el 12 de octubre de 1999.
- ^ "Nota del W3C sobre el Protocolo simple de acceso a objetos (SOAP) 1.1" . W3C. 2000-05-08.
- ^ "Especificaciones SOAP" . W3C . Consultado el 29 de marzo de 2014 .
- ^ "Grupo de trabajo del protocolo XML W3C" . W3C . Consultado el 29 de marzo de 2014 .
- ^ "SOAP versión 1.2 parte 1: marco de mensajería (segunda edición)" . W3C . 27 de abril de 2007 . Consultado el 15 de junio de 2012 .
Nota: En versiones anteriores de esta especificación, el nombre SOAP era un acrónimo. Este ya no es el caso. (Debajo de la sección 1. Introducción)
- ^ "SOAP versión 1.2 parte 1: marco de mensajería (segunda edición)" . www.w3.org . Consultado el 14 de septiembre de 2016 .
- ^ "Propuesta de marco vinculante" . www.w3.org . Consultado el 14 de septiembre de 2016 .
- ^ "SOAP versión 1.2 parte 1: marco de mensajería (segunda edición)" . www.w3.org . Consultado el 14 de septiembre de 2016 .
- ^ a b c d "SOAP versión 1.2 parte 1: marco de mensajería (segunda edición)" . www.w3.org .
- ^ "IBM Datapower" . 306.ibm.com. 2011-11-30 . Consultado el 4 de octubre de 2012 .
- ^ "IBM Zurich XML Accelerator Engine" (PDF) . Consultado el 4 de octubre de 2012 .
- ^ "Evaluación de SOAP para aplicaciones comerciales de alto rendimiento: sistemas de comercio en tiempo real" . Tenermerx Pty Ltd Universidad de Tecnología, Sydney. 2011-11-30 . Consultado el 14 de marzo de 2013 .
- ^ "SOAP sobre protocolo JMS" . IBM . Consultado el 22 de marzo de 2020 .
- ^ "Preguntas frecuentes sobre SOAP-JMS" . Grupo de trabajo de enlace SOAP-JMS . Consultado el 22 de marzo de 2020 .
Otras lecturas
- Benoît Marchal, " Soapbox: Why I'm using SOAP ", IBM
- Uche Ogbuji, " Tutorial: mensajería XML con SOAP ", Consultor principal, Fourthought, Inc.
enlaces externos
- Página SOAP del W3C
- Especificación SOAP versión 1.2
- Crear mensaje SOAP en Java