Professional Documents
Culture Documents
Sistemas Distribuidos
Servicios web
Rodrigo Santamara
+ Servicios web
! ! ! !
Introduccin
!!
Java RMI o Sun RPC son middleware de nivel alto, aptos para realizar aplicaciones distribuidas Con el auge de Internet, aparecen nuevos middleware centrados en distintos aspectos:
!!
!!
Objetos y componentes distribuidos: buscan maximizar el uso de la orientacin a objetos (p. ej. CORBA) Servicios web: se enfocan en el uso de los servicios y la simplicidad en su uso Sistemas peer-to-peer: se enfocan en arquitecturas horizontales respecto a la tradicional cliente-servidor
!!
!!
Introduccin
Tipos de middleware
Middleware Enfoque Peticinrespuesta RPC RMI Objetos distribuidos Servicios Web P2P Paso de mensajes Uso de mtodos Uso de objetos Uso total de orientacin a objetos Mtodos como servicios Arquitecturas horizontales Aparicin Comentarios 70s 1984 1995 1991 (CORBA) Inicios, patrn todava vlido Prog. estructurada Muy utilizado Muy utilizado Muy complejo
1998 SOAP Simple, muy 2000 REST utilizado 1999 (Napster) Horizontal, muy utilizado
Introduccin
Tipos de middleware
!!
Los middleware se adaptan a las necesidades y tecnologas del momento Algunos middleware no son necesariamente excluyentes, por ejemplo:
!!
!!
El protocolo de peticin-respuesta se aplica en servicios web o RMI Un middleware P2P podra dar soporte horizontal a un servicio web clsico.
!!
!!
En este tema nos centraremos en los servicios web. En temas posteriores hablaremos de P2P
Introduccin
Servicio web
!!
Middleware que provee una interfaz entre clientes y servidores ms general que la de un navegador web (HTTP) Los clientes acceden a las operaciones publicadas en la interfaz del servicio web a travs de peticiones XML, transmitidas va HTTP Los servicios web tienen cada vez ms importancia en Internet, y suponen la infraestructura middleware bsica para la computacin grid y la computacin en la nube.
!!
!!
Introduccin
Servicio web: HTTP
!!
HTTP es un protocolo por el que los clientes (navegadores) pueden acceder a pginas web y otros recursos, a travs de referencias a URIs
!!
Aunque las pginas web puedan contener applets, etc. la funcionalidad es reducida
!!
La localizacin de los servidores y el direccionamiento de peticiones y respuestas se realiza por protocolos como HTTP
Introduccin
Servicios web: caractersticas
!!
Combinacin Patrones de comunicacin Desacoplamiento Representacin de mensajes Referencias al servicio Activacin de servicios Transparencia
Introduccin
Servicios web: combinacin
!!
Las operaciones de un servicio web pueden utilizar otros servicios web para sus operaciones
10
Servicios web
Servicios web: patrones de comunicacin
!!
Peticin-respuesta sncrona
!! !!
!!
Comunicacin asncrona
!! !!
!!
Mediante eventos
!! !!
El cliente se suscribe a eventos ofrecidos por el servicio P. ej., servicio web UTC que da el tiempo UTC peridicamente
11
Servicios web
Servicios web: desacoplamiento
!!
El desacoplamiento (loose coupling) se refiere a la minimizacin de las dependencias entre los servicios
!!
!!
!!
Interfaces: el uso de servicios a travs de su interfaz permite desacoplar el servicio de su implementacin Minimizacin de las interfaces: reduce la dependencia de nombres de operacin especficos
!!
Servicios orientados a datos: los datos se vuelven ms importantes que la interfaz y contienen la semntica de interoperabilidad
12
Servicios web
Servicios web: representacin de mensajes
!!
Textual
!! !! !!
SOAP representa los servicios y los mensajes en XML Ms espacio y tiempo de traduccin Legible
!!
Binario
!! !! !!
13
Servicios web
Servicios web: referencia y activacin del servicio
!!
!!
Un servicio web puede ejecutarse en la mquina de punto final, o en servidores secundarios en contacto con ella
!!
!!
Un servicio web puede estar ejecutndose de manera continua, o slo activarse cuando se realiza una peticin
!!
14
Servicios web
Servicios web: transparencia
!!
Protege al programador de los detalles de la representacin de los datos y asemeja una peticin local a una remota
!! !!
No es soportado por los servicios web directamente P. ej.: SOAP requiere que sus mensajes se escriban en XML
!!
Existen APIs locales en cada lenguaje de programacin para ocultar estos aspectos
!!
15
Servicios web
Servicios web: aplicaciones
!!
Principios de diseo para desarrollar sistemas distribuidos mediante servicios independientes que se publican de manera dinmica Su implementacin se realiza fundamentalmente a travs de servicios web
!!
Grid computing
!! !!
Un grid (parrilla) es un middleware para compartir recursos a gran escala (ficheros muy grandes/clculos muy complicados) Los servicios web permiten que los datos se analicen y filtren en remoto y slo se devuelva al cliente la parte que le interese
!!
Cloud computing
!!
Concepto que evoluciona de grid computing, ms centrado en el mbito de negocio (muchos usuarios, facilidad de uso) que en el acadmico/cientfico/ profesional (clculo y datos intensivos) Su implementacin natural es mediante servicios web !! Amazon Web Services (AWS): http://aws.amazon.com
!!
+ Servicios web
! ! ! !
16
17
WSDL
IDL
!!
!!
!!
18
WSDL
IDL: patrones de intercambio
!!
19
WSDL
Web Service Definition Language
!!
!!
Servicio: descripcin del servicio !! Punto final: direccin de acceso (tpicamente una URL) !! Enlace: modo de comunicacin subyacente (tpicamente HTTP) !! Interfaz: definicin de las operaciones y argumentos !! Operacin: cada una de las operaciones, y su E/S !! Tipo: de los argumentos de E/S
!!
http://en.wikipedia.org/wiki/Web_Services_Description_Language
20
WSDL
Secciones
!!
Seccin abstracta
!!
Definicin de los tipos utilizados por el servicio (los tipos de las variables intercambiadas en los mensajes)
!! !!
Un int de Java se transforma en su equivalente XML: xs:int! Una clase ms compleja en Java se traduce a un objeto xs:complexType en XML
!!
Seccin concreta
!!
!!
WSDL es modular
!!
21
WSDL
Herramientas
!!
Hay herramientas para generar WSDLs a partir de las definiciones de interfaz escritas un determinado lenguaje
!! !! !! !!
De modo grfico Sin necesidad de entrar en las complejidades de su estructura WSDL4J (wsdl4j.sourceforge.org) Java2WSDL
!!
Otras herramientas generan, a partir de un WSDL, un cliente para un determinado lenguaje de programacin
!!
WSDL2Java
!!
soapUI (http://www.soapui.org/)
!!
+ Servicios web
! ! ! !
22
23
SOAP
!!
Especificacin para el intercambio de informacin estructurada en servicios web, a travs de redes de ordenadores
!!
WSDL: lenguaje de descripcin del servicio HTTP/SMTP: protocolo de comunicacin XML: lenguaje de especificacin de peticiones
!!
Independiente: puede usarse sobre servicios escritos en cualquier lenguaje Neutral: puede usarse sobre cualquier protocolo de transporte
!!
24
SOAP
Arquitectura
Colouris et al. 2011
! Las aplicaciones pueden ser otros servicios web ! Los servicios llevan asociadas descripciones en un lenguaje (IDL) neutral ! El servicio usa un protocolo para aceptar peticiones y ofrecer resultados en XML, basado en un direccionamiento mediante URIs y protocolos tipo HTTP
25
SOAP
Modo de funcionamiento
URL cliente interfaz WSDL
peticin XML
servicio
interfaz
publicacin
SOAP
Comunicacin HTTP
traduccin
+ Servicios web
! ! ! !
26
27
REST
!! !!
REpresentational State Transfer (Roy Fielding, 2000) Arquitectura similar a la definida por SOAP
!! !!
!! !!
Enfocado a los datos en vez de a las interfaces Servicio web RESTful: aqul que cumple con las restricciones
!! !! !! !!
La URI del servicio es http://foo.com/resources Los datos estn en un formato estndar (XML, JSON) Slo hay operaciones HTTP: GET, PUT, DELETE, POST API accesible a travs de un navegador (hipertexto)
28
REST
Recursos y representaciones
!!
!!
!!
Un crculo
!!
Representacin:
!! !!
29
REST
Operaciones
Coleccin
(http://foo.com/resources)
Elemento
(http://foo.com/resources/item17)
Lista las URIs de los elementos de la coleccin Reemplaza la coleccin entera por otra Crea un nuevo elemento en la coleccin, le asigna una URI automticamente y devuelve esa URI
Recupera la representacin del elemento Reemplaza el elemento (si no existe, falla) Trata el elemento como una coleccin, y crea un nuevo elemento en ella
DELETE
30
REST
Modelo centrado en servicios (SOAP)
!!
http://www.acme.com/phonebook/UserDetails/12345
!!
!!
<?xml version="1.0"?>! <soap:Envelope! xmlns:soap="http://www.w3.org/2001/12/soap-envelope"! soap:encodingStyle="http://www.w3.org/2001/12/soapencoding">! <soap:body pb="http://www.acme.com/phonebook">! <pb:GetUserDetails>! <pb:UserID>12345</pb:UserID>! </pb:GetUserDetails>! </soap:Body>! </soap:Envelope>!
http://www.acme.com/phonebook/UserDetails? firstName=John&lastName=Doe
!!
Dato: detalles del usuario de nombre John y apellido Doe en formato JSON
http://www.acme.com/phonebook/UserDetails.json? firstName=John&lastName=Doe
31
REST
REST vs SOAP
REST Alcance Estndar? Mensajes Tipado Ancho de banda Testeo Bibliotecas Peticin usual Cliente Arquitectura No HTML o XML No (HTML) o fuerte (XML) Menor en HTML Navegador No (URIs) GET Sencillo SOAP Protocolo S XML Fuerte (XML) Tags adicionales de XML Herramientas tipo soapUI S POST Algo ms complejo
http://geeknizer.com/rest-vs-soap-using-http-choosing-the-right-webservice-protocol/
32
REST
REST vs SOAP
http://nicolas-zozol.developpez.com
33
REST
REST no es perfecto
!!
Para adjuntar datos (texto o binarios) necesitamos usar POST !! SOAP es mejor al estar estandarizado
!!
!!
Problema si los argumentos son delicados Tipado fuerte REST lo soporta (va XML) pero no tiene un estndar de tipos
!!
!!
34
REST
Ejemplos
!!
Twitter
!!
REST es la API original de Twitter, y todava hoy la ms popular entre desarrolladores Listado de recursos: https://dev.twitter.com/docs/api
!!
!!
Google
!!
https://developers.google.com/web-search/docs/
!!
35
REST
Filosofa
!!
La filosofa subyacente a REST es que una orden (verbo) sobre un recurso web (objeto) debera devolver una versin u otra dependiendo del usuario (sujeto) Por ejemplo, en el caso de GET
!!
!!
!!
Si el usuario es una persona, devuelve un fichero legible !! Tpicamente un documento HTML como hasta ahora Si el usuario es una mquina, devuelve un fichero en un lenguaje estndar !! Por ejemplo XML, JSON, etc.
!!
La web actual, dado un concepto (informacin), usa una sola representacin (pgina web). Con varias representaciones la web se convertira en una herramienta mucho ms completa.
36
37
Servicios web
Bibliografa
!!
!!
Wikipedia (ingls)
!!
!!
!!
!!
http://geekandpoke.typepad.com/
38