stringtranslate.com

JABÓN

SOAP (anteriormente acrónimo de Simple Object Access Protocol ) 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 un conjunto de información XML para su formato de mensaje y se basa en protocolos de capa de aplicación , generalmente 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.

SOAP permite a los desarrolladores invocar procesos que se ejecutan en diferentes sistemas operativos (como Windows , macOS y Linux ) para autenticar, autorizar y comunicarse mediante el lenguaje de marcado extensible (XML). Dado que los protocolos web como HTTP están instalados y ejecutándose en prácticamente todos los sistemas operativos, SOAP permite a los clientes invocar servicios web y recibir respuestas independientemente del idioma y las plataformas.

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:

SOAP tiene tres características principales:

  1. extensibilidad (la seguridad y 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 lo que pueden hacer los procedimientos SOAP, una aplicación puede enviar una solicitud SOAP a un servidor que tenga habilitados servicios web (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 con formato XML) con los datos resultantes, por ejemplo, precios, ubicación, características. Dado que los datos generados vienen en un formato estandarizado analizable 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 otros lugares (probablemente de WDDX ). [ cita necesaria ]

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 trabajaban Atkinson y Al-Ghosein. [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 políticas dentro de Microsoft. [6] Debido a las dudas de Microsoft, Dave Winer lanzó XML-RPC en 1998. [7]

El borrador de Internet presentado no alcanzó el estado 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 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. SOAP originalmente significaba "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 se cerró el 10 de julio de 2009.

Después de que SOAP se introdujo por primera vez, se convirtió en la capa subyacente de un conjunto más complejo de servicios web , basados ​​en WSDL , XSD y UDDI . Estos diferentes servicios, especialmente UDDI, han demostrado ser de mucho menos interés, pero una apreciación de ellos proporciona una comprensión completa del papel esperado de SOAP en comparación con cómo han evolucionado realmente los servicios web.

Terminología de jabón

La especificación SOAP se puede definir en términos generales como si consta de 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 reglas de procesamiento de la información intercambiada entre un remitente SOAP y un receptor SOAP.
Nodos de jabón
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 jabón
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 sobre 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 del protocolo SOAP
Un mensaje SOAP debe funcionar junto con otros protocolos para transferirse 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 jabón
SOAP proporciona únicamente 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 de jabón
Una colección de especificaciones sobre la semántica del encabezado SOAP para describir cualquier característica nueva que se amplíe a SOAP. Un módulo necesita tener cero o más funciones. SOAP requiere que los módulos cumplan con las reglas prescritas. [14]

Conceptos de encapsulación de datos

mensaje de jabón
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, siendo cada uno de ellos un bloque computacional discreto dentro del encabezado. En general, la información del rol SOAP se utiliza para apuntar a nodos en la ruta. Se dice que un bloque de encabezado está dirigido a un nodo SOAP si la función SOAP para el bloque de encabezado es el nombre de una función en la que opera el nodo SOAP. (por ejemplo: un bloque de encabezado SOAP con un 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 de jabón
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 encabezado.
falla de jabón
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 está contenido dentro del cuerpo SOAP como elemento secundario.

Conceptos de remitente y receptor de mensajes

remitente de jabón
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 que se transmitirá. Esta es la raíz de la ruta del mensaje SOAP.
intermediario de jabón
Todos los nodos entre el originador SOAP y el destino SOAP previsto. Procesa los bloques de encabezado SOAP destinados 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 a él.

Especificación

estructura de jabón

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

Bloques de construcción de jabón

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

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 mayor aceptación ya que funciona bien con la infraestructura de Internet actual; Específicamente, HTTP funciona bien con firewalls de red . SOAP también se puede utilizar a través de HTTPS (que es el mismo protocolo que HTTP a nivel de aplicación, pero utiliza un protocolo de transporte cifrado debajo) con autenticación simple o mutua; este es el método recomendado por WS-I para proporcionar seguridad de servicios web como se indica en el perfil básico de WS-I 1.1.

Esta es una gran ventaja sobre otros protocolos distribuidos como GIOP/IIOP o DCOM , que normalmente están filtrados por firewalls. SOAP sobre AMQP es otra posibilidad más 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 libremente 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, el conjunto de información XML 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 un inconveniente. Si bien facilita la detección de errores y evita problemas de interoperabilidad como el orden de bytes ( endianidad ), puede ralentizar la velocidad de procesamiento y 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 datos reales, en contraste con los protocolos anteriores donde los gastos generales eran normalmente un porcentaje relativamente pequeño del mensaje total.

En la mensajería financiera, se descubrió que SOAP genera 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 estar 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 remitentes como los receptores deben admitir este enlace recién definido.

Mensaje de ejemplo (encapsulado en HTTP)

El siguiente mensaje solicita el precio de las acciones de AT&T (símbolo bursátil "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"?> <soap:Soap 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> </ jabón:Sobre>         

Crítica técnica

Ventajas

Desventajas

Ver también

Referencias

  1. ^ Hirsch, Federico; Kemp, Juan; 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 controlar la información en otra (el encabezado del mensaje).
  2. ^ "Direccionamiento de servicios web (direccionamiento WS)". www.w3.org . Archivado desde el 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 desde el original el 6 de enero de 2019 . Consultado el 4 de octubre de 2012 .
  4. ^ "Portadas XML sobre la historia de SOAP". Portadas.org. Archivado desde el original el 3 de marzo de 2001 . Consultado el 22 de julio de 2003 .
  5. ^ "SOAP: protocolo simple de acceso a objetos". Rastreador de datos del IETF . Septiembre de 1999. Archivado desde el original el 25 de febrero de 2021 . Consultado el 20 de septiembre de 2015 .
  6. ^ "Don Box sobre la historia de SOAP". XML.com. 2001-04-04. Archivado desde el 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 desde el original el 12 de octubre de 1999.
  8. ^ "Nota del W3C sobre el protocolo simple de acceso a objetos (SOAP) 1.1". W3C. 2000-05-08. Archivado desde el 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 desde el 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. Este ya no es el caso. (Debajo de la sección 1. Introducción)
  10. ^ "Especificaciones de SOAP". W3C. Archivado desde el 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 desde el original el 25 de diciembre de 2018 . Consultado el 29 de marzo de 2014 .
  12. ^ "SOAP Versión 1.2 Parte 1: Marco de mensajería (segunda edición)". www.w3.org . Archivado desde el original el 20 de septiembre de 2016 . Consultado el 14 de septiembre de 2016 .
  13. ^ "Propuesta de marco vinculante". www.w3.org . Archivado desde el 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 desde el original el 20 de septiembre de 2016 . Consultado el 14 de septiembre de 2016 .
  15. ^ abcd "SOAP Versión 1.2 Parte 1: Marco de mensajería (segunda edición)". www.w3.org . Archivado desde el original el 2 de abril de 2017 . Consultado el 24 de junio de 2020 .
  16. ^ "Poder de datos de IBM". 306.ibm.com. 30 de noviembre de 2011. Archivado desde el original el 22 de junio de 2008 . Consultado el 4 de octubre de 2012 .
  17. ^ "Motor acelerador XML de IBM Zurich" (PDF) . Archivado desde el original (PDF) el 30 de septiembre de 2012 . Consultado el 4 de octubre de 2012 .
  18. ^ "Evaluación de SOAP para aplicaciones comerciales de alto rendimiento: sistemas comerciales en tiempo real". Tenermerx Pty Ltd Universidad Tecnológica de Sydney. 30 de noviembre de 2011. Archivado desde el original el 10 de agosto de 2013 . Consultado el 14 de marzo de 2013 .
  19. ^ "SOAP sobre protocolo JMS". IBM. Archivado desde el original el 22 de marzo de 2020 . Consultado el 22 de marzo de 2020 .
  20. ^ "Preguntas frecuentes sobre SOAP-JMS". Grupo de trabajo vinculante SOAP-JMS. Archivado desde el original el 17 de julio de 2017 . Consultado el 22 de marzo de 2020 .

Otras lecturas

enlaces externos