Вы находитесь на странице: 1из 45

+

Sistemas Distribuidos
Servicios web
Rodrigo Santamara
+ Servicios web
Introduccin
IDL
SOAP
REST
XML/JSON-RPC

2
+ 3

Introduccin

n Java RMI o Sun RPC son middleware de nivel alto, aptos para
realizar aplicaciones distribuidas

n Con el auge de Internet, aparecen nuevos middleware


centrados en distintos aspectos:
n Objetos y componentes distribuidos: buscan maximizar el uso
de la orientacin a objetos (p. ej. CORBA)
n Servicios web: se enfocan en el uso de los servicios y la
simplicidad en su uso
n Sistemas peer-to-peer: se enfocan en arquitecturas horizontales
respecto a la tradicional cliente-servidor
+ 4

Introduccin
Tipos de middleware

Middleware Enfoque Aparicin Comentarios


Peticin- Paso de mensajes 70s Inicios, patrn
respuesta todava vlido
RPC Uso de mtodos 1984 Prog. estructurada
Muy utilizado
RMI Uso de objetos 1995 Muy utilizado
Objetos Uso total de 1991 Muy complejo
distribuidos orientacin a objetos (CORBA)
Servicios Mtodos como 1998 SOAP Simple, muy
Web servicios 2000 REST utilizado
P2P Arquitecturas 1999 Horizontal, muy
horizontales (Napster) utilizado
+ 5

Introduccin
Tipos de middleware

n Los middleware se adaptan a las necesidades y tecnologas


del momento

n Algunos middleware no son necesariamente excluyentes,


por ejemplo:
n El protocolo de peticin-respuesta se aplica en servicios web o
RMI
n Un middleware P2P podra dar soporte horizontal a un servicio
web clsico.

n En este tema nos centraremos en los servicios web. En temas


posteriores hablaremos de P2P
+ 6

Introduccin
Servicio web

n Middleware que provee una interfaz entre clientes y


servidores ms general que la de un navegador web (HTTP)

n Los clientes acceden a las operaciones publicadas en la


interfaz del servicio web a travs de peticiones XML,
transmitidas va HTTP

n 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.
+ 7

Introduccin
Servicio web: HTTP

n HTTP es un protocolo por el que los clientes (navegadores)


pueden acceder a pginas web y otros recursos, a travs de
referencias a URIs
n Aunque las pginas web puedan contener applets, etc. la
funcionalidad es reducida

n Los servicios webs permiten ms variabilidad en los


servicios ofertados
n La localizacin de los servidores y el direccionamiento de
peticiones y respuestas se realiza por protocolos como HTTP
+ 8

Introduccin
Servicios web: caractersticas

n Algunas caractersticas de un servicio web


n Combinacin
n Patrones de comunicacin
n Desacoplamiento
n Representacin de mensajes
n Referencias al servicio
n Activacin de servicios
n Transparencia
+ 9

Introduccin
Servicios web: combinacin

n 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

n Peticin-respuesta sncrona
n Es el patrn ms usual
n Invocamos al servicio y esperamos la respuesta a la peticin

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

n Mediante eventos
n El cliente se suscribe a eventos ofrecidos por el servicio
n P. ej., servicio web UTC que da el tiempo UTC peridicamente
+ 11

Servicios web
Servicios web: desacoplamiento

n El desacoplamiento (loose coupling) se refiere a la


minimizacin de las dependencias entre los servicios
n Para ofrecer una mayor flexibilidad en la arquitectura

n Se consigue de dos modos


n Interfaces: el uso de servicios a travs de su interfaz permite
desacoplar el servicio de su implementacin
n Minimizacin de las interfaces: reduce la dependencia de nombres
de operacin especficos
n 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

n Textual
n SOAP representa los servicios y los mensajes en XML
n Ms espacio y tiempo de traduccin
n Legible

n Binario
n Menos espacio
n Ms rpido (no hay traduccin)
n Ilegible
+ 13

Servicios web
Servicios web: referencia y activacin del servicio

