14/03/2013 Departamento de Lenguajes y Sistemas Informáticos BLOQUE II: Integración de Sistemas Software Integración Web Tema 6 Arquitectura e Integración de Sistemas Software Curso 2012/2013 Índice Mashups Sindicación de contenidos Servicios web Application Programming Interfaces (APIs) Bibliografía 1 14/03/2013 Índice Mashups Sindicación de contenidos Servicios web Application Programming Interfaces (APIs) Bibliografía Mashups Idea intuitiva: 2 14/03/2013 Mashups Un mashup (o aplicación web híbrida) es una aplicación que usa y combina datos, presentaciones y funcionalidad procedentes de una o más fuentes. La nueva aplicación debería proporcionar un valor añadido, no debería ser sólo una agregación de contenidos. El contenido y los elementos de presentación suelen venir en forma de feeds RSS o Atom, servicios webs o JavaScript con APIs abiertas. Las principales características del mashup son la combinación, la visualización y la agregación. Mashups Diferencias con la integración tradicional La Web es el medio de vida natural de los mashups. La interfaz de usuario es un componente elemental en un mashup. Los mashups suelen ir dirigidos a personas no expertas. Los mashups suelen servir para cubrir una determinada necesidad (de corta duración) y suelen desarrollarse con las tecnologías web más novedosas y fáciles de usar. 3 14/03/2013 Mashups Arquitectura habitual: pipes and filters Presentación (Vista) Lógica de aplicación (Controlador) Gestión de recursos (Modelo de datos) Pipes & Filters Mashups Editores http://pipes.yahoo.com 4 14/03/2013 Mashups Editores https://ifttt.com/ Índice Mashups Sindicación de contenidos Servicios web Application Programming Interfaces (APIs) Bibliografía 5 14/03/2013 Sindicación de contenido Los mecanismos de sindicación hacen que la información de un sitio web público sea reutilizable por terceros. Permite, por ejemplo, consultar noticias de prensa o entradas de un blog sin necesidad de acudir al sitio web original. La datos reciben el nombre de fuente web o web feeds en inglés. Las fuentes web suelen codificarse en XML. Logo de sindicación web Sindicación de contenido Formatos Really Simple Sindication (RSS) Es el formato más extendido. Su especificación es conforme a XML 1.0. Un documento RSS esta compuesto de un canal (channel) y varios elementos (ítems). No permite indicar el formato del contenido (texto o HTML) Atom Su especificación es conforme a XML 1.0. Un documento Atom está compuesto de un feed que contiene varias entradas (entry). Permite indicar el formato del contenido (texto, HTML, XHTML, etc.) 6 14/03/2013 Sindicación de contenido Formatos: RSS Sindicación de contenido Formatos: Atom 7 14/03/2013 Sindicación de contenido Formatos: GeoRSS GeoRSS Estándar emergente para añadir información geográfica a los feeds. Permite añadir información sobre puntos, líneas, polígonos, etc. Puedes usarse tanto con RSS como con Atom. http://en.wikipedia.org/wiki/GeoRSS Sindicación de contenido 8 14/03/2013 Sindicación de contenido Lectores y suscripciones Sindicación de contenido Es posible integrar información de distintas fuentes web y generar nuevos feeds añadiendo, recortando o transformando los datos. También es posible usar la información de las fuentes para procesarla de alguna forma. Ejemplo: mostrarla en un mapa. Aplicaciones como Yahoo pipes permiten hacer esto de forma visual. Generar feeds es una forma sencilla de permitir que terceros usen datos de nuestras aplicaciones. 9 14/03/2013 Sindicación de contenido Índice Mashups Sindicación de contenidos Servicios web Application Programming Interfaces (APIs) Bibliografía 10 14/03/2013 Servicios web Un servicio web ofrece una interfaz de programación (no de usuario) de una determinada funcionalidad (servicio) accesible a través de Internet y basada en estándares W3C. Permiten intercambiar información entre aplicaciones software desarrolladas en lenguajes de programación diferentes y ejecutadas sobre distintas plataformas. Son una pieza clave para la integración Web. Ventajas: Facilita la interoperabilidad entre sistemas diversos. Uso de protocolos abiertos. Inconvenientes: Rendimiento bajo si se compara con otros modelos de computación distribuida. Servicios web Acoplamiento débil. Los usuarios de un servicio web no necesitan conocer sus detalles de implementación, sólo su contrato, es decir, instrucciones sobre como usarlo. Enlace dinámico. Las aplicaciones pueden decidir en tiempo de ejecución que servicio invocar. Registros. Los servicios web pueden almacenarse en registros que pueden ser consultados de forma automática. Atributos no funcionales. Los servicios pueden tener asociados atributos de calidad (coste, tiempo de ejecución, nivel de seguridad…) que pueden usarse para decidir que servicio se adapta mejor a nuestras necesidades. 11 14/03/2013 Servicios web Composición. Los servicios web se pueden componer para formar servicios más complejos. Orquestación vs. Coreografía Servicios web Servicios SOAP vs servicios RESTful Servicios web tradicionales Son los servicios web clásicos a los que se refiere el W3C en su definición de servicio web. La mayoría de documentación y estándares sobre servicios web se refieren a este tipo de servicios. Se caracterizan por el uso de WDSL para describir la interfaz pública del servicio (tipos de datos, formato de mensajes, etc) y SOAP para el intercambio de mensajes en formato XML. Servicios web RESTful Se caracterizan por estar orientados a recursos y usar el protocolo HTTP para manejar un conjunto restringido de operaciones sobre los recursos. Son más recientes que los servicios web SOAP pero ampliamente usados en la actualidad. Servicios SOAP vs. Servicios RESTful 12 14/03/2013 Índice Mashups Sindicación de contenidos Servicios web Application Programming Interfaces (APIs) Bibliografía Application Programming Interface (API) Def. 1: “Conjunto particular de reglas y especificaciones que puede seguir un programa software para usar servicios y recursos proporcionados por el programa software que crea la API” [Shafqat Islam] Def. 2: “Especificación basada en código fuente destinada a ser utilizada por los componentes software como interfaz para comunicarse entre ellos.” [Wikipedia] 13 14/03/2013 Application Programming Interface (API) Servicios Información sobre cómo invocar los servicios Información sobre las posibles respuestas de los servicios Application Programming Interface (API) ¿Por qué desarrollar APIs? El desarrollo de aplicaciones pasa a ser un esfuerzo distribuido en el que pueden participar terceros. Favorece la innovación permitiendo que otros piensen en nuevas ideas en las que sacar partido a la aplicación. Reduce costes y tiempo de desarrollo. Otros pueden integrar nuestra aplicación de forma independiente. Puede usarse como estrategia publicitaria. Permite nuevos modelos de negocio. Por ejemplo, cobrar por el número de llamadas a la API. Es multiplataforma e independiente del número de usuarios de la API. 14 14/03/2013 Application Programming Interface (API) Fuente: http://www.slideshare.net/jmusser/open-apis-state-of-the-market-2011 by John Musser. ProgrammableWeb Application Programming Interface (API) 2013: Más de 8700 APis Fuente: http://www.slideshare.net/jmusser/open-apis-state-of-the-market-2011 by John Musser. ProgrammableWeb 15 14/03/2013 Application Programming Interface (API) Fuente: http://www.slideshare.net/jmusser/open-apis-state-of-the-market-2011 by John Musser. ProgrammableWeb Application Programming Interface (API) Fuente: http://www.slideshare.net/jmusser/open-apis-state-of-the-market-2011 by John Musser. ProgrammableWeb 16 14/03/2013 Application Programming Interface (API) Tecnologías Existen diversas tecnologías y protocolos para implementar APIs web. Los más usados son: Servicios web RESTful. Servicios web SOAP. JavaScript. XML-RPC. Los más extendidos hoy en día son los servicios RESTful por su sencillez y el uso de HTTP como protocolo de aplicación, ampliamente soportado en cualquier plataforma. Application Programming Interface (API) Tecnologías 2013: 63.8% Fuente: http://www.slideshare.net/jmusser/open-apis-state-of-the-market-2011 by John Musser. ProgrammableWeb 17 14/03/2013 Application Programming Interface (API) Formato de datos Los formatos para el intercambio de datos más utilizados son XML y JSON. Application Programming Interface (API) Directorio de APIs & mashups Noticias, comunidad, herramientas de desarrollo. 8.700 APIs Web 6,900 mashups http://www.programmableweb.com/ 18 14/03/2013 Application Programming Interface (API) Aspectos clave Las APIs deben ser simples tanto para los usuarios como para los desarrolladores. La calidad de la documentación es fundamental. Deben quedar claro los servicios disponibles, cómo invocarlos, las posibles respuestas y formatos de intercambio de datos. Los ejemplos son de gran ayuda. Es importante dar un buen soporte a la comunidad de desarrolladores. Ej. Si un desarrollador tiene una pregunta, ¿cuánto se tarda en darle una respuesta? Los aspectos de seguridad y gestión de errores no deben descuidarse. Las APIs suelen empezar pequeñas e internas, y luego crecen hacia fuera. En algunos casos, la API es el único producto de la empresa. Índice Mashups Sindicación de contenidos Servicios web Application Programming Interfaces (APIs) Bibliografía 19 14/03/2013 Bibliografía Webber, J., REST in Practice: Hypermedia and Systems Architecture, O'Reilly, Beijing. 2010 Daignea, R.,Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services. Addison-Wesley Professional. 2011. Enlaces de interés Especificación Atom http://www.ietf.org/rfc/rfc4287 Especificación RSS http://cyber.law.harvard.edu/rss/rss.html Tutorial Atom http://www.atomenabled.org/developers/syndication/ Atom vs RSS http://www.intertwingly.net/wiki/pie/Rss20AndAtom10Compared Servicios web (W3C) http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb 20 14/03/2013 Disclaimer and Terms of Use All material displayed on this presentation is for teaching and personal use only. Many of the images that have been used in the presentation are Royalty Free images taken from http://www.everystockphoto.com/. Other images have been sourced directly from the Public domain, from where in most cases it is unclear whether copyright has been explicitly claimed. Our intention is not to infringe any artist’s copyright, whether written or visual. We do not claim ownership of any image that has been freely obtained from the public domain. In the event that we have freely obtained an image or quotation that has been placed in the public domain and in doing so have inadvertently used a copyrighted image without the copyright holder’s express permission we ask that the copyright holder writes to us directly, upon which we will contact the copyright holder to request full written permission to use the quote or images. 21