Servicios Web Pablo Peris Soler Noemí Belenguer Navarro Facultad de Informática - Universidad Politécnica de Valencia Introducción Hoy en día, con la revolución de la tecnología de la información que ha tenido lugar en los último años, los usuarios deben cambiar para adaptarse a la tecnología, cuando en realidad es la tecnología la que debería adaptarse a ellos. Los usuarios no controlan la tecnología que los rodea. Si intentamos centrar el estado actual del desarrollo de aplicaciones basadas en web, podemos encontrar una gran cantidad de tecnologías, muchas de ellas incompatibles entre sí. Internet se ha convertido en una herramienta de trabajo habitual, pero actualmente no es más que una fuente de datos y no de servicios dirigidos a facilitar el trabajo del usuario. Los servicios que ofrecen las nuevas tecnologías deberían cooperar para beneficio de los usuarios. Los sitios web aislados y los diferentes dispositivos deberían trabajar juntos para ofrecer soluciones mucho más valiosas. Se trata de ofrecer a través de Internet no sólo datos, sino también software y servicios que puedan ser fácilmente accesibles, servicios que integren y busquen la información que necesitamos, pudiendo acceder a esta información en cualquier momento y desde cualquier dispositivo. Un concepto clave para solucionar estos problemas es el servicio web. Los servicios web se proponen como una alternativa para facilitar la intercomunicación entre diferentes arquitecturas de componentes, ofreciendo una visión de dichas arquitecturas basada en servicios. Internet está evolucionando rápidamente desde los sitios web actuales, que simplemente proporcionan páginas de interfaz de usuario a través de exploradores, a una futura generación de sitios web programables que establecen vínculos directamente con organizaciones, aplicaciones, servicios y dispositivos entre sí. ¿Qué es un servicio Web? 1 Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia No existe una definición única de servicio web ya que cada compañía involucrada en el desarrollo de infraestructura de servicio web da su propia definición. Desde un punto de vista general, un servicio web es una componente de software independiente de plataforma e implementación, que lleva a cabo un servicio concreto y que puede integrarse con otros servicios web para dar un servicio diferente. Esta componente de software podrá ser: descrita usando un lenguaje de descripción de servicio. publicada en un registro de servicios. descubierta a través de un mecanismo estándar. invocada a través de un API declarado (usualmente sobre una red) compuesta con otros servicios. Se trata de un recurso residente en la web, con una dirección URL accesible y que devuelve información al cliente que quiera utilizarlo, pero los detalles de implementación y despliegue del servicio web no son relevantes para el programa que invoca el servicio. El concepto de servicio web se apoya en los estándares HTML y XML. El desarrollador puede crear programas accesibles desde cualquier dispositivo que soporte estos estándares, aprovechando la conectividad de Internet. Se pueden crear servicios accesibles desde Internet que realmente proporcionen una utilidad real. Por ejemplo, imaginemos que ciertas compañías proporcionan una serie de servicios simples, una alquila coches, otra reserva aviones y otra reserva hoteles; un desarrollador de aplicaciones web podría tratar estos servicios como cajas negras para construir un servicio web que organice unas vacaciones a cualquier usuario que lo requiera. Los servicios Web no necesariamente han de existir en la red. Un servicio puede existir en una Intranet, en el Internet; algunos servicios incluso pueden ser invocados desde un proceso de un mismo sistema operativo. Arquitectura orientada a servicios 2 Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia La arquitectura orientada a servicios (SOA Service Oriented Architecture) es un concepto que aparece en una variedad de servicios Web. Contiene tres actores: Un solicitante de servicio. Es responsable de encontrar una descripción de servicio publicada en uno o más registros de servicios, y de utilizar las descripciones de servicio para invocar los servicios web hospedados por los proveedores de servicios. Un proveedor de servicio. Es responsable de crear una descripción de servicio, publicando la descripción del servicio en uno o más registros de servicio, y recibir mensajes de invocación de servicios web de uno o más solicitantes de servicio. Un registro de servicios. Es responsable de anunciar descripciones de servicios web publicados por los proveedores de servicio y permitir a los solicitantes de servicio buscar en la colección de descripción de servicios contenidos en el registro. Una vez encontrada la información, el resto de la interacción se da directamente entre el solicitante del servicio y el proveedor. Los servicios web se auto-describen y auto-exponen, permitiendo a los consumidores (aplicaciones clientes) localizarlos en Internet, para ser invocados y escuchados sobre protocolos estándar. Operaciones de Servicios Web: 3 Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia Publicar/Cancelar. Los proveedores de servicios publican (publicitan) la disponibilidad de su servicio comercial (e-business) a uno o más Registros de servicios, o cancelan la publicación de su servicio. Búsqueda. Los solicitantes de servicios interactúan con uno o más Registros de servicios para descubrir un conjunto de servicios comerciales con los que pueden interactuar para encontrar una solución. Ligar, Unir (Bind). Los solicitantes de servicios negocian con los proveedores de servicios para acceder e invocar servicios comerciales (ebusiness) Estándares de los Servicios Web Los servicios Web se registran y anuncian utilizando los siguientes servicios y protocolos. Mucho de estos estándares y otros están siendo desarrollados en el proyecto UDDI, un consorcio de industrias que coordina los esfuerzos de diseño y creación. XML (eXtensible Markup Language), inició en Febrero de 1998 y ha revolucionado la forma en que estructuramos, describimos e intercambiamos información. Independientemente de múltiples formas en que utiliza hoy en día el XML, todas las tecnologías de servicios Web se basan en XML. El diseño de XML se deriva de dos fuentes principales: SGML (Standard Generalized Markup Language) y de HTML (HyperText Markup Language). UDDI (Universal Description, Discovery and Integration), es un protocolo para describir los componentes disponibles de servicios Web. Este estándar permite a las empresas registrarse en un tipo de directorio sección amarilla de Internet que les ayuda anunciar sus servicios, de tal forma que las compañías se puedan encontrarse unas a otras y realizar transacciones en el Web. El proceso de registro y consultas se realiza utilizando mecanismos basados en XML y HTTP(S). En el proyecto UDDI se trabaja para proveer un método de acceso común a los metadatos necesarios para determinar su un elemento de código previamente elaborado es suficiente, y si lo es, cómo accederlo. SOAP (Simple Object Access Protocol) es un protocolo para iniciar las conversaciones con un servicio UDDI. El SOAP simplifica el acceso a los objetos, permitiendo a las aplicaciones invocar métodos objeto o funciones, que residen en sistemas remotos. Una aplicación SOAP crea una petición 4 Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia bloque en XML, proporcionando los datos necesarios para el método remoto así como la ubicación misma del objeto remoto. WSDL (Web Service Description Language), es el estándar propuesto para la descripción de los servicios Web, el cual consiste en un lenguaje de definición de interfaz (IDL - Interface Definition Language) de servicio basado en XML, que define la interfaz de servicio y sus características de implementación. El WSDL es apuntado en los registros UDDI y describe los mensajes SOAP que definen un servicio Web en particular. Estándares de los Servicios Web Ventajas de los Servicios Web Interoperabilidad. Nuevas relaciones pueden ser construidas dinámicamente y automáticamente ya que los servicios web aseguran una interoperabilidad completa entre sistemas. Cualquier servicio web puede interactuar con cualquier servicio web o cliente, gracias a que la comunicación entre ambos se lleva a cabo en XML vía Internet (HTTP). Un servicio web podrá estar escrito en cualquier plataforma o lenguaje que soporte estos estándares, lo cual no importará para su utilización o integración. 5 Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia Los servicios web se comunican utilizando HTTP y XML. Cualquier dispositivo que soporte estas tecnologías podrá tener y acceder a servicios Web. Fácil implementación. Los conceptos en los que se basan los servicios web son fácilmente entendibles y actualmente existen herramientas que permiten desarrollar y crear un servicio web prácticamente teniendo sólo algunas nociones de programación. Accesibilidad. Los servicios web pueden ser completamente descentralizados y distribuidos sobre Internet y accedidos a través de una gran variedad de dispositivos. Especificaciones universalmente aceptadas. Los servicios web se basan en especificaciones estándar para el intercambio de datos, mensajería, búsqueda, descripción de la interfaz y coordinación de los procesos. Integración con sistemas existentes. Mayor agilidad y flexibilidad debido a una mejor integración con los sistemas existentes. El software como un servicio, en lugar de un producto empaquetado. Los servicios web pueden ser brindados y pagados en línea y accedidos desde cualquier plataforma. Al desarrollador no le importa el lenguaje en que ha escrito su servicio o en qué máquina se ejecuta, su servicio será accedido a través de esos lenguajes y protocolos estándares abiertos. Conclusiones Sin duda alguna, los Servicios Web son la próxima evolución en el mundo de Internet y sobretodo del comercio electrónico. La arquitectura orientada a servicios tiene todo a su favor para desbancar a Cliente-Servidor y a los objetos distribuidos. Quedan algunos retos técnicos por superar, como la seguridad, la confiabilidad, cómo cobrar el uso de un servicio Web, etc. Pero es mucho el interés que han despertado los servicios Web en todas las compañías para creer que estos problemas no serán subsanados. Así que... no nos quedemos atrás y programemos y probemos los Servicios Web. 6 Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia