Sei sulla pagina 1di 41

Servicios Web

Introduccin

Un servicio web proporciona una interfaz de servicio


que permite a los clientes interactuar con los
servidores de una manera ms general que los
navegadores web. Los clientes acceden a las
operaciones en la interfaz de un servicio web
mediante solicitudes y respuestas formateadas en
XML y normalmente transmitidas a travs de HTTP.
Los servicios Web tambin proporcionan el
middleware subyacente tanto para el Grid como
para el cloud computing.
Infraestructura y componentes de los Servicios Web

Applications
Directory service Security Choreography

Web Services Service descriptions (in WSDL)

SOAP

URIs (URLs or URNs) XML HTTP, SMTP or other transport

Servicios Web y Servidor Web?

XML para empaquetar/desempaquetar

SOAP especifica reglas para usar XML en empaquetamiento de mensajes

URI- Uniform Resource Indentifier URL o URN

WSDL: Web Service Description Language

Coreografa: directorio patrones de acceso a otros servicios


Servicios Web

Servicio Web: coleccin de operaciones que pueden


ser usadas por un cliente sobre la internet
Caractersticas distintivas:
Uso de XML y SOAP o REST
Combinacin con otros servicios web para construir otras
funcionalidades ()
Patrones de comunicacin: patrones RR sncronos o
asncronos, o combinaciones de ellos.
Acoplamiento Dbil: minimizar las dependencias entre servicios
para tener una arquitectura flexible
Uso de interfaces
Caractersticas distintivas


Acoplamiento Dbil: cont ...

Tendencia a la simplicidad: ejm, REST usa interfaces mnimas
(GOOGLE)

Uso de mltiples paradigmas de comunicacin (RR, Asncronos,
indirectos). Esto afecta el nivel de acoplamiento

Representacin del mensaje

SOAP y datos usan XML para su representacin. Ventaja: formato
lectura-humana. Desventaja: espacio que ocupa la representacin
textual y el tiempo de procesamiento (parse)

REST: Representational State Transfer



Clientes usan URL y HTTP (GET, PUT, DELETE, POST)

Representacin en XML

Enfasis en manipulacin de recursos de datos sobre interfaces

Amazon tiene 80% RR , 20% SOAP
Caractersticas distintivas


Referencia a servicios: Uso de URL (URN) para
referenciar servicios

Activacin de servicios: el servicio puede estar activo o
activarse por demanda, y estar replicado. URL es una
referencia persistente

Transparencia: a diferencia de otras plataformas
middleware, servicios web proveen transparencia, en
niveles simples, por medio de SOAP y XML. En otros
niveles, proporcionan API

Uso de Proxies o despachadores (Stub) para esconder llamadas
locales y remotas

Invocacin Dinmica: se proporciona una operacin genrica (en vez
de proxies) para procedimientos remotos

El cliente especifica el nombre de la operacin, argumentos y
se convierten con SOAP y XML
SOAP

Su propsito es establecer una interaccin


asncrona entre el cliente y el servidor

Define un esquema con XML, donde se


representa el contenido de una solicitud
respuesta de un mensaje

Se usa con protocolos HTTP, SMTP, TCP, UDP

Es un estndard W3C. Es una extensin de XML-


RPC
SOAP

La especificacin SOAP establece:



cmo se va a utilizar XML para representar los
contenidos de los mensajes individuales;

cmo un par de mensajes individuales se pueden
combinar para producir un patrn de solicitud-
respuesta de un mensaje;

las normas en cuanto a cmo los destinatarios de los
mensajes deben procesar los elementos XML que
contienen;

cmo HTTP y SMTP se debe utilizar para comunicar
mensajes SOAP.
SOAP: mensajes en una envoltura

envelope
header
header element header element

body
body element body element

Espacio de nombre SOAP XML se usa para especificar la envoltura,


el encabezado y el cuerpo
SOAP: mensajes en una envoltura

Un mensaje SOAP puede ser un documento o un


soporte a la comunicacin Cliente-Servidor:

Un documento se coloca directamente en el interior del
elemento de cuerpo junto con una referencia a un
esquema XML que contiene la descripcin del servicio
(nombres y tipos utilizados en el documento). Este tipo
de mensaje puede ser enviado sincrna o
asincrnamente.

Para la comunicacin cliente-servidor, el elemento del
cuerpo body contiene ya sea una solicitud (Request)
o una respuesta (Replay).
Ejemplo de una solicitud (Request) sin encabezado
headers

env:envelope xmlns:env =namespace URI for SOAP envelopes


env:body

m:exchange
xmlns:m = namespace URI of the service description
m:arg1 m:arg2
Hello World

