Visión General de Servicios Web XML Servicio Web Un servicio Web es una colección de protocolos y estándares empleados para intercambiar datos entre aplicaciones y sistemas. Las aplicaciones, escritas en diversos lenguajes de programación y ejecutándose en distintas plataformas pueden utilizar los servicios Web para intercambiar datos sobre una red de ordenadores como Internet de una forma similar a la comunicación entre procesos en un solo ordenador. En los servicios Web, todos los datos se intercambian se formatean con etiquetas XML.
XML XML es un macro-lenguaje para la creación de lenguajes de propósito especial. Es un subconjunto simplificado del SGML capaz de describir diferentes tipos de datos. El propósito principal del lenguaje XML es el de facilitar la transferencia de datos a través de diferentes plataformas, especialmente las conectadas a Internet. Los lenguajes basados en XML (RDF, RSS, XHTML, o SVG) se describen por si mismos de una manera formal, permitiendo a ciertos programas modificar y validar documentos en estos lenguajes sin saber de antemano su forma. XML es un estándar del W3C. Otros muchos lenguajes están basados en XML como por ejemplo XHTML, MathML, SVG, XUL, RSS y RDF.
¿Cómo nacen los servicios web XML? Debido a la gran masificación de Internet a niveles insospechables y al gran impacto causado por las tecnologías de la información en las ultimas dos décadas del siglo pasado, la manera de hacer negocios y la comunicación entre las personas y las empresas cambió de una manera rotunda. Bajo este contexto se hacía cada vez mayor la necesidad de integrar y compartir información entre distintas plataformas de software y hardware. Las empresas se percataron que era imposible crear una plataforma integrado de forma individual, así que decidieron atacar el problema de raíz. Para esto decidieron que en vez de crear la mejor plataforma integradora, era mejor buscar un leguaje común de intercambio de información aprovechando los estándares existentes en el mercado. Bajo este contexto nacen los Servicios Web basados en XML.
1
Tecnologías Subyacentes SOAP (Simple Object Access Protocol) SOAP es un protocolo que proporciona un mecanismo estándar de empaquetar mensajes. Este protocolo está pensado para el intercambio de información en entornos descentralizados y distribuidos. Usa las tecnologías relacionadas con XML a fin de definir un marco de trabajo extensible para los mensajes. Provee una estructura de mensajes capaz de ser intercambiada sobre una gran cantidad de protocolos de soporte. Este marco ha sido diseñado con el fin de que fuera independiente del cualquier modelo de programación y otras implementaciones de semánticas. Los dos objetivos de diseño principales de SOAP son la simplicidad y la extensibilidad. Para alcanzar estos objetivos, SOAP simplemente elimina de su arquitectura aquellos aspectos que con más frecuencia se encuentra en los sistemas distribuidos. Podemos agregar las características que nosotros queramos simplemente extendiendo la especificación. Ventajas • No esta asociado con ningún lenguaje: los desarrolladores involucrados en nuevos proyectos pueden elegir desarrollar con el último 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. • 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
2
•
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.
Estructura de un mensaje SOAP SOAP proporciona un mecanismo estándar de empaquetar un mensaje. Un mensaje SOAP se compone de un sobre que contiene el cuerpo del mensaje y cualquier información de cabecera que se utiliza para describir le mensaje. A continuación se presenta un ejemplo: <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 <m:fechaYHora>2001-11-29T13:20:00.000-05:00
Åke Jógvan Øyvind <env:Body>
Nueva York Los Angeles 2001-12-14 última hora de la tarde pasillo Los Angeles Nueva York 2001-12-20 media-mañana ninguna
El elemento raíz del documento es el elemento Envelope. El ejemplo contiene dos subelementos, Body y Header. Un ejemplo de SOAP valido también puede
3
contener otros elementos hijo en el sobre. El sobre puede contener un elemento Header opcional que contiene información sobre el mensaje. En el ejemplo anterior, la cabecera contiene dos elementos que describen a quien compuso el mensaje, y posible receptor del mismo. El sobre debe contener un elemento body el elemento body (cuerpo) contiene la carga de datos del mensaje. En el ejemplo el cuerpo contiene una simple cadena de caracteres.
WSDL (Web Service Description Language) WSDL son las siglas de Web Services Description Language, un formato XML que se utiliza para describir servicios Web (algunas personas lo leen como wisdel). La versión 1.0 fue la primera recomendación por parte del W3C y la versión 1.1 no alcanzó nunca tal estatus. La versión 2.0 se convirtió en la recomendación actual por parte de dicha entidad. WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo. Las operaciones y mensajes que soporta se describen en abstracto y se ligan después al protocolo concreto de red y al formato del mensaje. Así, WSDL se usa a menudo en combinación con SOAP y XML Schema. Un programa cliente que se conecta a un servicio web puede leer el WSDL para determinar que funciones están disponibles en el servidor. Los tipos de datos especiales se incluyen en el archivo WSDL en forma de XML Schema. El cliente puede usar SOAP para hacer la llamada a una de las funciones listadas en el WSDL. Estructura de un documento WSDL Un documento WSDL está divido en dos partes claramente diferenciadas: 1. Parte concreta: Es la parte que define el “como” y “donde”. 2. Parte abstracta: Es la parte que define qué hace el servicio a través de los mensajes que envía y recibe.
4
Estructura: • types: Esta etiqueta define las estructuras de datos que se utilizarán para construir los mensajes de petición como de respuesta. Estas estructuras de datos pueden construirse con cualquier lenguaje, pero lo más normal es hacerlo con XML Schema. Este apartado es el más complicado sobre todo cuando tengamos que construir estructuras de datos muy complejas. • message: Describe los mensajes que se van a intercambiar entre el cliente y el Servicio Web. Un mensaje puede estar dividido en varias partes, por ejemplo, si en un mensaje queremos enviar datos y una imagen. • portType: Define el conjunto de operaciones que soporta el Servicio Web. Una operación no es más que un grupo de mensajes que serán intercambiados. Cada operación puede enviar o recibir al menos un mensaje cada vez. En la parte concreta tenemos: •
binding: Describe como formatear los mensajes para interactuar con un Servicio determinado. WSDL no define un estándar para formatear mensajes. Para ello utilizar la extensibilidad para definir como intercambiar los mensajes usando SOAP, HTTP, MIME, etc…
5
•
services: Este elemento indica donde se encuentra el Servicio usando la etiqueta. Cada etiqueta define el formato de los mensajes, y la dirección donde se encuentra el servicio que acepta mensajes en ese formato.
UDDI (Universal Description, Discovery and Integration) UDDI son las siglas del catálogo de negocios de Internet denominado Universal Description, Discovery and Integration. Esta solución basada en estándares permite a las empresas disponer de su propio directorio UDDI(Universal Description, Discovery, and Integration) para uso sobre la intranet o extranet, facilitando el descubrimiento de servicios Web y otros recursos de programación. Los Servicios corporativos UDDI además facilitan a las empresas la creación y puesta en marcha de aplicaciones más fiables e inteligentes. El registro en el catálogo se hace en XML. UDDI es una iniciativa industrial abierta (sufragada por la OASIS) entroncada en el contexto de los servicios Web. El registro de un negocio en UDDI tiene tres partes: 1) Páginas blancas - dirección, contacto y otros identificadores conocidos. 2) Páginas amarillas - categorización industrial basada en taxonomías. 3) Páginas verdes - información técnica sobre los servicios que aportan las propias empresas. UDDI es uno de los estándares básicos de los servicios Web cuyo objetivo es ser accedido por los mensajes SOAP y dar paso a documentos WSDL, en los
6
que se describen los requisitos del protocolo y los formatos del mensaje solicitado para interactuar con los servicios Web del catálogo de registros.
Fuentes de Información https://developer.mozilla.org http://www.w3.org http://en.wikipedia.org/ http://es.wikipedia.org/ http://www.desarrolloweb.com/ http://edgarramirez.wordpress.com http://jmoraless.wordpress.com/
7