Sesión 5 Introducción a REST



Documentos relacionados
TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

Portal Inteligente Medellín Documentación de la Arquitectura de Software

Service Oriented Architecture

Sesión 17. Servicios web RESTful

Patrones y buenas prácticas en SOA/REST

Desarrollo y servicios web

RESTful 4 all. Diego Sapriza

Servicios Web. Andrés Pastorini. TRIA Tecnólogo Informático

5.1 Introducción a Servicios Web

URL. Después de los dos puntos: se interpreta según el método de acceso. Suele contener direcciones y puntos de acceso en una máquina. Esquema URL.

Servicios web. Jorge Iván Meza Martínez

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Sistemas Distribuidos Servicios web. Rodrigo Santamaría

Si usted quiere desarrollar con Bluevia y Java, esto es lo primero que debe saber

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Tema 6: Comparativa CORBA/Servicios Web

15 de Octubre Crowne Plaza Ciudad de México. Simposio Técnico de Medición y Automatización. ni.com/mexico

MICROSITIOS. Perfiles

Sistemas Distribuidos

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Comunicación entre procesos

Universidad Nacional Autónoma de México Dirección de Sistemas Dirección General de Personal

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

PRUEBAS FUNCIONALES Y DE ACEPTACIÓN

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Qué son los Web Services?

Servicios Web. Desarrollo de Aplicaciones Empresariales

Capa de Aplicación (Parte 2 de 2)

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Sistemas Operativos Distribuidos. Introducción a los Servicios Web (Web Services)

HTTP Introducción. Redes de Datos Ing. Marcelo Utard / Ing. Pablo Ronco FACULTAD DE INGENIERIA UNIVERSIDAD DE BUENOS AIRES

SISTEMAS DE INFORMACIÓN III TEORÍA

NOTAS TÉCNICAS SOBRE EL SIT: Emisión Electrónica de Documentos (EDI)

Introducción a WS-REST. Ing. Guillermo Roldós Agosto 2010

TEMA 5. Otras arquitecturas distribuidas IV. Web Services

Tema 1 HTTP y aplicaciones web

Documentación Técnica Conector

DIPLOMADO EN SEGURIDAD INFORMATICA

Arquitectura de Proyectos de IT. Integración. Ing. Gastón Coco Ing. Nicolás Passerini Ing. Juan Arias Ing. Gustavo A. Brey Ing.

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

Capacitación Efectiva SOA y Web Services con Java

PREPARATORIA DIURNA DE CUAUTLA

OLIMPO Servidor Universal

Sistemas Distribuidos

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

ANEXO 1. ANEXO TÉCNICO

Primer avance de proyecto de software para la gestión de inscripciones en cursos

Web. Web Diapositiva 1

Desarrollo y servicios web

Una puerta abierta al futuro

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

Servicios REST Bases de la tecnología con Spring MVC

La web (el servicio WWW)

Tema 4: Tecnologías Web Java

Introducción a las Redes de Computadoras. Obligatorio

Cursos de Extensión Universitaria UNIVERSIDAD DE OVIEDO. Servicios Web (II)

2524 Developing XML Web Services Using Microsoft ASP.NET

Especificación WebService para:

SISTEMAS DE INFORMACIÓN II TEORÍA

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

Aplicaciones y Servicios Web (Web Services)

PROTOCOLOS DE APLICACIÓN PRÁCTICA EN INFOMED INTEROPERABILIDAD

Ingeniería de Software en SOA

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

Capítulo 5. Cliente-Servidor.

Alfresco permite su integración y personalización en sistemas de gestión documental para implementar funcionalidades específicas

GALA. Servicios WEB. Curso ASP.NET Desarrollo de Sitios y Servicios Web con Visual Basic 2010, 24 h. L25. Servicios Web en Integración

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Tema 4. II - Cookies. Arquitecturas Distribuidas 11/12