In this figure and the next, each XML element is represented by a shaded
box with its name in italic followed by any attributes and its content

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
Ejemplo de una respuesta correspondiente a una
solicitud

env:envelope xmlns:env = namespace URI for SOAP envelope


env:body
m:exchangeResponse
xmlns:m = namespace URI for the service description
m:res1 m:res2
World Hello

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
SOAP: encabezados (headers)

Encabezado de los mensajes SOAP pueden ser


manipulados o usados por los intermediarios
para agregar mensajes al servicio que se lleva en
el cuerpo correspondiente
SOAP: encabezados (headers)
No especificado en el estndard

Cmo se usan los encabezados por un servicio sobre


el middleware? Ejemplo, la cabecera puede contener:

Un identificador de transaccin para el uso con una
transaccin de un servicio;

Un identificador de mensaje para relacionar mensajes entre
s, por ejemplo, para la implementacin de la entrega
confiable ;

Un nombre de usuario, una firma digital o una clave pblica.
Cmo son enviados los mensajes a travs de un
conjunto de intermediarios al beneficiario?

Ejemplo, un mensaje transportado por HTTP podra ser enrutado a
travs de una cadena de servidores proxy, algunos de los cuales
podra asumir un rol SOAP.

NOTA: no se especifica roles o deberes de intermediarios


Uso de solicitud HTTP POST en comunicacin cliente-
servidor SOAP

POST /examples/stringer endpoint address

header
Host: www.cdk4.net

HTTP
Content-Type: application/soap+xml
Action: http://www.cdk4.net/examples/stringer#exchange action

<env:envelope xmlns:env= namespace URI for SOAP envelope

message
<env:header> </env:header>
<env:body> </env:body>

Soap
</env:Envelope>

Transporte SOAP: enviar mensaje SOAP a su destino

El mensaje SOAP es independiente del transporte que se usa

HTTP se usa para retornar el contenido de un respuesta a una


solicitud SOAP.
NOTA: HTTP GET puede ser usado si solo se solicita informacin. No actualizacin
Servicios Web: confiabilidad de la comunicacin

SOAP usualmente usa HTTP sobre TCP por lo que


esta afectado por el modelo de fallas de TCP.

OASIS (www.oasis.org) propone la semntica:

Al - menos una vez : El mensaje se entrega al menos una vez , pero
un error se reporta si no puede ser entregado.

Al - ms - una vez : El mensaje se entrega como mximo una vez ,
pero sin ningn tipo de informe de errores si no se puede entregar .

Exactamente -uno: El mensaje se entrega exactamente una vez ,
pero un error se informa si no puede ser entregado.
Orden de los mensajes se puede combinar con los anteriores:

En orden : Los mensajes se entregan al destino en el orden en el
que fueron enviados por un remitente particular.

NOTA: no debe confundirse con la semntica de RPC


A SOAP Based System In A Nutshell

From Globus.org
(Grid computing)

wscompile y wsdeploy
With Stubs

From Globus.org
(Grid computing)
Figure 9.7
Java web service interface ShapeList

import java.rmi.*;
public interface ShapeList extends Remote {
int newShape(GraphicalObject g) throws RemoteException;
int numberOfShapes()throws RemoteException;
int getVersion() throws RemoteException;
int getGOVersion(int i)throws RemoteException;
GraphicalObject getAllState(int i) throws RemoteException;
}

Debe extender la interfaz Remote

No tiene declaraciones de constantes , ( como public final static)

Los mtodos deben java.rmi.RemoteException o una de sus subclases

Parmetros o tipos que se retornan deben estar en los tipos de JAX-RPC

Contenedor de Servlet: incluye un despachador y esqueleto


Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
Figure 9.8
Java implementation of the ShapeList server
import java.util.Vector;
public class ShapeListImpl implements ShapeList {
private Vector theList = new Vector();
private int version = 0;
private Vector theVersions = new Vector();
public int newShape(GraphicalObject g) throws RemoteException{
version++;
theList.addElement(g);
theVersions.addElement(new Integer(version));
return theList.size();
}
public int numberOfShapes(){}
public int getVersion() {}
public int getGOVersion(int i){ }
public GraphicalObject getAllState(int i) {}
}
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
Figure 9.9
Java implementation of the ShapeList client

package staticstub;
import javax.xml.rpc.Stub;
public class ShapeListClient {
public static void main(String[] args) { /* pass URL of service */
try {
Stub proxy = createProxy(); 1
proxy._setProperty 2
(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, args[0]);
ShapeList aShapeList = (ShapeList)proxy; 3
GraphicalObject g = aShapeList.getAllState(0); 4
} catch (Exception ex) { ex.printStackTrace(); }
}
private static Stub createProxy() { 5
return
(Stub) (new MyShapeListService_Impl().getShapeListPort()); 6
}
}
Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
Descripcin del servicio e IDL para Servicios Web

