Академический Документы
Профессиональный Документы
Культура Документы
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
Introduccin
Tipos de middleware
Introduccin
Tipos de middleware
Introduccin
Servicio web
Introduccin
Servicio web: HTTP
Introduccin
Servicios web: caractersticas
Introduccin
Servicios web: combinacin
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
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
Servicios web
Servicios web: transparencia
Servicios web
Aplicaciones
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
WSDL
IDL: patrones de intercambio
WSDL
Web Service Definition Language
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
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 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
SOAP
Arquitectura
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
REST
Recursos y representaciones
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)
REST
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 Tipado fuerte
n REST lo soporta (va XML) pero no tiene un estndar de tipos
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
36
+ 37
XML-RPC
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 Ejemplos
+ 41
JSON-RPC
Resumen
Servicios web
Bibliografa
n Wikipedia (ingls)
n Entradas REST, SOAP, XML-RPC, JSON-RPC