Ir al contenido

Diferencia entre revisiones de «Simple Object Access Protocol»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Página blanqueada
BOTpolicia (discusión · contribs.)
m Robot: Rv. edic. de 200.10.255.182 (disc) a vers. 12515261 de Botones (disc)
Línea 1: Línea 1:
{{endesarrollo|shooke}}
'''SOAP''' (siglas de ''Simple Object Access Protocol'') es un [[protocolo (informática)|protocolo]] [[estándar]] creado por Microsoft, IBM y otros, está actualmente bajo el auspicio de la [[World Wide Web Consortium|W3C]] que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos [[XML]]. SOAP es uno de los protocolos utilizados en los [[servicios Web]].

==Tecnología==
A diferencia de [[DCOM]] y [[CORBA]], que son binarios, SOAP usa el código fuente en XML. Esto es una ventaja ya que facilita su lectura por parte de humanos, pero también es un inconveniente dado que los mensajes resultantes son más largos. El intercambio de mensajes se realiza mediante tecnología de [[componentes de software|componentes]] (''software componentry'', ver [[ingeniería de software]]). El término ''[[objeto (programación orientada a objetos)|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 [[Red_de_ordenador/computador|redes informáticas]]. Los [[RPC|procedimientos de llamadas remotas]] pueden ser modelados en la forma de varios mensajes SOAP interactuando entre sí.

SOAP funciona sobre cualquier protocolo de [[Internet]], generalmente [[HTTP]], que es el único homologado por el [[W3C]]. SOAP tiene como base [[XML]], con un diseño que cumple el [[patrón]] [[Patrón Cabecera-Desarrollo|Cabecera-Desarrollo]] de diseño de software, como otros muchos diseños, verbigracia [[HTML]]. La cabecera ''Header'' es opcional y contiene [[metadatos]] sobre [[enrutamiento]] (''routing''), [[seguridad]] o [[transacción|transacciones]]. El desarrollo ''Body'' contiene la información principal, que se conoce como carga útil (''payload''). La carga útil se acoge a un [[XML Schema]] propio.

==SOAP sobre correo electronico==
Los desarrolladores de aplicaciones pueden utilizar la infraestructura de correo electrónico de Internet para transmitir mensajes SOAP ya sean como mensajes de correo electrónico de texto o como adjuntos. Los ejemplos que se muestran a continuación muestran un modo de transmitir mensajes SOAP, y deben ser tomados como el modo estándar de hacerlo. Las especificaciones SOAP Versión 1.2 no especifican tal vínculo. Sin embargo, existe una Nota W3C no-normativa [SOAP Email Binding] que describe un vínculo de SOAP con el correo electrónico, su propósito principal es comenzar a demostrar la aplicación de la Infraestructura general de Vínculos con el Protocolo SOAP.

El Ejemplo muestra el mensaje de petición de reserva de viaje del Ejemplo 1 transportado como un mensaje de correo electrónico entre un agente de usuario remitente y un agente de usuario destinatario. Se implica que el nodo destinatario tiene capacidad para entender SOAP, por lo que el mensaje de correo electrónico se le envía para su procesamiento. (Se asume que también el nodo remitente puede manejar errores SOAP que pudiera recibir en la respuesta, o correlacionar cualesquiera mensajes SOAP recibidos en respuesta a este.)<br>

;Ejemplo
<pre>
De: a.oyvind@miempresa.example.com
A: reservas@empresaviajes.example.org
Asunto: Viaje a LA
Fecha: Thu, 29 Nov 2001 13:20:00 EST
Message-Id: <EE492E16A090090276D208424960C0C@miempresa.example.com>
Content-Type: application/soap+xml
</pre>
<source lang="xml">
<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header>
<m:reserva xmlns:m="http://empresaviajes.example.org/reserva"
env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
env:mustUnderstand="true">
<m:referencia>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</referencia>
<m:fechaYHora>2001-11-29T13:20:00.000-05:00</m:fechaYHora>
</m:reserva>
<n:pasajero xmlns:n="http://miempresa.example.com/empleados"
env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
env:mustUnderstand="true">
<n:nombre>Åke Jógvan Øyvind</n:nombre>
</n:pasajero >
</env:Header>
<env:Body>
<p:itinerario
xmlns:p="http://empresaviajes.example.org/reserva/viaje">
<p:ida>
<p:salida>Nueva York</p:salida>
<p:llegada>Los Angeles</p:llegada>
<p:fechaSalida>2001-12-14</p:fechaLlegada>
<p:horaSalida>última hora de la tarde</p:horaSalida>
<p:preferenciaAsiento>pasillo</p:preferenciaAsiento>
</p:ida>
<p:vuelta>
<p:salida>Los Angeles</p:salida>
<p:llegada>Nueva York</p:llegada>
<p:fechaSalida>2001-12-20</p:fechaSalida>
<p:horaSalida>media-mañana</p:horaSalida>
<p:preferenciaAsiento/>
</p:vuelta>
</p:itinerario>
<q:alojamiento
xmlns:q="http://empresaviajes.example.org/reserva/hoteles">
<q:preferencia>ninguna</q:preferencia>
</q:alojamiento>
</env:Body>
</env:Envelope>Mensaje SOAP del Ejemplo 1 transportado como un mensaje SMTP
</source>
El encabezado del Ejemplo tiene la forma estándar de [RFC 2822] para mensajes de correo electrónico.

Aunque el correo electrónico es un intercambio de mensajes en un solo sentido, y no se da ninguna garantía de entrega, infraestructuras como la de la especificación Simple Mail Transport Protocol (SMTP) [Protocolo para el Transporte de Correo Simple] [SMTP] ofrecen un mecanismo de notificación de entrega que, en el caso de SMTP, se denominan Delivery Status Notification (DSN) [Notificación de Estado de Entrega] y Message Disposition Notification (MDN) [Notificación de Disposición de Mensaje]. Estas notificaciones toman la forma de mensajes de correo electrónico enviados a la dirección de correo electrónico especificada en el encabezamiento del mensaje de correo. Las aplicaciones, así como los usuarios finales del correo, pueden utilizar estos mecanismos para proporcionar el estado de una transmisión de correo electrónico, pero estos, si se existiesen, serían notificaciones al nivel SMTP. El desarrollador de aplicaciones debe comprender completamente las capacidad y limitaciones de estas notificaciones de entrega o el riesgo de asumir que haya existido una entrega del mensaje con éxito cuando podría no haberse producido.

Los mensajes de estado de entrega SMTP son separados del procesamiento del mensaje en la capa SOAP. Las respuestas SOAP resultantes a los datos SOAP serán devueltas a través de un mensaje de correo electrónico nuevo que podría tener o no un enlace con el mensaje de la petición original al nivel SMTP. El uso del encabezado In-reply-to: [En-respuesta-a] según [RFC 2822] puede conseguir una correlación al nivel SMTP, pero no implica necesariamente una correlación al nivel SOAP.

==Ejemplos de mensajes SOAP==

Como ejemplo se muestra la forma en que un cliente solicitaría información de un producto a un proveedor de servicios Web:

<source lang="xml">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productId>827635</productId>
</getProductDetails>
</soap:Body>
</soap:Envelope>
</source>


Y esta sería la respuesta del proveedor:

<source lang="xml">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getProductDetailsResponse xmlns="http://warehouse.example.com/ws">
<getProductDetailsResult>
<productName>Toptimate 3-Piece Set</productName>
<productId>827635</productId>
<description>3-Piece luggage set. Black Polyester.</description>
<price>96.50</price>
<inStock>true</inStock>
</getProductDetailsResult>
</getProductDetailsResponse>
</soap:Body>
</soap:Envelope>
</source>

HTTP fue elegido como protocolo de transporte por sus ventajas, para lidiar con cortafuegos, por ejemplo. Otros protocolos como GIOP/IIOP o DCOM suelen ser repelidos por estos cortafuegos.

==Referencias==
<div class="references-small" style="-moz-column-count: 2; column-count: 2;">
===Recomendaciones de W3C===
* W3C Recommendation (27 April 2007). ''[http://www.w3.org/TR/2007/REC-soap12-part0-20070427/ SOAP Version 1.2 Part 0: Primer (Second Edition)]''. W3C. (en inglés)
* W3C Recommendation (27 April 2007). ''[http://www.w3.org/TR/2007/REC-soap12-part1-20070427/ SOAP Version 1.2 Part 1: Messaging Framework (Second Edition)]''. W3C. (en inglés)
* W3C Recommendation (27 April 2007). ''[http://www.w3.org/TR/2007/REC-soap12-part2-20070427/ SOAP Version 1.2 Part 2: Adjuncts (Second Edition)]''. W3C. (en inglés)
* W3C Recommendation (27 April 2007). ''[http://www.w3.org/TR/2007/REC-soap12-testcollection-20070427/ SOAP Version 1.2 Specification Assertions and Test Collection (Second Edition)]''. W3C. (en inglés)
* W3C Recommendation (25 January 2005). ''[http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/ SOAP Message Transmission Optimization Mechanism]''. W3C. (en inglés)
* W3C Recommendation (25 January 2005). ''[http://www.w3.org/TR/2005/REC-soap12-rep-20050125/ Resource Representation SOAP Header Block]''. W3C. (en inglés)
===Artículos===
* Joshy Joseph, Software Engineer, IBM Software Group. (01 Feb 2002). ''[http://www.ibm.com/developerworks/webservices/library/ws-soapatt/?open&l=930,t=grws Handling attachments in SOAP]''. IBM. (en inglés)
<references/>
</div>

==Véase también==
{{Portal|Informática}}
*[[XML-RPC]]: protocolo antecesor de SOAP.

==Enlaces externos==
*[http://www.w3.org/2000/xp/Group/ XML Protocol Working Group] W3C Architecture Domain. (en inglés)
*[http://www.w3.org/2000/xp/ XML protocol activity] (en inglés)
*[http://xml.coverpages.org/soap.html Technology Report] (en inglés)
*[http://soap2corba.sourceforge.net/ two-way SOAP to CORBA bridge] (en inglés)
*[http://www.advogato.org/article/464.html Discussion on Web Services technology (SOAP and REST)] (en inglés)

[[Categoría:XML]]
[[Categoría:Bibliotecas y APIs]]
[[Categoría:Internet]]
[[Categoría:Protocolos de Internet]]
[[Categoría:Acrónimos de informática]]
[[Categoría:computación distribuida]]

[[ar:سواب]]
[[bn:সিম্পেল অবজেক্ট এক্সেস প্রোটকল]]
[[ca:SOAP]]
[[cs:Simple Object Access Protocol]]
[[da:SOAP]]
[[de:SOAP]]
[[en:SOAP]]
[[eo:SOAP]]
[[eu:SOAP]]
[[fa:پروتکل دسترسی آسان به اشیاء]]
[[fi:SOAP]]
[[fr:Simple Object Access Protocol]]
[[gl:Simple Object Access Protocol]]
[[he:SOAP]]
[[hu:SOAP]]
[[id:SOAP]]
[[it:SOAP]]
[[ja:SOAP (プロトコル)]]
[[nl:Simple Object Access Protocol]]
[[pl:SOAP]]
[[pt:SOAP]]
[[ru:SOAP]]
[[sv:SOAP]]
[[uk:SOAP]]
[[zh:SOAP]]

Revisión del 00:39 13 nov 2007

SOAP (siglas de Simple Object Access Protocol) es un protocolo estándar creado por Microsoft, IBM y otros, está actualmente bajo el auspicio de la W3C que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. SOAP es uno de los protocolos utilizados en los servicios Web.

Tecnología

A diferencia de DCOM y CORBA, que son binarios, SOAP usa el código fuente en XML. Esto es una ventaja ya que facilita su lectura por parte de humanos, pero también es un inconveniente dado que los mensajes resultantes son más largos. El intercambio de mensajes se realiza mediante tecnología de componentes (software componentry, ver ingeniería de software). 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í.

SOAP funciona sobre cualquier protocolo de Internet, generalmente HTTP, que es el único homologado por el W3C. SOAP tiene como base XML, con un diseño que cumple el patrón Cabecera-Desarrollo de diseño de software, como otros muchos diseños, verbigracia HTML. La cabecera Header es opcional y contiene metadatos sobre enrutamiento (routing), seguridad o transacciones. El desarrollo Body contiene la información principal, que se conoce como carga útil (payload). La carga útil se acoge a un XML Schema propio.

SOAP sobre correo electronico

Los desarrolladores de aplicaciones pueden utilizar la infraestructura de correo electrónico de Internet para transmitir mensajes SOAP ya sean como mensajes de correo electrónico de texto o como adjuntos. Los ejemplos que se muestran a continuación muestran un modo de transmitir mensajes SOAP, y deben ser tomados como el modo estándar de hacerlo. Las especificaciones SOAP Versión 1.2 no especifican tal vínculo. Sin embargo, existe una Nota W3C no-normativa [SOAP Email Binding] que describe un vínculo de SOAP con el correo electrónico, su propósito principal es comenzar a demostrar la aplicación de la Infraestructura general de Vínculos con el Protocolo SOAP.

El Ejemplo muestra el mensaje de petición de reserva de viaje del Ejemplo 1 transportado como un mensaje de correo electrónico entre un agente de usuario remitente y un agente de usuario destinatario. Se implica que el nodo destinatario tiene capacidad para entender SOAP, por lo que el mensaje de correo electrónico se le envía para su procesamiento. (Se asume que también el nodo remitente puede manejar errores SOAP que pudiera recibir en la respuesta, o correlacionar cualesquiera mensajes SOAP recibidos en respuesta a este.)

Ejemplo
De: a.oyvind@miempresa.example.com
A: reservas@empresaviajes.example.org
Asunto: Viaje a LA
Fecha: Thu, 29 Nov 2001 13:20:00 EST
Message-Id: <EE492E16A090090276D208424960C0C@miempresa.example.com>
Content-Type: application/soap+xml
<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
 <env:Header>
  <m:reserva xmlns:m="http://empresaviajes.example.org/reserva" 
      env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
         env:mustUnderstand="true">
   <m:referencia>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</referencia>
   <m:fechaYHora>2001-11-29T13:20:00.000-05:00</m:fechaYHora>
  </m:reserva>
  <n:pasajero xmlns:n="http://miempresa.example.com/empleados"
      env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
         env:mustUnderstand="true">
   <n:nombre>Åke Jógvan Øyvind</n:nombre>
  </n:pasajero >
 </env:Header>
  <env:Body>
  <p:itinerario
    xmlns:p="http://empresaviajes.example.org/reserva/viaje">
   <p:ida>
   <p:salida>Nueva York</p:salida>
   <p:llegada>Los Angeles</p:llegada>
   <p:fechaSalida>2001-12-14</p:fechaLlegada>
   <p:horaSalida>última hora de la tarde</p:horaSalida>
   <p:preferenciaAsiento>pasillo</p:preferenciaAsiento>
   </p:ida>
   <p:vuelta>
     <p:salida>Los Angeles</p:salida>
     <p:llegada>Nueva York</p:llegada>
     <p:fechaSalida>2001-12-20</p:fechaSalida>
     <p:horaSalida>media-mañana</p:horaSalida>
     <p:preferenciaAsiento/>
   </p:vuelta>
  </p:itinerario>
  <q:alojamiento
   xmlns:q="http://empresaviajes.example.org/reserva/hoteles">
   <q:preferencia>ninguna</q:preferencia>
  </q:alojamiento>
 </env:Body>
</env:Envelope>Mensaje SOAP del Ejemplo 1 transportado como un mensaje SMTP

El encabezado del Ejemplo tiene la forma estándar de [RFC 2822] para mensajes de correo electrónico.

Aunque el correo electrónico es un intercambio de mensajes en un solo sentido, y no se da ninguna garantía de entrega, infraestructuras como la de la especificación Simple Mail Transport Protocol (SMTP) [Protocolo para el Transporte de Correo Simple] [SMTP] ofrecen un mecanismo de notificación de entrega que, en el caso de SMTP, se denominan Delivery Status Notification (DSN) [Notificación de Estado de Entrega] y Message Disposition Notification (MDN) [Notificación de Disposición de Mensaje]. Estas notificaciones toman la forma de mensajes de correo electrónico enviados a la dirección de correo electrónico especificada en el encabezamiento del mensaje de correo. Las aplicaciones, así como los usuarios finales del correo, pueden utilizar estos mecanismos para proporcionar el estado de una transmisión de correo electrónico, pero estos, si se existiesen, serían notificaciones al nivel SMTP. El desarrollador de aplicaciones debe comprender completamente las capacidad y limitaciones de estas notificaciones de entrega o el riesgo de asumir que haya existido una entrega del mensaje con éxito cuando podría no haberse producido.

Los mensajes de estado de entrega SMTP son separados del procesamiento del mensaje en la capa SOAP. Las respuestas SOAP resultantes a los datos SOAP serán devueltas a través de un mensaje de correo electrónico nuevo que podría tener o no un enlace con el mensaje de la petición original al nivel SMTP. El uso del encabezado In-reply-to: [En-respuesta-a] según [RFC 2822] puede conseguir una correlación al nivel SMTP, pero no implica necesariamente una correlación al nivel SOAP.

Ejemplos de mensajes SOAP

Como ejemplo se muestra la forma en que un cliente solicitaría información de un producto a un proveedor de servicios Web:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetails xmlns="http://warehouse.example.com/ws">
       <productId>827635</productId>
     </getProductDetails>
   </soap:Body>
</soap:Envelope>


Y esta sería la respuesta del proveedor:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetailsResponse xmlns="http://warehouse.example.com/ws">
       <getProductDetailsResult>
         <productName>Toptimate 3-Piece Set</productName>
         <productId>827635</productId>
         <description>3-Piece luggage set.  Black Polyester.</description>
         <price>96.50</price>
         <inStock>true</inStock>
       </getProductDetailsResult>
     </getProductDetailsResponse>
   </soap:Body>
 </soap:Envelope>

HTTP fue elegido como protocolo de transporte por sus ventajas, para lidiar con cortafuegos, por ejemplo. Otros protocolos como GIOP/IIOP o DCOM suelen ser repelidos por estos cortafuegos.

Referencias

Recomendaciones de W3C

Artículos

Véase también

Enlaces externos