Las interfaces son necesarias para permitir la


comunicacin de los clientes con los serv icios

La definicin de las interfaces son proporcionadas


por la descripcin de servicios

Descripcin de Servicios especifica como los


mensajes son comunicados y el URI del servicio

Es un acuerdo entre cliente y servidor de como se va a
ofrecer un servicio

Se usa para generar stub del cliente que
automticamente implementa el comportamiento
correcto del cliente
Descripcin del servicio: WSLD

El Lenguaje para Descripcin de Servicios Web


(Web Service Language Description, WSDL) se
usa para describir los servicios

WSLD define, usando esquema XML, la


representacin de los componentes de la
descripcin de servicios

Definicin de nombre de elementos, tipos, mensajes,
interfaz, enlaces y servicios
Los elemento principales en la descripcin WSDL

definitions
types message interface bindings services

target namespace document style request-reply style how where


abstract concrete

Abstracta: conjunto de definiciones de los tipos usados por el servicio



Tipo: <element name="isFilled" type="boolean"/>

Mensaje:descripcin del mensaje que se intercambiar. Tambin
describe los tipos de mensajes
Concreta: enlace y servicio, ambas dependen del protocolo que se use
WSDL: Mensajes solicitud respuesta para la operacin
newShape

message name = "ShapeList_newShape" message name = "ShapeList_newShapeResponse"

part name ="GraphicalObject_1" part name= "result"


type = "ns:GraphicalObject " type = "xsd:int"

tns target namespace xsd XML schema definitions

WSDL describe los mensajes que pueden intercambiarse:


Patrn de intercambio de mensajes para operaciones
WSDL

Name Messages sent by

Client Server Delivery Fault message


Request Reply may replace Reply
In-Out
Request no fault message
In-Only
Robust In-Only Request guaranteed may be sent

Out-In Reply Request may replace Reply

Out-Only Request no fault message


Robust Out-Only Request guaranteed may send fault

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
WSDL: operacin newShape

operation name = "newShape"


pattern = In-Out
input message = tns:ShapeList_newShape

output message ="tns:ShapeList_newShapeResponse"

tns target namespace xsd XML schema definitions


The names operation, pattern, input and output are defined in the XML schema for WSDL

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
SOAP enlaces (binding) y definicin de servicios
binding service
name = ShapeListBinding name = "MyShapeListService"
type = tns:ShapeList
soap:binding transport = URI endpoint
for schemas for soap/http
style= "rpc" name = "ShapeListPort"
binding = "tns:ShapeListBinding"
operation
name= "newShape"
input soap:address
soap:body location = service URI
encoding, namespace

output
soap:body
encoding, namespace

soap:operation the service URI is:


soapAction http://localhost:8080/ShapeList-jaxrpc/ShapeList

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
Estructura de datos UDDI -Universal Description
Discovery and Integration-

businessEntity businessServices
human readable businessServices
information
businessServices bindingTemplate
about the publisher
human readable bindingTemplate
information URL
about a bindingTemplate tModel
family of services information tModel
about the
URL
serviceinterfaces
service interfaces
tModel
key URL
key service descriptions
key


UDDI proporciona un API para la ubicacin de servicio:

get_xxx -- get_businessDetail, get_ServiceDetail ...

find_xxx --- find_business, find_Service ...

El servidor posee un URI para identificar el API del UDDI
XML: Seguridad

Seguridad XML es un conjunto de diseos W3C


para registro, manejo de claves y encriptacin

Seguridad XML se relaciona con la aplicacin en


SOAP de la integridad, confidencialidad y
autenticacin del mensaje

Seguridad XML se definen en etiquetas que indican


cuales secciones del documento estan encriptadas
o seguras
XML: Seguridad

Requerimientos Bsicos:
Capacidad de encriptar un documento o parte de ello
Capacidad de proteger el acceso de un documento o
parte de ello

Requerimientos adicionales
Aadir secciones a un documento con acceso
protegido y proteger el resultado
Autorizar la lectura de diferentes partes del
documento a diferentes usuarios
Aadir secciones a un documento con partes
encriptadas y encriptar algo o toda la versin nueva
XML: Seguridad

Requerimientos con Algoritmos:


Se debe especificar un algoritmo adecuado para la
implementacin de la seguridad XML
El algoritmo usado para encriptacin y autenticacin
de un documento debe ser seleccionado de un
conjunto y los nombres de los algoritmos deben ser
referenciados dentro del documento XML
XML: Seguridad