n Los servicios se referencian generalmente mediante una URL


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

n Un servicio web puede ejecutarse en la mquina de punto


final, o en servidores secundarios en contacto con ella
n Por ejemplo, en el caso de servicios con mucha demanda

n Un servicio web puede estar ejecutndose de manera


continua, o slo activarse cuando se realiza una peticin
n En cualquier caso, la URL del punto final est siempre disponible
+ 14

Servicios web
Servicios web: transparencia

n Protege al programador de los detalles de la representacin


de los datos y asemeja una peticin local a una remota
n No es soportado por los servicios web directamente
n P. ej.: SOAP requiere que sus mensajes se escriban en XML

n Existen APIs locales en cada lenguaje de programacin para


ocultar estos aspectos
n Por ejemplo WSDL2java y Java2WSDL para Java+SOAP
+ 15

Servicios web
Aplicaciones

n Service Oriented Architectures (SOA)


n Principios de diseo para desarrollar sistemas distribuidos mediante servicios
independientes que se publican de manera dinmica
n Su implementacin se realiza fundamentalmente a travs de servicios web

n Grid computing
n Un grid (parrilla) es un middleware para compartir recursos a gran escala
(ficheros muy grandes/clculos muy complicados)
n Los servicios web permiten que los datos se analicen y filtren en remoto y slo
se devuelva al cliente la parte que le interese

n Cloud computing
n 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)
n Su implementacin natural es mediante servicios web
n Amazon Web Services (AWS): http://aws.amazon.com
+ Servicios web
Introduccin
WSDL
SOAP
REST
XML/JSON-RPC

16
+ 17

WSDL
IDL

n Interface Definition Language


n Lenguaje para especificar la interfaz de componentes software

n Neutral respecto al lenguaje de programacin


n Permite la comunicacin entre componentes escritos en distintos
lenguajes

n Su uso ms comn es en llamadas a procedimientos remotos


(RPCs)
n CORBA IDL
n Servicios Web (WSDL)
n Facebook (Thrift)
+ 18

WSDL
IDL: patrones de intercambio

n Las interfaces pueden tener distintos patrones de


intercambio de mensajes

Patrn Mensajes enviados Entrega Mensaje de


Cliente Servidor error
in-out request reply Sustituye a reply
in-only request
robust in-only request garantizada Puede enviarse
out-in reply request Sustituye a reply
out-only request
robust out-only request garantizada Puede enviarse
+ 19

WSDL
Web Service Definition Language

n Define un esquema XML para descripcin de


servicios:

http://en.wikipedia.org/wiki/Web_Services_Description_Language
n Servicio: descripcin del servicio
n Punto final: direccin de acceso (tpicamente
una URL)
n Enlace (binding): modo de comunicacin
subyacente (tpicamente HTTP)
n Interfaz: definicin de las operaciones y
argumentos
n Operacin: cada una de las operaciones, y su
E/S
n Tipo: de los argumentos de E/S

n Palabras reservadas: xs (XML schema) y tns


(target namespace)
+ 20

WSDL
Secciones

n Seccin abstracta
n Definicin de los tipos utilizados por el servicio (los tipos de las
variables intercambiadas en los mensajes)
n Un int de Java se transforma en su equivalente XML: xs:int!
n Una clase ms compleja en Java se traduce a un objeto
xs:complexType en XML

n Seccin concreta
n Define los puntos finales y su protocolo de enlace

n WSDL es modular
n Un servicio puede darse bajo varios puntos de acceso o
protocolos de direccionamiento
+ 21

WSDL
Herramientas

n Hay herramientas para generar WSDLs a partir de las


definiciones de interfaz escritas un determinado lenguaje
n De modo grfico
n Sin necesidad de entrar en las complejidades de su estructura
n WSDL4J (wsdl4j.sourceforge.org)
n Java2WSDL

n Otras herramientas generan, a partir de un WSDL, un cliente


para un determinado lenguaje de programacin
n WSDL2Java

