Hoy en día existe una tendencia muy marcada en las empresas por el desarrollo de aplicaciones que trabajen sobre Internet, principalmente por la ventaja de la distribución global de la información. Las tecnologías más usadas para el desarrollo de estas aplicaciones, han sido CORBA, COM y EJB. Cada una de estas tecnologías proporciona un marco de trabajo para la activación de objetos remotos, mediante la solicitud a un servidor de aplicaciones o mediante un servidor Web para la ejecución de servicios de aplicación. Estas tecnologías han probado ser efectivas para el establecimiento de sitios Web corporativos; sin embargo, presentan algunas desventajas como la falta de interoperabilidad, la dependencia a la arquitectura de trabajo, así como el lenguaje de programación.
Esto ha llevado a la industria a considerar un nuevo modelo de computación distribuida de objetos, sin tener la dependencia de plataformas, modelos de desarrollo y lenguajes de programación usados y como una medida de solución nace SOAP(Simple Object Access Protocol) que es una estrategia de desarrollo de aplicaciones distribuidas usando tecnologías diversas adoptada por las diferentes organizaciones del mundo para resolver los problemas de falta de interoperabilidad entre las tecnologías anteriormente mencionadas, tomando como base protocolos ya establecidos y con gran aceptación en Internet, como HTML y XML.
SOAP no es más que un protocolo estándar que permite la comunicación y la interoperabilidad entre diversas aplicaciones Web desarrolladas bajo tecnologías diferentes.
1. HISTORIA DEL PROTOCOLO DE ACCESO A OBJETOS SIMPLES
La evolución tecnológica y búsqueda de soluciones a la computación distribuida no es un problema reciente, es por ello que desde el año 1980 se dieron los inicios en este tema aunque los protocolos de comunicación no era objeto de interés de los desarrolladores en ese momento; realizar aplicaciones que dentro de una misma máquina se comunicaran entre sí, era suficiente.
Posteriormente en el año de 1990 alcanzaron popularidad objetos como COM (Componet Object Model) introducido por Microsoft y CORBA (Common Object Request Broker Architecture) introducido por OMG (Object Management Group).
En general, COM y CORBA son modelos para escribir y encapsular código binario. Estos son componentes que pueden ser fácilmente llamados desde cualquier aplicación que soporte COM o CORBA. Sin embargo estos modelos no son fácilmente interoperables, de tal manera que COM puede solamente llamar a COM, y lo mismo ocurre con CORBA.
Conectar una maquina a otra se transformó en una prioridad cuando las redes locales se generalizaron, fue entonces que OMG estableció IIOP (Internet Inter-ORB Protocol) como el protocolo de comunicación para CORBA. Microsoft creo DCOM (Distributed COM), más tarde Sun Microsystems lanzo al mercado RMI (Remote Method Invocation).
Con estos protocolos se pueden llamar componentes que se encuentren en otras computadoras a través de la red. Estas llamadas se realizan bajo la forma de RPC (Remote Procedure Call). Es necesario aclarar que estos protocolos no son interoperables.
La solución está disponible para tener comunicación entre aplicaciones desde cualquier máquina a cualquier otra sin importar el sistema operativo, entorno de lenguajes, modelos de objetos distribuidos y usando los estándares de Internet.
Para resolver estas dificultades de interoperabilidad se desarrolló SOAP, el cual se dio a conocer en 1999 y fue un resultado de desarrolladores de Microsoft Corp., DevelopMentor Inc. y Userland Software Inc. SOAP 1.1 fue liberada el 8 de Mayo del 2000, por W3C, con la contribución de las siguientes empresas: Ariba Inc., Commerce One Inc., Compaq Computer Corp, Hewlett-Packard Co., IBM Corp., IONA Technologies PLC, Lotus Development Corp., y SAP AG.
Esto fue un buen signo de la industria para aceptar e implementar estándares basados en protocolo interoperables. Actualmente este protocolo esta siendo desarrollado por el XML Protocol Working Group de la W3C, en la versión 1.2.
SOAP (Simple Object Access Protocol, Protocolo Simple de Acceso a Objetos) es un protocolo de mensajes entre computadores. SOAP especifica el formato de mensaje que accede e invoca a los objetos, mas que un objeto en particular.
La idea detrás de SOAP es la misma que RPC. También define un protocolo para llamadas a métodos remotos, sin embargo SOAP contiene:
2.1 OBJETIVOS PRIMORDIALES DE SOAP
a) Establecer un protocolo estándar de invocación de servicios remotos, basado en protocolos estándares de Internet: HTTP (Protocolo de transporte de Hipertexto) para la transmisión y XML (lenguaje de marcado extensible) para la codificación de datos.
b) Independencia de plataforma, lenguaje de desarrollo e implementación (modelo de objetos).
El protocolo de comunicación HTTP es el empleado intrínsecamente para la conexión sobre Internet. Garantiza que cualquier cliente con un navegador estándar pueda conectarse con un servidor remoto. La transmisión de datos se empaqueta con XML, que se ha convertido en el estándar del intercambio de datos, salvando las incompatibilidades entre otros protocolos, tales como el NDR (Network Data Representation) o el CDR (Common Data Representation).
Por otra parte, los servidores Web pueden procesar las peticiones de usuario, empleando las tecnologías de Servlets, paginas ASP (Active Server Pages) o JSP (Java Server Pages), o un servidor de aplicaciones, invocando objetos de tipos CORBA, COM o EJB.
Como SOAP circunscribe información adicional incluida en el documento XML a continuación se presentará la descripción de dicho documento.
2.1.1 Descripción de los componentes básicos de un documento XML
XML esta interesado en describir el contenido de los documentos que están almacenados en un formato electrónico, de forma tal que sea legible y comprensible tanto para las personas como para el software, un archivo en formato XML contiene una mezcla del documento y etiquetas XML, las cuales organizan y definen los componentes del documento.
La clase más simple de documento es un archivo de texto, el archivo es considerado como un flujo de datos, una secuencia lineal de caracteres las cuales son leídas y procesadas por el software en un estricto orden.
En un sistema tradicional, las etiquetas son consideradas como instrucciones que son interpretadas, por ejemplo, para ejecutar cambios en el estilo del tipo de fuente que pueden significar un salto de línea, pero que no deberán aparecer ni estar presentes en el texto.
2.1.2 Estructura de un documento XML
Un documento basado en XML esta formado de dos piezas esencialmente, una estructura lógica y una estructura física, la estructura lógica le permite a un documento dividirse en unidades y sub-unidades llamadas elementos. La estructura física contiene los componentes del documento, llamadas entidades, algunas veces almacenadas separadamente en otros archivos, así que la información puede ser reutilizada, también pueden incluirse por referencia datos que no tiene un formato XML como son las imágenes.
La estructura de un documento XML se puede definir a partir de dos estándares. El primero es la especificación de XML, que define las reglas predeterminadas para la construcción de todos los documentos XML, cualquier documento que se ajuste a las reglas básicas definidas en la especificación se denominan documentos XML bien formados debido a que XML actualmente es un meta-lenguaje (un lenguaje que describe a otros lenguajes), ya que no hay una lista predefinida de elementos, el usuario puede llamar usar sus elementos como desee, sin embargo, el segundo estándar (que es opcional), lo crean los autores del documento y se especifica en una definición de tipo de documento DTD (Document Type Definition), que explica cuales elementos son permitidos en un documento en particular.
XML tiene un alto grado de control sobre la estructura lógica del documento, cada documento puede ser comparado con las reglas de su DTD lo que determina si es valido, cuando el documento XML se ajusta a las reglas definidas en la DTD, se denomina documento XML valido. Los esquemas son similares a los DTD, pero utilizan un formato diferente, los DTD y los esquemas resultan bastante útiles cuando el contenido de un grupo de documentos comparten un conjunto de reglas común y deben ser analizados para determinar su valides.
Un documento XML contiene instrucciones especiales llamadas tags, las cuales usualmente encierran las partes identificables de un documento. SOAP define 3 formas distintas de expresar los tipos de datos de un tag:
Las etiquetas XML no directamente especifican el estilo de presentación, pero en lugar de esto dan nombre a los objetos, estas usualmente ordenan e identifican un objeto en un flujo de datos. Una etiqueta de inicio, una etiqueta de fin, junto con los datos encerrados por estos, componen un elemento; el tag de inicio es delimitado usando los caracteres ‘<’ y ‘>’, el tag de fin es delimitado por los caracteres ‘</’ y ‘>’:
Adicionalmente un elemento XML puede contener elementos embebidos, y todo un documento debe estar encerrado por un solo elemento documento, la estructura jerárquica de un documento puede ser visualizada como una caja dentro de cajas ó como una estructura en árbol.
Los nombres de los elementos son sensibles a minúsculas y mayúsculas, de esta forma ‘descripción’, ‘DESCRIPCION’ y ‘Descripción’, pueden hacer referencia a elementos diferentes, el nombre que aparece en el tag de inicio debe ser exactamente igual con el nombre del tag de finalización para los elementos.
Cada elemento debe estar completamente encerrado por otro elemento, (cualquier documento XML que se componga apropiadamente, es decir que sus elementos estén adecuadamente anidados uno dentro del otro, es determinado un documento XML bien formado), excepto por el elemento padre de todos los elementos (root ó raíz del documento).
Algunas estructuras jerárquicas pueden ser recursivas. Un elemento puede directamente o indirectamente contener instancias de si mismo. En una estructura anidada no hay un limite establecido para el nivel de anidación en los elementos.
Los símbolos ‘<’ y ‘>’ son caracteres que tienen el rol de delimitadores de las marcas para los tags XML, estos no pueden aparecer como datos o caracteres a causa de la ambigüedad y confusión que pueden causar. Por lo tanto será necesario usar una forma de códigos de escape en lugar de estos caracteres, ‘<’ representa al tag de inicio ‘<’ y ‘>’ representa a el tag de fin ‘>’
Es posible para un elemento el contener información acerca de su contenido además de su nombre. Por ejemplo, se desea saber el uso para el cual está destinado determinado equipo de computo, si es un servidor ó un PC de escritorio, esta información es llamada meta-dato, y está almacenada en los atributos, los atributos son un mecanismo para agregar información descriptiva a un elemento, un solo elemento puede contener uno o más atributos.
Para cada atributo es necesario tener una dupla, nombre y valor.
Cuando no se usa un DTD, el valor es simplemente considerado como una unidad de texto, no se hace ninguna distinción entre valores numéricos y caracteres, pero cuando es utilizado un DTD se puede ejercer mayor control sobre el rango de valores permitidos para cada atributo. Un atributo es asociado con un elemento en particular por el DTD, y le es asignado un atributo de tipo ‘character data’ que puede contener valores que consisten de caracteres generales, un atributo de tipo ‘name token’, puede contener solo una palabra simple, no son permitidos los espacios en blanco, los valores de los atributos pueden restringirse desde una palabra a un grupo de palabras en una enumeración, el DTD también puede especificarnos un valor por defecto.
A continuación se muestra un esquema del funcionamiento de SOAP