Requerimientos con bsqueda de claves:


Ayudar al usuario de documentos seguros en la bsqueda de
las claves necesarias, ejm proporcionar keyInfo
Posibilitar la cooperacin entre usuarios para ayudar con
otras la obtencin claves, ejm usuario A agrega informacin
adicional al KeyInfo para que usuario B valide, y...

KeyInfo: clave proporcionada por XML y usada para validar una


identificacin o desencriptar datos
XML Canonico usado como firma digital y garantiza que el
contenido de un documento no pueda ser cambiado
Algoritmos requeridos para la firmas XML

Type of algorithm Name of algorithm Required reference

Message digest SHA-1 Required Section 7.4.3

Encoding base64 Required [Freed and Borenstein 1996]

Signature DSA with SHA-1 Required [NIST 1994]

(asymmetric) RSA with SHA-1 Recommended Section 7.3.2

MAC signature HMAC-SHA-1 Required Section 7.4.2 and Krawczyk


(symmetric) et al. [1997]

Canonicalization Canonical XML Required Page 810

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
XML: Seguridad

XML encriptacin:
Es una recomendacin XML que especifica la
manera de representar datos encriptados y el
proceso de encriptar-desencriptar
Conformado por un conjunto de algoritmos
requeridos y opcionales
Algoritmos requidos para encriptacin (adems de
referidos anteriormente)

Type of algorithm Name of algorithm Required reference

Block cipher TRIPLEDES, required Section 7.3.1


AES 128
AES-256
AES-192 optional

Encoding base64 required [Freed and Borenstein 1996]

Key transport RSA-v1.5, required Section 7.3.2


RSA-OAEP [Kaliski and Staddon 1998]

Symmetric key TRIPLEDES required [Housley 2002]


wrap (signature KeyWrap,
by shared key) AES-128 KeyWrap,
AES 256KeyWrap
AES-192 KeyWrap optional

Key agreement Diffie-Hellman optional [Rescorla, 1999]

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
XML: Coreografa

Coreografa se refiere al lenguaje basado en


WSDL para definir coordinacin entre servicios
web.

Una coreografa proporciona una descripcin


global de un conjunto de interacciones, mostrando
el comportamiento de los participantes y como
operan entre ellos

Soportan las interacciones entre servicios web


manejados por distintas organizaciones
XML: Coreografa

Propsito:
esboza el cdigo generado para un nuevo
servicio que desea participar;
como base para la generacin de mensajes
de prueba para un nuevo servicio;
promover un entendimiento comn de la
colaboracin;
analizar la colaboracin, por ejemplo, para
identificar posibles situaciones de punto
muerto (deadlock)
XML: Coreografa

El lenguaje para coreografa debe incluir

composicin jerrquica y recursiva de coreografas ;

la posibilidad de aadir nuevas instancias de un servicio existente y los nuevos


servicios ;

caminos concurrentes y/o alternativos, y la capacidad de repetir una seccin


de una coreografa;

tiempos de espera variables - ejm, diferentes periodos para reservas;

excepciones, ejm, mensajes fuera de secuencia y cancelaciones;

interacciones asncronas ( callbacks );

pase de referencia, ejm, permitir que una empresa consulte un banco para una
verificacin de crdito en nombre de un usuario;

marca de lmites de las transacciones separadas que tienen lugar, por


ejemplo,permitir la recuperacin ;

la posibilidad de incluir la documentacin legible


Escenario del agente viajero

1. El cliente solicita el servicio de agente de viajes para obtener informacin sobre un conjunto de servicios;
por ejemplo , vuelos, alquiler de coches y reservas de hotel.
2. El servicio de agente de viajes recoge los precios y la disponibilidad de informacin y la enva al cliente ,
que elige una de las siguientes en nombre del usuario:
(a)refinar la consulta, posiblemente con ms proveedores para obtener ms informacin, a continuacin,
repita el paso 2;
(b) hacer las reservas;
(c) salir.
3. El cliente solicita una reseervacin y el servicio de agente de viajes chequea disponibilidad.
4.Cualquiera de estos opciones estn disponibles ;
o los servicios no estn disponibles ;
o bien las alternativas se ofrecen al cliente que se remonta al paso 3 ;
o el cliente vuelve al paso 1
5. Toma deposito.
6. Dar al cliente un nmero de reserva como una confirmacin.
7. Durante el perodo hasta el pago final , el cliente puede modificar o cancelar reservas

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012
Una seleccin de Servicios Web Amazon

Instructors Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
Pearson Education 2012

Potrebbero piacerti anche