n soapUI (http://www.soapui.org/)
n Herramienta gratuita para testear WSDLs de SOAP
+ Servicios web
Introduccin
IDL
SOAP
REST
XML/JSON-RPC

22
+ 23

SOAP

n Simple Object Access Protocol (Dave Winer et al. 1998)


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

n Se basa en tres componentes principales


n WSDL: lenguaje de descripcin del servicio
n HTTP/SMTP: protocolo de comunicacin
n XML: lenguaje de especificacin de peticiones

n Independiente: puede usarse sobre servicios escritos en


cualquier lenguaje

n 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
publicacin XML
SOAP
interfaz

servicio
traduccin Comunicacin
HTTP
+ Servicios web
Introduccin
IDL
SOAP
REST
XML/JSON-RPC

26
+ 27

REST

n REpresentational State Transfer (Roy Fielding, 2000)

n Arquitectura similar a la definida por SOAP


n Basado en HTTP y URLs
n Mensajes en XML (generalmente)

n Enfocado a los datos en vez de a las interfaces

n Servicio web RESTful: aqul que cumple con las restricciones:


n La URI del servicio es http://foo.com/resources
n Los datos estn en un formato estndar (XML, JSON)
n Slo hay operaciones HTTP: GET, PUT, DELETE, POST
n API accesible a travs de un navegador (hipertexto)
+ 28

REST
Recursos y representaciones

n Un recurso es una fuente de informacin especfica


n Referenciada por un identificador global (URI)

n Una representacin de un recurso es la forma en la que se


intercambia dicho recurso

n Recurso:
n Un crculo

n Representacin:
n Centro y radio en un .svg
n Tres puntos de su circunferencia en un .csv
+ 29

REST
Operaciones

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

GET Lista las URIs de los Recupera la representacin


elementos de la coleccin del elemento
PUT Reemplaza la coleccin Reemplaza el elemento
entera por otra (si no existe, falla)
POST Crea un nuevo elemento en Trata el elemento como una
la coleccin, le asigna una coleccin, y crea un nuevo
URI automticamente y elemento en ella
devuelve esa URI
DELETE Elimina la coleccin entera Elimina el elemento
+ 30

REST

Modelo centrado en servicios Modelo centrado en datos


(SOAP) (REST)
n Mtodo: getUserDetails n Dato: detalles del usuario 1235
n argumento: ID del usuario http://www.acme.com/phonebook/UserDetails/12345

n getUserDetails(1235):
n Dato: detalles del usuario de
<?xml version="1.0"?>!
<soap:Envelope!
nombre John y apellido Doe
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"!
http://www.acme.com/phonebook/UserDetails?
soap:encodingStyle="http://www.w3.org/2001/12/soap-
encoding">! firstName=John&lastName=Doe
<soap:body pb="http://www.acme.com/phonebook">!
<pb:GetUserDetails>!
<pb:UserID>12345</pb:UserID>!
</pb:GetUserDetails>!
n Dato: detalles del usuario de
</soap:Body>! nombre John y apellido Doe
</soap:Envelope>!
en formato JSON
http://www.acme.com/phonebook/UserDetails.json?
firstName=John&lastName=Doe
+ 31

REST
REST vs SOAP

http://geeknizer.com/rest-vs-soap-using-http-choosing-the-right-webservice-protocol/
REST SOAP
Alcance Arquitectura Protocolo
Estndar? No S
Mensajes HTML o XML XML
Tipado No (HTML) o fuerte Fuerte (XML)
(XML)
Ancho de banda Menor en HTML Tags adicionales de XML
Testeo Navegador Herramientas tipo soapUI
Bibliotecas No (URIs) S
Peticin usual GET POST
Cliente Sencillo Algo ms complejo
+ 32

REST
REST vs SOAP

http://nicolas-zozol.developpez.com
+ 33

REST
REST no es perfecto

n REST no siempre es mejor decisin de diseo que SOAP


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

n Para adjuntar datos (texto o binarios) necesitamos usar POST


n SOAP es mejor al estar estandarizado

n Las URIs son pblicas


Problema si los argumentos son delicados
n

n Tipado fuerte
n REST lo soporta (va XML) pero no tiene un estndar de tipos

n Generalmente, REST es una solucin ms sencilla y limpia


n Suficiente para servicios web poco complejos
+ 34

REST
Ejemplos

n Twitter
n REST es la API original de Twitter, y todava hoy la ms popular
entre desarrolladores
n Listado de recursos: https://dev.twitter.com/docs/api

n Google
n Tuvo una REST API hasta 2010
n https://developers.google.com/web-search/docs/
n Ahora utiliza JSON/Atom Custom Search API
n http://code.google.com/apis/customsearch/v1/overview.html
+ 35

REST
Filosofa

n 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)