La especificación SOAP menciona que las aplicaciones deben ser independientes del lenguaje de desarrollo, por lo que las aplicaciones cliente y servidor pueden estar escritas con HTML, DHTML, Java, Visual Basic u otras herramientas y lenguajes disponibles. Lo importante es tener alguna implementación de SOAP (dependiendo de la herramienta de desarrollo elegida) y enlazar sus librerías con la aplicación. Aunque esto no es estrictamente necesario, es preferible trabajar usando dichas librerías, con el fin de no reescribir un código ya probado.
Las peticiones con el uso del protocolo HTTP emplean el comando POST para transmitir información entre el cliente y el servidor.
Por otra parte 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í.
Estos mensajes constan de 3 secciones: envelope, header y body.

Donde:
2.2.1 Modelo de intercambio de mensajes
Una aplicación SOAP debe procesar un mensaje siguiendo un orden de acciones:
También hay que tener en cuenta que este protocolo es extensible.
4. EXTENSIONES AL PROTOCOLO SOAP
SOAP puede ser extendido realizando adiciones de módulos de funcionalidad. Este enfoque permite a los desarrolladores usar los módulos y funcionalidad que ellos necesitan, sin tener la necesidad de implementar la totalidad de estos.
Algunas de las extensiones que pueden ser deseables en los proveedores son las siguientes:
Attachments – La posibilidad de incluir un documento no XML, archivo binario ó de enviar documentos de fax, imágenes de medicina, dibujos de ingeniería, o cualquier otro tipo de imágenes, codificadas en Base64.
Routing/Intermediaries – Relacionadas al proceso de rutear mensajes SOAP a través de intermediarios. Esto ofrece la posibilidad de agregar varios Web Services (WS) y ofrecerlos como parte del paquete, es una manera de hacer a los WS escalables, a través del direccionamiento, incluso hacia múltiples servidores
Security – Dar un marco de seguridad a la comunicación. Algunos de los aspectos podrían ser aplicar SSL, firma digital, etc. XML referent nos ayuda a responder: quien envía el mensaje y si el mensaje fue alterado en la ruta.
Quality of Services – QoS es una medida que puede ser comparada con el número o calificación dada a los ASP o ISP, que mide la calidad del servicio, un concepto similar puede manejarse para los Web Services.
Context/Privacy – Hace referencia a guardar el contexto y privacidad, del entorno de los usuarios. (Platform for Privacy and referentes (P3P)).
Transaction Support – Permitir que un grupo de operaciones o acciones se comporten como si fueran una simple unidad (o todo falla o todo es un éxito).
Message Syntax – el formato tiene un área separada para extensiones que sean adicionadas.
Data – SOAP puede contener cualquier tipo de datos. Provee un método para serialización de datos, pero las aplicaciones pueden definir sus propias reglas.
Transport – No define como son transportados los mensajes durante el intercambio. SOAP muestra como podrían ser intercambiados sobre http, pero cualquier protocolo o método puede sustituir a http.
Purpose – SOAP no define que es lo que hay dentro del mensaje. Hay una diferencia entre los datos y su propósito o finalidad.
5. VENTAJAS DE LA UTILIZACIÓN DE SOAP
Entre las ventajas de SOAP se tiene que:
6. DESVENTAJAS DE UTILIZACION DE SOAP
Entre las desventajas de SOAP se tiene que:
7. ¿POR QUÉ UTILIZAR WEB SERVICES Y SOAP EN LAS EMPRESAS?
Actualmente, los WS están siendo ampliamente aceptados por las empresas para el desarrollo de software de uso interno. Debido a la tecnología que es usada por los WS, y en concreto al uso de SOAP, que permite la cooperación y la interoperabilidad entre empresas que estén desarrollando proyectos en común y en las cuales no estén trabajando sobre la misma plataforma, lenguaje de programación o hardware compatibles.
Para realización de dichos proyectos hay que tener en cuenta los siguientes aspectos:
Los servicios pueden implementar toda su funcionalidad y permanecer seguros tras el Cortafuegos de la compañía. Las técnicas de seguridad convencionales que se han venido usando en Internet, ya no son suficientes. Con SOAP, cada mensaje simple que se intercambia realiza múltiples saltos y es rutado a través de numerosos puntos antes de que alcance su destino final.
Es por ello que los WS necesitan tecnologías que protejan los mensajes desde el principio hasta el final y así permitir que SOAP realice su trabajo de interoperabilidad entre aplicaciones de manera eficiente.
Para ello existen un conjunto de técnicas que se pueden usar para garantizar la seguridad a nivel de mensaje. Estas son:
Los WS proporcionan conectividad con cualquier software de un modo transparente por el paso de mensaje SOAP, cada proveedor de servicios puede adoptar soluciones diferentes que resultan más o menos adecuadas para el consumidor. Analizando la escalabilidad se comprobará el grado de modularidad y flexibilidad del servicio.
Por último, también sería interesante analizar las características que ofrece el proveedor de WS. Actualmente no hay estándares definidos sobre este tema, pero la mayoría de las empresas ya está demandando algún tipo de acuerdo o contrato con los proveedores, de modo que se pueda garantizar la interoperabilidad entre las diferentes tecnologías, la calidad y la fiabilidad de los servicios por los que se paga.
Los WS están basados en el estándar XML, que ha sido universalmente aceptado. SOAP es el único protocolo que ha sido aceptado en este momento por el World Wide Web Consortium y se encuentra estandarizado. SOAP y WSDL están siendo ampliamente usados.
Algunas de las empresas más importantes en el desarrollo de Negocio Electrónico como IBM, Intel, Microsoft u Oracle, han creado el WS-I: organización para la Interoperabilidad de los Web Services. El objetivo de dicha organización es la promoción de la estandarización de los WS de modo que se fomente la cooperación e interoperabilidad entre las compañías y mercados utilizando este protocolo.
Las principales compañías del mundo han empezado a desarrollar soluciones mediante la tecnología de los WS bajo el paso de mensajes SOAP. Algunos ejemplos son:
http://www.revista.unam.mx/vol.3/num1/art3
http://www.microsoft.com/spanish/msdn/articulos/archivo/280901/voices/soapinteropbkgnd.asp
http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art51.asp
http://www.desarrolloweb.com/articulos/1557.php?manual=54
http://es.wikipedia.org/wiki/SOAP
http://pegaso.ls.fi.upm.es/sistemas_dist/temario_sistemas0304.html
DILIA ROSA DUARTE MORENO
ANA LUCIA MENDOZA TAMARA
KERY PAOLA TORRES SOLIS
JOHN FERNANDO VERGARA ARROYO
JHON MENDEZ
INGENIERO DE SISTEMAS
CORPORACIÓN UNIVERSITARIA DEL CARIBE CECAR
FACULTAD DE INGENIERÍAS
PROGRAMA DE INGENIERÍA DE SISTEMAS
SISTEMAS DISTRIBUIDOS
SINCELEJO
2005
Trabajos relacionados
Ver mas trabajos de Computacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo en formato DOC desde el menú superior.