miércoles, 1 de septiembre de 2010

SOAP (siglas de Simple Object Access Protocol)

Son las siglas de Simple Object Access Protocol. Este protocolo deriva de un protocolo creado por David Winer, XML-RPC en 1998. En su sitio web, Userland, http://www.userland.com se puede encontrar multitud de documentación acerca de este primer protocolo de comunicación bajo http mediante XML. Con este protocolo se pedían realizar RPC o remote procedure calls, es decir, podíamos bien en cliente o servidor realizar peticiones mediante http a un servidor web. Los mensajes debían tener un formato determinado empleando XML para encapsular los parámetros de la petición. Con el paso del tiempo el proyecto iniciado por David Winer interesó a Importantes multinacionales entre las que se encuentran IBM y Microsoft y de este interés por XML-RPC se desarrollo SOAP."





En el núcleo de los servicios Web se encuentra el protocolo simple de acceso a datos SOAP, que proporciona un mecanismo estándar de empaquetar mensajes. SOAP ha recibido gran atención debido a que facilita una comunicación del estilo RPC entre un cliente y un servidor remoto. Pero existen multitud de protocolos creados para facilitar la comunicación entre aplicaciones, incluyendo RPC de Sum, DCE de Microsoft, RMI de Java y ORPC de CORBA. ¿Por qué se presta tanta atención a SOAP?




Una de las razones principales es que SOAP ha recibido un increíble apoyo por parte de la industria. SOAP es el primer protocolo de su tipo que ha sido aceptado prácticamente por todas las grandes compañías de software del mundo. Compañías que en raras ocasiones cooperan entre sí están ofreciendo su apoyo a este protocolo. Algunas de las mayores Compañías que soportan SOAP son Microsoft, IBM, SUN, Microsystems, SAP y Ariba.






Algunas de las Ventajas de SOAP son:


•No esta asociado con ningún lenguaje: los desarrolladores involucrados en nuevos proyectos pueden elegir desarrollar con el ultimo 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 Microsoft .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.



 
EJEMPLO DE SOAP EN CORREI ELECTRONICO
 
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://www.mouta.com.ar]]"

                             env:role=http://www.w3.org/2003/05/soap-envelope/role/next

                             env:mustUnderstand="true">

                <m:referencia>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m: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:fechaSalida>

                     <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




,.........................................................................................................

No hay comentarios:

Publicar un comentario