Introducción a Internet

SIEWEB. La intranet corporativa de SIE

SIVEGAM Sistema de verificación del gasto mensual Protocolo SIVEGAM. Superintendencia de Seguridad Social. Versión 1.0

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Tutorial Servicios Web

Modelo de Objetos Distribuidos

Guía de migración a firma HMAC SHA256 Conexión por Redirección

13.2 WORLD WIDE WEB (www)

Clientes Donantonio. Especificación de requisitos software. Juan José Amor David Escorial Ismael Olea

PROCEDIMIENTO DE GESTIÓN DE INCIDENCIAS

Programación de red con Cisco Application Centric Infrastructure

UNIVERSIDAD DE SALAMANCA

Software de sistema: Programas genéricos que permiten gestionar los recursos del ordenador.

Servicios Web con Java EE

Servicios Web con Java EE

ESOFT 3 Nice Screen Scraper: Web service, Console client and Web client

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Servicio WWW World Wide Web Office Express

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

SSL Secure Socket Layer

ORBERE. Memoria Técnica del Aplicativo de Gestión de la producción para ADIMDE

Aspectos básicos de redes Ing. Aníbal Coto Cortés

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS

Plataforma desarrollo Java Formación elearning tutorizada en castellano. Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

Transcripción:

Sesión 5 Introducción a REST Sistemas Distribuidos Diego Sevilla Ruiz DITEC Facultad de Informática Murcia, 2012 Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 1 / 27

Índice 1 Tendencias arquitecturales en Software Distribuido 2 Servicios Web? 3 Introducción a REST 4 Comparación con Servicios Web Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 2 / 27

Índice 1 Tendencias arquitecturales en Software Distribuido 2 Servicios Web? 3 Introducción a REST 4 Comparación con Servicios Web Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 3 / 27

Tendencias arquitecturales en Software Distribuido Uso extensivo de Sistemas Abiertos Uso de Estándares (protocolos, especificaciones, servicios, etc.) Programación COTS (Common-off-the-shelf ) Re-Uso de Internet Concurrencia optimista/eventual, uso de cachés Mejora la escalabilidad W. Vogels. Eventually Consistent. ACM Queue vol. 6, no. 6, December 2008. 1 Domain-Specific Languages (DSLs) Convention over Configuration (CoC) Revisitado del modelo de la programación funcional Los programas funcionales no tienen orden (y por lo tanto se pueden paralelizar en diferentes máquinas a la vez) (for-each i (1 2 3) (do-something i)) Ejemplo: veremos MapReduce 1 http://queue.acm.org/detail.cfm?id=1466448 Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 4 / 27

Índice 1 Tendencias arquitecturales en Software Distribuido 2 Servicios Web? 3 Introducción a REST 4 Comparación con Servicios Web Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 5 / 27

Qué hay de los Servicios Web? Al nivel de los sistemas RPC Llamada a procedimientos (no objetos), protocolos sobre HTTP, (SOAP), lenguaje de especificación de interfaces (WSDL) Paso atrás de CORBA SOAP (Simple Object Access Protocol) No es orientado a objetos No es simple Con el pretexto de que es sencillo y está basado en la web lleva equívocamente a centrarse en el protocolo y los mensajes y no en la abstracción (cuestiones ya superadas en CORBA e incluso en RPC) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 6 / 27

Servicios Web (ii) WSDL vs. IDL IDL: 1 module prueba { 3 interface Calculadora { 5 double add (in double x, in double y); double substract (in double x, in double y); 7 double multiply (in double x, in double y); double divide (in double x, in double y); 9 void storememory (in double x); double readmemory (); 1 }; }; WSDL: WSDL: No hay mapping estándar para C++ o Java NO ES UN DSL (no intuitivo, etc.) Incluye el endpoint en la especificación del interfaz! iego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 7 / 27

