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