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

Tema VI.

Servicios Web
I. Introduccin

Desarrollo de Aplicaciones para Internet


Curso 12|13

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii. WSDL
iii.SOAP
iv.UDDI

4.Referencias

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii. WSDL
iii.SOAP
iv.UDDI

4.Referencias

Introduccin

Los servicios Web son una tecnologa de


llamada a procedimientos remotos (Remote
Procedure Call, RPC)
Sus caractersticas principales son

Uso las tecnologas y protocolos Web


(especialmente HTTP)

Fuertemente basado en XML

Independiente del lenguaje

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii. WSDL
iii.SOAP
iv.UDDI

4.Referencias

Llamada a Procedimientos Remotos

Objetivo principal: Invocacin de procedimientos (o


funciones, o mtodos, etc.) entre dos procesos
Son tecnologas cliente/servidor
Abstraen al programador de las comunicaciones
subyacentes mediante

Gestin del medio de comunicacin (gestin de


sockets, gestin de flujos, etc.)

Gestin de los protocolos de comunicacin

Gestin de la serializacin de los datos


(aplanamiento/marshalling y
desaplanamiento/unmarshalling)

Funcionamiento de RPC

Aunque depende de la tecnologa, el proceso


de una llamada en RPC suele ser
1.El cliente invoca un procedimiento del stub*
cliente (llamada local)
2.El stub cliente empaqueta los parmetros y el
identificador del procedimiento en un mensaje
3.El stub cliente hace una llamada al sistema RPC
para enviar el mensaje y queda a la espera
4.El mensaje se enva al proceso remoto
5.El proceso remoto recibe el mensaje

*Un stub es un sustituto (a menudo transparente) de un objeto que se trabaja para RPC

Funcionamiento de RPC

Proceso de una llamada en RPC (cont.)


6.El mensaje es pasado al stub servidor (skeleton*),
que lo desempaqueta
7.El stub servidor invoca el procedimiento del real con
los parmetros recibidos
8.El stub servidor recoge el resultado de la llamada y lo
empaqueta en un mensaje
9.El mensaje de respuesta se enva al cliente
10.El cliente recibe el mensaje y lo pasa al stub cliente
11.El stub cliente desempaqueta el mensaje y devuelve
como resultado de la llamada

*El stub servidor suele llamarse skeleton

Funcionamiento de RPC

*Imagen tomada de http://en.wikipedia.org/wiki/File:Distributed_object_communication.png

Componentes RPC

Los componentes ms habituales son

Interfaz del servicio

Los procedimientos servidos se suelen definir en una


interfaz
Pueden definirse en el mismo lenguaje que las
implementar o un lenguaje genrico (IDL, Interface
Definition Language)
Los stubs y skeletons se generan a partir de estas
interfaces

Mediante un compilador de interfaces, que crea y compila


las implementaciones
Mediante proxys transparentes creados durante la ejecucin

Componentes RPC

Los componentes ms habituales son


(cont.)

Stub

Representantes del servidor en el cliente


Tiene la misma interfaz que el servicio remoto
Suele ser transparente para el programador (acta
como un objeto local)

Skeleton

Representante de los clientes en el servidor


Conoce a los procedimientos locales servidos por RPC
Es quien hace las llamadas reales

Componentes RPC

Los componentes ms habituales son


(cont.)

Servicio de binding

Aade transparencia de localizacin


Permite asociar un procedimiento remoto con una
ubicacin en la mquina servidor (URL)
Gestiona las invocaciones remotas para que lleguen al
procedimiento real que debe ejecutarse
Decide qu skeleton debe gestionar cada peticin

Tecnologas RPC

Algunas de las tecnologas RPC ms conocidas son

Open Network Computing RPC (ONC RPC / Sun RPC)

Common Object Request Broker Architecture (CORBA)

Unix Remote Procedure Call (RPC)

Java Remote Method Invocation (Java RMI)

XML Remote Procedure Call (XML-RPC)

JSON Remote Procedure Call

Distributed Component Object Model (DCOM)

Windows Communication Foundation

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii. WSDL
iii.SOAP
iv.UDDI

4.Referencias

Servicios Web

Un servicio Web es un sistema software diseado


para soportar interacciones interoperables
mquina-a-mquina sobre una red
Tiene una interfaz descrita en un formato procesable
por mquinas (concretamente WSDL)
Otros sistemas interactan con el servicio Web del
modo que se prescribe en su descripcin usando
mensajes SOAP, tpicamente transportados usando
HTTP con una serializacin de XML en conjunto con
otros estndares Web relacionados

Definicin tomada de http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211/#webservice

Servicios Web vs Otros RPC

Problemas de otros RPC

Complejidad

Coste

Flexibilidad

Soporte

Dependientes de un lenguaje

Estndares cerrados

Falta de acuerdo en la industria

Servicios Web

Ventajas de los Serivicos Web

Cuanto aparecieron las empresas ya haban adoptado