Servicios Web (iii) WS-* Conjunto de protocolos relacionados con los servicios Web WS-* Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 8 / 27

Servicios Web (iii) WS-* Conjunto de protocolos relacionados con los servicios Web WS-* Decenas de especificaciones No tan bien estructuradas como las de CORBA No implementadas (o parcialmente) muchas de ellas Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 8 / 27

Servicios Web (iv) Stone Soup http://www.infoq.com/news/2010/10/wcf-rest http://vimeo.com/15996833 Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 9 / 27

Servicios Web (v) Does REST need middleware? http://www.infoq.com/presentations/does-rest-need-middleware Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 10 / 27

Índice 1 Tendencias arquitecturales en Software Distribuido 2 Servicios Web? 3 Introducción a REST 4 Comparación con Servicios Web Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 11 / 27

REpresentational State Transfer REST V. van Gogh. Noon: Rest From Work. 1889-90. Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 12 / 27

REpresentational State Transfer (ii) REST Patrón arquitectural de desarrollo de aplicaciones sobre el Web Desarrollado por Roy T. Fielding en su tesis doctoral, Architectural Styles and the Design of Network-based Software Architectures, 2000. 2 Aprovecha el web tal y como está El web ha sido escalable hasta ahora por tener una serie de requisitos: se aplicarán a REST Ha llevado unos años cambiar el paradigma de los WS y entender la aplicabilidad 2 http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 13 / 27

REST Requisitos Cliente/Servidor Obvio Sin estado El servidor no guarda estado sobre la conversación con el cliente. El cliente mantiene el estado y provee en la petición la información necesaria Véase una página de búsqueda de Google Cacheable Servidores sin estado se permite cacheo Sistema en capas Niveles de servidores sin que el cliente lo note Código bajo demanda (opcional) Enviar código que mejore al cliente (applets Java, JavaScript, AJAX) Interfaz uniforme Basado principalmente en HTTP y formatos XML Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 14 / 27

REST Características Identificación de recursos Todos los elementos accedidos remotamente tienen una identificación (URI). Se elige una representación para cada recurso (XML, JSON, etc.) Manipulación de recursos Uso de los verbos HTTP para implementar CRUD 3 Las peticiones y respuestas incluyen metadatos (cache, validez, tipo MIME) Incluidos en los headers de HTTP Mensajes auto-descriptivos Los metadatos permiten tratar el mensaje Tejido hypermedia como representación del estado de la aplicación HATEOAS 4 Los datos retornados pueden incluir enlaces a otros recursos 3 Create, Read, Update, Delete. 4 http://en.wikipedia.org/wiki/hateoas. Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 15 / 27

REST Recursos Los recursos son elementos de información Están identificados universalmente (URIs) Clientes y servidores utilizan un protocolo común (p. ej. HTTP), recursos y acciones sobre ellos Clientes y servidores deben estar de acuerdo en las representaciones Las representaciones pueden ser múltiples Formatos estándar de Internet: XML, JSON, YAML, etc. Avance semántico: Microformatos Cómo se representa una persona? O un impuesto? Se pueden definir microformatos específicos de dominio? Tripleta: <recurso, microformato, representación> Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 16 / 27

REST Acceso a servicios REST adapado al web: Base URI: http://example.com/servicio MIME types: JSON, XML, YAML, etc. Operaciones como métodos HTTP: GET, POST, etc. Tabla de URIs/semántica (siguiente) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 17 / 27