n Por ejemplo, en el caso de GET


n Si el usuario es una persona, devuelve un fichero legible
n Tpicamente un documento HTML como hasta ahora

n Si el usuario es una mquina, devuelve un fichero en un lenguaje


n Por ejemplo XML, JSON, etc.

n 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.
+ Servicios web
Introduccin
IDL
SOAP
REST
XML/JSON-RPC

36
+ 37

XML-RPC

n Creado en 1998 por Dave Winer

n RPC que usa


n XML como sistema de codificacin de las peticiones
n HTTP como mecanismo de envo

n Evolucion hasta convertirse en SOAP


n Ms sencillo, no requiere un WSDL

n Como estndar, no es muy evolucionado


n Simplemente define tipos de datos bsicos y peticiones en XML
+ 38

XML-RPC
Tipos de datos

<int>42</int>
<double>-12.53</double>
<boolean>1</boolean>
<string>Hello world!</string>
<nil/>

<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>

<array>
<data>
<value><i4>1404</i4></value>
<value><string>Something</string></value>
<value><i4>1</i4></value>
</data>
</array>
+ 39

XML-RPC
Invocacin y respuesta

<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><int>40</int></value>
</param>
</params>
</methodCall>

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>Dakota</string></value>
</param>
</params>
</methodResponse>
+ 40

JSON-RPC

n Similar a XML-RPC, pero datos y mensajes se especifican en


JSON, mucho menos verboso
n JSON para definicin de datos y mensajes
n HTTP o sockets TCP/IP para envo

n Ejemplos
+ 41

JSON-RPC

n De alguna manera, JSON-RPC cierra el crculo:

Mtodo Ao WSDL Recursos Datos


XML-RPC 1998 No No XML
SOAP 1998 S No XML/WSDL
REST 2000 No S Cualquiera
JSON-RPC 2005 No No JSON
42
+ 43

Resumen

n Los servicios web son un tipo de n Un servicio es RESTful si cumple


middleware que busca la con un intercambio basado en
simplicidad en base a las
caractersticas de Internet recursos, entendidos como objetos
de datos, que se modifican slo
n Se centran en un paso de mensajes mediante las cuatro acciones de
mediante HTTP y uso de datos en HTTP (GET, POST, PUT, DELETE)
texto plano con estructura (XML,
JSON)
n Todo servicio web necesita en el
n SOAP se centra en el uso de un XML fondo definir sus mensajes y datos
propio para cada servicio, escrito compartidos, es responsabilidad del
bajo un estndar WSDL desarrollador elegir aqul que
mejor se adapte a sus sistema
n REST se centra en el uso de la
propia estructura de URIs en HTTP
para las peticiones, y en un formato
abierto a definir en la respuesta
(tpicamente JSON)
+ 44

Servicios web
Bibliografa

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


n Ch 9: Web services

n Wikipedia (ingls)
n Entradas REST, SOAP, XML-RPC, JSON-RPC

n Learn REST: A tutorial


n http://rest.elkstein.org/

n How I explained REST to my wife


n http://tomayko.com/writings/rest-to-my-wife

n REST vs SOAP: the right web service


n http://geeknizer.com/rest-vs-soap-using-http-choosing-the-right-
webservice-protocol/
http://geekandpoke.typepad.com/
45

Вам также может понравиться