HTTP + TCP/IP como estndar de comunicaciones

XML cubri la necesidad de un sistema de codificacin y


formato de mensajes

Independiente del lenguaje

Independiente de la plataforma

Simples y extensibles

Comunicacin en formato texto (XML)

Uso de estndares abiertos (W3C)

Menos problemas con los firewalls

Su uso se extendi rpidamente (acuerdo en la industria)

Servicios Web

Creados a partir de XML-RPC (por Microsoft e IBM)

Se basan en tres estndares

Simple Object Access Protocol (SOAP)

Web Service Description Language (WSDL)

Lenguaje de descripcin de servicios

Universal Description, Discovery and Integration (UDDI)

Protocolo de comunicaciones

Publicacin y solicitud de servicios

Adems, todos se basan en XML

Descripcin de los servicios

Representar los mensajes enviados

Esquema General

Flujo de Ejecucin
1.El servidor publica el servicio y lo
registra en el registro UDDI
2.El cliente busca un servicio en el
registro UDDI
3.El cliente obtiene la descripcin
(WSDL) del servicio
4.El cliente invoca el servicio
5.El servidor devuelve la respuesta

Es habitual que no exista un


servidor UDDI, con lo que el
WSDL es servido por el propio
servidor

Arquitectura Servicios Web

Definicin tomada de http://www.w3.org/TR/ws-arch/#gwsasd

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii.WSDL
iii.SOAP
iv.UDDI

4.Referencias

WSDL

Es el lenguaje que permite definir los servicios

Puede verse como un IDL

Los servicios se definen utilizando XML

Permiten describir

Servicios

Nombres de servicio (puertos) y argumentos


Tipos de los argumentos y del retorno

Protocolo de transporte a utilizar con cada servicio

Ubicacin del servicio (URI)

Es una recomendacin W3C

Versin 1.1 (ms extendida): http://www.w3.org/TR/wsdl

Versin 2.0 (actual): http://www.w3.org/TR/wsdl20/

Documentos WSDL

Describen un servicio web

Est compuesto por una serie de puertos que


representan los puntos finales (endpoint) de
comunicacin (equivalen a un procedimiento en
RPC)

Se distinguen dos partes

Seccin abstracta: Contiene las definiciones de tipos,


mensajes y las interfaces (tipos de puerto)
Seccin concreta: Contiene los bindings y los
servicios concretos

Ejemplo Cdigo Fuente


Interfaz del Servicio (SEI)

Publicacin del Servicio

Implementacin del Servicio (SIB)

Cliente del Servicio (Perl)

*Ejemplo basado en el propuesto en el libro Java Web Services Up and Running

Ejemplo WSDL

En Faitic podis encontrar los siguientes ficheros

TimeService.tar.gz: Contiene un proyecto Eclipse


con el cdigo del ejemplo. Este proyecto incluye los
ejemplos de WSDL y de SOAP

wsdlRPC.xml: Contiene el WSDL generado utilizando


el estilo RPC

wsdlDocument.xml: Contiene el WSDL generado


utilizando el estilo DOCUMENT

xsdDocument.xml: Contiene el XML Schema


generado utilizando el estilo DOCUMENT

Elementos WSDL

definitions

Es el elemento raz

types (seccin abstracta)

Contiene la definicin de los tipos usados por el servicio


web

Suelen utilizarse los tipos de XML Schema

Es opcional

message (seccin abstracta)

Contiene la definicin de los mensajes intercambiados

Representan tanto a peticiones como a respuestas

Est compuesto una serie de elementos part

Tienen un nombre y un tipo (atributos name y type)

Elementos WSDL

portType (seccin abstracta)

Describe las operaciones que puede realizar el


servicio web

Puede verse como una biblioteca de funciones

Cada operacin (operation) tiene unos


mensajes asociados

Entrada (input): Es el mensaje que espera recibir el


servidor
Salida (output): Es el mensaje que responder el
servidor

Elementos WSDL

portType (continuacin)

El orden y presencia de input y output definen


el modelo de operacin*

One-way (in): Recibe un mensaje pero no genera


respuesta (asncrono)
Notification (out): Enva un mensaje y no espera
respuesta (asncrono)
Request-response (in/out): Recibe un mensaje y
genera respuesta (sncrono)
Solicit-response (out/in): Enva un mensaje y espera
respuesta (sncrono)

*Ms informacin en http://www.roguewave.com/portals/0/products/hydraexpress/


docs/4.6.0/html/rwsfwsdevug/9-2.html

Elementos WSDL

binding (seccin concreta)

Asocia cada grupo de operaciones (portType) con


una codificacin de mensajes y protocolo de
transporte

Tiene dos atributos

type: Indica el portType asociado

name: Indica el nombre del binding

Los elementos internos permiten especificar

El protocolo de aplicacin a utilizar (HTTP o SMTP)


El mtodo de codificacin de los mensajes (rpc o
document)
El formato de los datos utilizados (literal o encoded)

Elementos WSDL

service (seccin concreta)