REST Acceso a servicios (ii) URI de colección (http://example.com/recursos/) GET Lista los elementos de la colección. La lista incluye enlaces a cada elemento PUT Reemplaza la colección por otra colección POST Crear un nuevo elemento de la colección La respuesta incluye el nuevo ID asignado DELETE Eliminar la colección Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 18 / 27

REST Acceso a servicios (iii) URI de recurso (http://example.com/recursos/2233244) GET Obtener la representación del recurso como el tipo MIME especificado PUT Actualiza o crea el elemento de la colección POST Trata el elemento como una colección en sí mismo DELETE Elimina el elemento de la colección Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 19 / 27

REST Google Chart API http://chart.apis.google.com/chart?cht=p3&chd=t: 60,40&chs=250x100&chl=Hello World HTTP/1.1 200 OK Date: Thu, 07 Jan 2010 00:16:34 GMT Expires: Fri, 08 Jan 2010 00:16:34 GMT Content-Type: image/png Server: GoogleChartAPI/1.0 Content-Length: 4805 Cache-Control: public, max-age=86400 Age: 78... Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 20 / 27

REST vs. RPC Warning! REST RPC 2 { interface Car attribute string ID; 4 attribute string brand ; attribute string model ; 6 attribute double price ; }; 8 10 12 { typedef sequence < Car > CarSeq ; interface CarFactory Car newcar ( in string brand, in string model, in double price ); 14 CarSeq listcars (); }; Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 21 / 27

REST vs. RPC Warning! REST RPC 1 interface Car { 3 attribute string ID; attribute string brand ; 5 attribute string model ; attribute double price ; 7 }; 9 typedef sequence < Car > CarSeq ; 11 interface CarFactory { 13 Car newcar ( in string brand, in string model, in double price ); CarSeq listcars (); 15 }; Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 21 / 27

REST vs. RPC (ii) REST. Varias opciones: Lista: http://xxx/cars Elemento: http://xxx/cars/axff456 Retorna el coche completo Elemento y dato: http://xxx/cars/axff456/brand Retorna un dato brand y model pueden ser partes de otra lista Nota: Las URLs implícitamente definen estructuras de datos Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 22 / 27

REST Seguridad? Uso de SSL Secreto compartido Sólo lo puede conocer ese cliente Puede implementarse como el acceso a un recurso con una URL larga y generada para un sólo uso y una validez muy corta El cliente puede identificarse con un token en las cabeceras Reuso de la conexión Evita la trazabilidad viola los requisitos del REST? Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 23 / 27

Índice 1 Tendencias arquitecturales en Software Distribuido 2 Servicios Web? 3 Introducción a REST 4 Comparación con Servicios Web Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 24 / 27

Comparación con Servicios Web C. Putasso, O. Zimmermann, F. Leymann, RESTful Web Services vs. Big Web Services: Making the Right Architectural Decision, Proc. of the 17th International World Wide Web Conference (WWW2008), Beijing, China, April 2008. S. Vinoski, Serendipitous Reuse, IEEE Internet Computing, January 2008, Vol. 9, No. 1. http: //steve.vinoski.net/pdf/ieee-serendipitous_reuse.pdf Comentario general Puntos que no se entienden, curiosidades, dudas, cuestiones interesantes Orientación del autor? (por muy bueno que sea el autor siempre está decantado por una tecnología) etc. Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 25 / 27

Referencias Roy T. Fielding, Architectural Styles and the Design of Network-based Software Architectures, 2000 http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_ arch_style.htm Charlas/recursos en Internet: http://www.infoq.com/articles/rest-introduction http://www.infoq.com/articles/tilkov-rest-doubts http://www.infoq.com/articles/rest-anti-patterns How to GET a Cup of Coffee: http://www.infoq.com/articles/webber-rest-workflow Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 26 / 27

Referencias (ii) L. Richardson, S. Ruby RESTful Web Services O Reilly, 2007, ISBN: 0-596-52926-0 C. Pautasso Some REST Design Patterns (and Anti-Patterns) http://www.jopera.org/docs/talks/2009/rest-patterns InfoQ (varios autores) InfoQ Explores REST http://www.infoq.com/resource/minibooks/ emag-03-2010-rest/en/pdf/rest%20emag.pdf Diego Sevilla Ruiz (DITEC Facultad de Informática) Sesión 5 Introducción a REST Murcia, 2012 27 / 27