Servicios web
Jorge Iván Meza Martínez
[email protected]
Especialización en Gestión de Redes de Datos
Universidad Nacional de Colombia – Sede Manizales
1/71
Contenidos
● Que es un servicio web.
● Tecnologías apoyan su implementación.
● Arquitectura de sus componentes.
● Tipos principales.
– REST
– SOAP
● Utilidad de los servicios web.
● Ejemplo de implementación servicio web SOAP en
Java utilizando Netbeans JEE.
● Ejemplo consumir servicio web SOAP desde PHP.
2/71
Evaluación pre-contenido
1.Qué es un servicio web ?
2.Cuál es la utilidad de los servicios web ?
3.Para qué sirven XML y JSON ?
4.Qué son RDF, CSV, RSS, ATOM, KML ?
5.Puedo desde una tecnología específica (Java por
ejemplo) consumir servicios web desarrollados en otra
distinta (.NET por ejemplo) ?
6.Qué ventajas/desventajas encuentra entre los servicios
web y la invocación remota de métodos ?
3/71
Qué es un servicio web ?
“a software system designed to support interoperable
machine-to-machine interaction over a network”.
-W3C defintion
4/71
Introducción
● Proveen una interfaz de servicio conocida para la
interacción entre cliente y servidor como lo hace el
navegador.
● Los clientes acceden a servicios remotos (request) y
obtienen respuestas (response) codificadas
usualmente con XML (o JSON) a través del
protocolo HTTP (request-reply).
● Apoyan la interoperabilidad en un mundo
heterogéneo: mashups, grid y cloud computing
(middleware).
5/71
Introducción
● Apoya el desacoplamiento en un sistema distribuido
al minimizar las dependencias entre servicios.
● Se consideran una especialización o extensión de la
web.
● Sin embargo sus servidores no necesariamente
deben ser servidores web, ya que estos últimos sólo
proveen el servicio HTTP básico.
● Requiere de un método para la representación de
datos y el marshalling de los mensajes → XML.
6/71
Introducción
● El protocolo SOAP determina las para que se
empaqueten los mensajes utilizando XML.
● Generalmente también proveen una descripción de
la interfaz del servicio → Web Service Description
Language (WSDL).
● También es posible incluír un servicio de directorio
para servicios web → Universal Description
Discovery and Integration (UDDI).
7/71
Introducción
● XML Security implementa la seguridad en los
mensajes: cifrar y firmar.
● Su implementación puede utilizar middlewares
como los siguientes.
– .NET Web services (Microsoft)
– JAX-RPC (Oracle)
– Apache Axis (Apache)
8/71
Arquitectura general
Request
SOAP
Protocolo HTTP
Cliente
Red
Ops
WSDL
Servidor
SOAP
Response
Recursos
9/71
Infraestructura y componentes
10/71
Combinación de servicios
11/71
Tipos de servicios web
● SOAP → Simple Object Access Protocol.
● REST → REpresentational State Transfer.
(RESTful).
12/71
REST
● El cliente accede al estado de los recursos remotos
mediante URLs y las operaciones o verbos del
protocolo HTTP.
– GET → obtener información del estado (idempotente).
– PUT → modificar el estado.
– DELETE → remover el recurso.
– POST → crear el recurso.
● La identificación de los recursos se realiza a través
del URI → Nice URLs.
13/71
14/71
15/71
REST
● No existe un estándar oficial ya que es un estilo de
arquitectura y no un protocolo.
● La representación de los mensajes se puede realizar
en diferentes formatos: XML, JSON, RDF, CSV,
TXT, RSS, ATOM, KML, ...
16/71
17/71
Ejemplo: Twitter
● POST
https://api.twitter.com/1.1/statuses/update.json
status=Maybe%20he%27ll%20finally%20find
%20his%20keys.%20%23peterfalk
● GET
https://api.twitter.com/1.1/statuses/show.json?
id=210462857140252672
18/71
Ejemplo: Twitter
● 200 OK: Success!
● 304 Not Modified
● 400 Bad Request
● 401 Unauthorized
● 403 Forbidden
● 404 Not Found
● 406 Not Acceptable
● 420 Enhance Your Calm
● 500 Internal Server Error
● 502 Bad Gateway
● 503 Service Unavailable
19/71
Ejemplo Geonames - XML
http://api.geonames.porg/countryInfo?
lang=es&country=CO&username=demo&style=full
20/71
Ejemplo Geonames - XML
21/71
Ejemplo Geonames - JSON
http://api.geonames.org/countryInfoJSON?
formatted=true&lang=es&country=CO&username
=demo&style=full
22/71
Ejemplo Geonames - JSON
23/71
Ventajas de REST
● Independiente de lenguaje y plataforma.
● Es mas simple de desarrollar que con SOAP.
● Baja curva de aprendizaje.
● Menor dependencia a las herramientas.
● No necesita una capa de mensajería adicional.
● Cercano a la filosofía de la web.
24/71
Desventajas de REST
● Sólo es útil en un modelo de comunciación punto a
punto. No en sistemas distribuidos en los cuales se
pase por varios intermediarios.
● Falta de estándares: seguridad, políticas, fiabilidad
de los mensajes, etc.
● Depende del modelo de transporte de HTTP.
25/71
SOAP
● Es el sucesor de XML-RPC.
● Depende de XML para empaquetar sus mensajes.
● Originalmente se basó en HTTP pero puede ser
utilizado con otros protocolos como SMTP o JMS.
● Es extensible → módulos.
● Neutral → diferentes protocolos de transporte.
● Independiente → modelo de programación.
26/71
Protocolo XML
● Sobre (envelope) → que hace parte del mensaje y
como procesarlo.
● Reglas de codificación (encoding rules) → tipos de
datos.
● Convención para representar las invocaciones
remotas y sus respuestas.
27/71
Sobre SOAP
28/71
Request (POST)
29/71
Request (Sobre)
30/71
Response (Sobre)
31/71
32/71
Web Service Definition Language
(WSDL)
33/71
WSDL
● Service → funciones publicadas.
● Endpoint → punto de conexión (HTTP URL).
● Binding → formatos de mensaje y representación
de datos.
● Interface → operaciones que pueden ser solicitadas
y los mensajes requeridos.
● Operation → acciones SOAP y codificación del
mensaje.
● Types → descripción de los datos.
34/71
Experimentar
● Tabla periódica
http://www.webservicex.net/periodictable.asmx?
wsdl
● Conversor de moneda
http://www.webservicex.net/CurrencyConvertor.
asmx?wsdl
● Geo IP Service
http://www.webservicex.net/geoipservice.asmx?
wsdl
35/71
Ventajas de SOAP
● Independiente de lenguaje, plataforma y transporte.
● Diseñado para ser utilizado en ambientes
distribuidos.
● Es el estándar de hecho para los servicios web.
● Tiene buen soporte para otros estándares (WSDL,
WS-*), herramientas y proveedores.
● Provee internamente manejo de errores.
● Es extensible.
36/71
Desventajas de SOAP
● Conceptualmente es mas complejo que REST.
● Su comunicación requiere de mas mensajes
(verbose).
● La curva de aprendizaje es mas empinada.
● Se tiende a depender mas de herramientas para su
desarrollo.
37/71
38/71
Ejemplo implementación servicio web
SOAP desde Java
● Crear el proyecto web
● Crear el servicio web
● Agregar operaciones al servicio web
● Probar su funcionamiento
● Obtener su WSDL
● Invocar el servicio web desde un cliente JSP
39/71
Crear el proyecto
40/71
Tipo del proyecto
41/71
Nombre y ubicación
42/71
Servidor de aplicaciones
43/71
Proyecto creado
44/71
Crear un nuevo servicio web
45/71
Nombre para el nuevo servicio web
46/71
Nuevos elementos del proyecto
47/71
Implementación de las operaciones del
servicio web
48/71
Operaciones del servicio web en vista
de diseño
49/71
Agregar una nueva operación
50/71
Servicio web en vista de diseño
51/71
Implementación de la operación gritar
52/71
Agregar operación directamente
53/71
Probar el servicio web
54/71
JSP de demostración
55/71
Información del servicio web
http://localhost:8080/HolaMundo/MiServicio
56/71
WSDL del servicio web
http://localhost:8080/HolaMundo/MiServicio?wsdl
57/71
Probador del servicio web
http://localhost:8080/HolaMundo/MiServicio?tester
58/71
Invocación de la operación gritar
59/71
Creación del cliente Java
60/71
Información del servicio web para el
cliente
61/71
Invocar el servicio web desde el cliente
62/71
Elegir la operación deseada
63/71
Personalizar la invocación de la
operación
64/71
El resultado final de la invocación
65/71
66/71
<!doctype html>
<html lang="es">
<head>
<meta charset="utf8">
<title>Demostración del cliente SOAP de PHP</title>
<meta name="author" content="Jorge I. Meza">
</head>
<body>
<?php
$client = new SoapClient("http://localhost:8080/HolaMundo/MiServicio?wsdl");
try
{
$quote = "Be less curious about people and more curious about ideas";
$response1 = $client > gritar(array("mensaje" => $quote));
$response2 = $client > longitud(array("mensaje" => $quote));
$response3 = $client > hello(array("name" => "Marie Curie"));
}
catch (Exception $e)
{
echo 'Caught exception: ', $e > getMessage(), "\n";
}
echo "It's true: " . $response1 > return . "<br>";
echo "Length: " . $response2 > return . "<br>";
echo "Greeting: " . $response3 > return . "<br>";
?>
</body>
</html>
67/71
El resultado final de la invocación
68/71
69/71
Evaluación post-contenido
1. Qué es un servicio web ?
2. Cuál es la utilidad de los servicios web ?
3. Para qué sirven XML y JSON ?
4. Qué son RDF, CSV, RSS, ATOM, KML ?
5. Puedo desde una tecnología específica (Java por
ejemplo) consumir servicios web desarrollados en otra
distinta (.NET por ejemplo) ?
6. Qué ventajas/desventajas encuentra entre los servicios
web y la invocación remota de métodos ?
70/71
Actividad
Se desea desarrollar una calculadora distribuida que
permita realizar las siguientes operaciones: suma, resta,
multiplicación, división y módulo.
Estas operaciones deberán ser realizadas en un servidor
remoto y el cliente sólo se deberá encargar de las tareas
de presentación de la información.
Para esto se deberá implementar un servicio web en
Java que provea las operaciones mencionadas y un
cliente JSP para verificar su funcionamiento.
71/71
Comentarios de: Servicios Web (0)
No hay comentarios