Sei sulla pagina 1di 38

+

Sistemas Distribuidos
Servicios web
Rodrigo Santamara

+ Servicios web
! ! ! !

Introduccin IDL SOAP REST

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

!!

Los servicios webs permiten ms variabilidad en los servicios ofertados


!!

La localizacin de los servidores y el direccionamiento de peticiones y respuestas se realiza por protocolos como HTTP

Introduccin
Servicios web: caractersticas
!!

Algunas caractersticas de un servicio web


!! !! !! !! !! !! !!

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

Colouris et al. 2011

10

Servicios web
Servicios web: patrones de comunicacin
!!

Peticin-respuesta sncrona
!! !!

Es el patrn ms usual Invocamos al servicio y esperamos la respuesta a la peticin

!!

Comunicacin asncrona
!! !!

Se enva la peticin y se contina la ejecucin Incluso en patrones de peticin-respuesta

!!

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
!!

Para ofrecer una mayor flexibilidad en la arquitectura

!!

Se consigue de dos modos


!!

!!

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
!! !! !!

Menos espacio Ms rpido (no hay traduccin) Ilegible

13

Servicios web
Servicios web: referencia y activacin del servicio
!!

Los servicios se referencian generalmente mediante una URL


!!

La referencia del servicio se conoce como punto final (endpoint)

!!

Un servicio web puede ejecutarse en la mquina de punto final, o en servidores secundarios en contacto con ella
!!

Por ejemplo, en el caso de servicios con mucha demanda

!!

Un servicio web puede estar ejecutndose de manera continua, o slo activarse cuando se realiza una peticin
!!

En cualquier caso, la URL del punto final est siempre disponible

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
!!

Por ejemplo WSDL2java y Java2WSDL para Java+SOAP

15

Servicios web
Servicios web: aplicaciones
!!

Service Oriented Architectures (SOA)


!! !!

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
! ! ! !

Introduccin WSDL SOAP REST

16

17

WSDL
IDL
!!

Interface Definition Language


!!

Lenguaje para especificar la interfaz de componentes software

!!

Neutral respecto al lenguaje de programacin


!!

Permite la comunicacin entre componentes escritos en distintos lenguajes

!!

Su uso ms comn es en llamadas a procedimientos remotos (RPCs)


!! !! !!

CORBA IDL Servicios Web (WSDL) Facebook (Thrift)

18

WSDL
IDL: patrones de intercambio
!!

Las interfaces pueden tener distintos patrones de intercambio de mensajes


Patrn Mensajes enviados Cliente Servidor request request request reply request request request garantizada Puede enviarse garantizada Puede enviarse Sustituye a reply reply Entrega Mensaje de error Sustituye a reply

in-out in-only robust in-only out-in out-only robust out-only

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

!!

Palabras reservadas: xs (XML schema) y tns (target namespace)

http://en.wikipedia.org/wiki/Web_Services_Description_Language

Define un esquema XML para descripcin de servicios:

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
!!

Define los puntos finales y su protocolo de enlace

!!

WSDL es modular
!!

Un servicio puede darse bajo varios puntos de acceso o protocolos de direccionamiento

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/)
!!

Herramienta gratuita para testear WSDLs de SOAP

+ Servicios web
! ! ! !

Introduccin IDL SOAP REST

22

23

SOAP
!!

Simple Object Access Protocol


!!

Especificacin para el intercambio de informacin estructurada en servicios web, a travs de redes de ordenadores

!!

Se basa en tres componentes principales


!! !! !!

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
! ! ! !

Introduccin IDL SOAP REST

26

27

REST
!! !!

REpresentational State Transfer (Roy Fielding, 2000) Arquitectura similar a la definida por SOAP
!! !!

Basado en HTTP y URLs Mensajes en XML (generalmente)

!! !!

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 recurso es una fuente de informacin especfica


!!

Referenciada por un identificador global (URI)

!!

Una representacin de un recurso es la forma en la que se intercambia dicho recurso Recurso:


!!

!!

Un crculo

!!

Representacin:
!! !!

Centro y radio en un .svg Tres puntos de su circunferencia en un .csv

29

REST
Operaciones

Coleccin

(http://foo.com/resources)

Elemento

(http://foo.com/resources/item17)

GET PUT POST

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

Elimina la coleccin entera Elimina el elemento

30

REST
Modelo centrado en servicios (SOAP)
!!

Modelo centrado en datos (REST)


!!

Mtodo: getUserDetails !! argumento: ID del usuario getUserDetails(1235):

Dato: detalles del usuario 1235

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>!

Dato: detalles del usuario de nombre John y apellido Doe

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
!!

REST no siempre es mejor decisin de diseo que SOAP


!!

Las URIs tienen un tamao mximo !! No soportan argumentos muy largos


!!

Para adjuntar datos (texto o binarios) necesitamos usar POST !! SOAP es mejor al estar estandarizado

!!

Las URIs son pblicas


!!

!!

Problema si los argumentos son delicados Tipado fuerte REST lo soporta (va XML) pero no tiene un estndar de tipos

!!

!!

Generalmente, REST es una solucin ms sencilla y limpia


!!

Suficiente para servicios web poco complejos

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
!!

Tuvo una REST API hasta 2010


!!

https://developers.google.com/web-search/docs/

!!

Ahora utiliza JSON/Atom Custom Search API !! http://code.google.com/apis/customsearch/v1/overview.html

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
!!

Colouris. Distributed Systems, 5th ed. (2011)


!!

Ch 9: Web services Entradas REST y SOAP http://rest.elkstein.org/ http://tomayko.com/writings/rest-to-my-wife http://geeknizer.com/rest-vs-soap-using-http-choosing-the-rightwebservice-protocol/

!!

Wikipedia (ingls)
!!

!!

Learn REST: A tutorial


!!

!!

How I explained REST to my wife


!!

!!

REST vs SOAP: the right web service


!!

http://geekandpoke.typepad.com/

38