Agrupar puertos relacionados para publicarlos


como un servicio

Puede incluir una descripcin (description)

Contiene una serie de elementos port

Asocia tipos de puertos (portType) con bindings


(binding) y su ubicacin final

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii. WSDL
iii.SOAP
iv.UDDI

4.Referencias

SOAP

Protocolo de comunicacin entre procesos

Independiente del protocolo de aplicacin


subyacente (HTTP, SMTP, FTP, IIOP, JMS, etc.)

Define como interactuar con el nivel de aplicacin

Define el formato de los mensajes intercambiados


(mediante XML)

Modelo cliente/servidor (unidireccional)

Normas a seguir por cliente y servidor para llevar a


cabo el RPC

Es una recomendacin W3C

Versin 1.2: http://www.w3.org/TR/soap12-part1/

Mensajes SOAP

Definidos utilizando XML

No tienen estado

Esquemas

Sncrono: peticin+respuesta

Asncrono: peticin

Contenido flexible para que se


pueda adaptar a cada servicio

<Envelope>
<Header>
<!-- Opcional -->
</Header>
<Body>

</Body>
</Envelope>

Los mensajes contiene cuatro tipos de elementos

Envelope: Elemento principal

Header: Informacin de cabecera

Body: Cuerpo del mensaje. Contiene peticiones y respuestas

Fault: Indica que se ha producido un error

Mensajes SOAP

Envelope

Elemento raz que debe importar el namespace


http://www.w3.org/2003/05/soap-envelope

Header

Es opcional

Si est presente, debe ser el primer hijo de Envelope

Contiene meta-informacin especfica de la aplicacin


(seguridad, transacciones, autentificacin, etc.)

Los hijos de Header

Deben tener un namespace asociado y estar cualificados


Pueden contener una serie de atributos predefinidos
(encodingStyle, role, mustUnderstand y relay)

Mensajes SOAP

Body

Contiene la informacin que se enva entre


procesos (servicio a invocar, parmetros, etc.)

Su estructura interna es flexible (permite enviar


cualquier estructura XML)

Suele contener bloques con la invocacin o


respuesta de un servicio

Elemento con el nombre del servicio conteniendo

Elementos que representan parmetros


Un elemento que representa el resultado

Es habitual hacer uso de los tipos de XML


Schema

Mensajes SOAP

Fault

Es un elemento interno de Body

Se utiliza cuando se ha producido un error

Sus elementos hijo son

Code

Contiene un elemento Value, con el cdigo de error


Puede contener un elemento Subcode

Reason

Contiene uno o varios elementos Text con una explicacin


legible por humanos del error

Mensajes SOAP

Fault

Sus elementos hijo son (continuacin)

Node (opcional)

Role (opcional)

Contiene informacin sobre que nodo SOAP produjo el error


Contiene el rol del nodo donde se produjo el error

Detail (opcional)

Contiene informacin especfica de la aplicacin

Ejemplo Flujo de una Peticin

En este ejemplo se mostrar el intercambio de


mensajes que se produce en una peticin
Los pasos que veremos son
1.C S: Solicitud del WSDL del servicio
2.S C: Envo del WSDL del servicio
3.C S: Envo de mensaje SOAP para solicitar un
servicio
4.S C: Envo de mensaje SOAP con el resultado de la
solicitud

Adems, se muestra un ejemplo de una respuesta


tras producirse un fallo
Nota: C S: Cliente a Servidor, S C: Servidor a Cliente

Ejemplo Paso 1

Ejemplo Paso 2

Ejemplo Paso 3

Ejemplo Paso 4

Ejemplo TimeException

Ejemplo Fallo

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii. WSDL
iii.SOAP
iv.UDDI

4.Referencias

UDDI

Catlogo de servicios Web

Permite publicar servicios Web ofrecidos

Permite hacer consultas en bsqueda de servicios ofrecidos


por otros proveedores

Es un estndar de OASIS

http://uddi.xml.org/

Proporciona servicios para

Proveedores: Pueden publicar la WSDL de su servicio junto


a una descripcin del mismo

Clientes: Pueden buscar servicios y obtener su WSDL

Componentes UDDI

Pginas Blancas: Contiene informacin de


los servicios Web (direccin, contacto y otros
identificadores conocidos)
Pginas Amarillas: Contiene informacin
categorizada basada en taxonomas
estandarizadas
Pginas Verdes: Contiene informacin
tcnica sobre los servicios proporcionados por
los proveedores

ndice
1.Introduccin
2.Llamada a Procedimientos Remotos (RPC)
3.Servicios Web
i. Introduccin
ii. WSDL
iii.SOAP
iv.UDDI

4.Referencias

Referencias

Java Web Services: Up and Running


Kalin, M. O'Reilly [2009]

Comercio y Negocio Electrnico - Entorno


Tecnolgico (Alternativas)
Reboiro-Jato, M., Lpez-Fernndez, H. - Universidad
de Salamanca [2011]

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