El documento describe los conceptos y tecnologías asociados con los servicios web, incluyendo SOAP, WSDL y UDDI. Explica que WSDL permite especificar las operaciones y tipos de datos de un servicio web en XML, describiendo la interfaz, tipos de mensajes, protocolos de transporte y ubicaciones. También cubre conceptos como la vinculación de operaciones abstractas a implementaciones concretas y la agrupación lógica de puertos en servicios.
1. Servicios Web
Programación de Red.
Ingeniería en Informática
2. Servicios Web
Objetivos:
Conocer el concepto de Servicios Web y toda
la tecnología asociada
Conocer los protocolos más importantes
asociados a Servicios Web
Estudiar SOAP, WSDL y UDDI (WSIL)
Dar un visión general sobre orquestación de
Servicios Web
Conocer algunos aspectos de seguridad en
Servicios Web 2
3. Servicios Web
Concepto de Servicio Web.
SOAP.
WSDL.
UDDI (WSIL).
Orquestación de Servicios Web.
Seguridad
3
4. WSDL
WSDL (Web Services Description Language)
Permite especificar en XML las operaciones y tipos de
datos de un servicio web
Estandarizado por el W3C
Analogía con CORBA: WSDL/IDL
WSDL describe:
Información sobre la interfaz exportada
Tipos de datos de los mensajes intercambiados
Información de “binding” (mecanismos de interacción)
definiendo cómo transportar los mensajes en la comunicación
Direcciones para localizar los servicios (localización)
Representa como un contrato entre el proveedor y el
usuario del servicio (similar interfaz Java) 4
5. WSDL
¿Qué es WSDL?
WSDL es el lenguaje estándar (dialecto de XML)
para la descripción de Servicios Web
Una definición WSDL es un documento escrito en
XML que describe un servicio Web a partir de los
mensajes que acepta y las operaciones que se
pueden ejecutar sobre ellos
WSDL es extensible y se pude utilizar para
describir, prácticamente, cualquier servicio de red,
incluyendo SOAP sobre HTTP e incluso
protocolos que no se basan en XML como DCOM
sobre UDP
5
6. SOAP
Objetivos de WSDL
Definir los mensajes y las operaciones de
manera abstracta, para luego vincularlos a un
protocolo de transporte y un formato de
mensajes concreto ⇒ permite al proveedor de
los servicios reutilizar estas definiciones e
implementar los mismos servicios con distintos
formatos de mensaje y distintos protocolos de
transporte
Ser muy general para definir cualquier tipo de
servicio web. Su uso no se restringe a SOAP
⇒ WSDL 1.1 → SOAP sobre HTTP y SMTP 6
7. WSDL
WSDL ofrece un marco para definir:
Inteface ⇒ operaciones con sus entradas y salidas
Access Specification ⇒ SOAP bindings (RPC)
Endpoint ⇒ Localización del Sevicio
Soporta
Port Type Operation
Formatos y
Protocolos Input y Output
Cómo codificar
Binding Message
Implementa
Ofrece
Port Service 7
8. WSDL
WSDL especifica:
Un documento WSDL describe tres
propiedades fundamentales de un servicio web
Qué hace un servicio ⇒ los mensajes y las
operaciones que soporta
Cómo se accede al servicio (mecanismos de
interacción (binding)) ⇒ qué protocolo hay que usar
para acceder al servicio y cómo se representan los
datos de las operaciones
Dónde está ubicado el servicio web (localización
del servicio) ⇒ una dirección URL si se usa HTTP,
una dirección de e-mail si se usa SMTP, etc. 8
10. WSDL
WSDL
Un documento WSDL describe los servicios
como colecciones puertos (puntos finales de
red)
WSDL separa: la definición abstracta de
puertos y de mensajes (especificación
abstracta) de la instalación concreta de red o
de los enlaces del formato de datos
(implementación concreta de esas
especificaciones) ⇒ reutilización de
definiciones abstractas (mensajes y tipos de
puertos) 10
11. WSDL
WSDL
WSDL separa: la definición de la interfaz del
servicio web (interfaz abstracta) de la definición
de la implementación (servicio web)
Conceptos:
Mensajes ⇒ Descripciones abstractas de los datos
que se están intercambiando
Tipos de puertos ⇒ Colecciones abstractas de
operaciones
Puerto ⇒ Un puerto se define por la asociación de
una dirección de red y un enlace reutilizable; una
colección de puertos define un servicio 11
12. WSDL
WSDL
Ventajas del uso de WSDL:
Tener perfectamente definida la interfaz del servicio
web ⇒ nombre de la función, parámetros y orden
Facilitar la estructuración de objetos y su
construcción (basado en XML)
Reducir el coste de los cambios en los clientes ⇒
permitir actualizaciones casi automáticas y reducir
los tiempos entre codificación y explotación
Hacer atractivo el uso de servicios web
Existencia de herramientas que generan
automáticamente documentos WSDL 12
13. WSDL
WSDL
Desventajas del uso de WSDL:
No hay manera de ver si el proveedor del
servicio ha realizado cambios en la interfaz
de entrada ⇒ enviar mensajes a los clientes
avisando de dichos cambios
Define completamente la semántica de los
servicios web?
13
14. WSDL
Estructura de un documento WSDL
Especificación WSDL + (parte abstracta + parte
concreta)
Parte abstracta ⇒ tipos
(estructuras de datos que se
intercambian), mensajes,
operaciones y tipos de puertos
Parte concreta ⇒ protocolo de
transporte (binding), conjunto
exacto de puertos que
implementa, direcciónes en los
que están accesibles y los
servicios (agrupaciones lógicas de
14
puertos)
15. WSDL
Estructura de un documento WSDL
Tipos ⇒ Estructuras de datos (tipos de datos
que usarán los mensajes) que se intercambian
XML Schema tiene tipos básicos pero pertime definir
tipos complejos
Mensajes ⇒ Cada mensaje (descripciones
abstractas de los datos que se intercambian)
es un documento tipado con partes. Cada parte
se caracteriza por un nombre y un tipo
Por ejemplo, la invocación de un procedimiento con
dos parámetros, un entero y un real ⇒se puede
definir como un mensaje con dos partes 15
16. WSDL
Estructura de un documento WSDL
Operaciones ⇒ Hay 4 tipos de operaciones
(especificación de la interfaz abstracta)
One-way (un sentido) ⇒ El cliente invoca un servicio enviando
un único mensaje al servidor, pero no recibe respuesta del
servidor (1 mensaje, asíncrono)
Notificacion (notificación) ⇒ El servidor envía un único
mensaje al cliente (1 mensaje, asíncrono)
Request-response (petición-respuesta) ⇒ El servidor es
invocado por el cliente y responde (2 mensajes, síncrono).
Comunicación tipo RPC
Solicit-response (solicitud-respuesta) ⇒ El servidor invoca
una petición y espera respuesta del cliente (2 mensajes,
síncrono)
Tipos de puerto ⇒ Agrupan operaciones 16
17. WSDL
Estructura de un documento WSDL
Binding (InterfaceBinding) ⇒ Especifica la
codificación del mensaje y el protocolo de
transporte (protocol bindings) para todas las
operaciones y mensajes definidos en un tipo de
puerto. Por ejemplo
Una operación en estilo RPC
El mensaje de una operación tiene que utilizar
SOAP como protocolo de aplicación, y HTTP como
protocolo de transporte
Reglas de codificación utilizadas para serializar
partes de un mensaje en XML: literal y encoding
(RPC, utiliza reglas de codificación SOAP) 17
18. WSDL
Estructura de un documento WSDL
Binding (InterfaceBinding) ⇒ Mecanismo de
enlace entre la definición abstracta de un
servicio web y una implementación específica,
utilizando: (1) un protocolo de mensajes, un
modelo de codificación de datos y un protocolo
de transporte concretos
Puertos (Ports o EndPoints) ⇒ Combinan la
información de los Bindings con direcciones de
red (especificados por una URI) en la que se
puede acceder a la implementación del tipo
de puerto
18
19. WSDL
Estructura de un documento WSDL
Servicios ⇒ puertos que están implementados
como un grupo. Permiten que la misma
funcionalidad sea accesible en diferentes
estilos de interacción y con diferentes
protocolos de transporte
Agrupaciones lógicas de puertos. Un servicio específico WSDL
podría estar accesible en diferentes direcciones (URLs de
diferentes máquinas)
Un servicio WSDL agrupa puertos relacionados, disponibles
con frecuencia en una misma dirección
Otra agrupación posible es utilizar diferentes puertos que
representan diferentes bindings del mismo tipo de puerto 19
20. WSDL
Estructura de un documento WSDL
Añadiendo InterfaceBindings, Ports y Services ⇒ la
definición de la interface se va concretado
Con la información de binding ⇒ los usuarios conocen
qué protocolos usar, cómo estructurar los mensajes
XML, y qué se espera al enviar el mensaje → WSDL
1.1 define extensiones binding para SOAP, HTTP GET
y POST, y MIME
Con la información de port ⇒ el usuario conoce la
dirección en la que se implementa un tipo de puerto
Con el service ⇒ el usuario conoce todos los puertos
que están implementados como un grupo 20
21. WSDL
Descripciones del WSDL
El documento WSDL es descriptivo, y su finalidad es la
de ofrecer toda la información posible al programador
para poder realizar la codificación del cliente que
aceptará el servicio o los servicios descritos en él
Una interfaz tiene la misión de dar a conocer la forma
que tendrá un objeto visto desde fuera, conociendo sus
“enganches” con el resto del sistema, pero no tiene que
dar información de qué o cómo se realizan las
operaciones por dentro
Un documento WSDL utiliza los siguientes elementos
en la definición de servicios web
types (tipos), message (mensaje), operation (operación) portType
(tipo de puerto), binding (enlace), port (puerto) y service (servicio) 21
22. WSDL
Descripciones del WSDL
types ⇒ Contenedor de definiciones de tipos de datos
que se intercambien en los mensajes, utilizando algún
sistema de tipos (XML Schema, XSD)
message ⇒ Descripción abstracta de los datos que se
están intercambiando (colecciones de datos)
operation ⇒ Descripción abstracta de una acción
admitida por el servicio
portType ⇒ Representación abstracta del servicio web
(interfaz real del servicio web), indicando el orden de
intercambio de mensajes. Conjunto abstracto de
operaciones admitidas por uno o más puertos 22
23. WSDL
Descripciones del WSDL
binding ⇒ Definición concreta de los portType.
Especificación del protocolo de transporte y del
formato de datos para un portType
determinado
port ⇒ Punto final único que se define como la
combinación de un enlace y una dirección de
red. Direcciones implementando el servicio
service ⇒ colección de puntos finales
(puertos) relacionados
23
24. WSDL
Descripciones del WSDL
Relación entre elementos de un documento WSDL
message → colecciones de
datos, representaciones
abstractas de los datos
transmitidos. Cada mensaje
conta de varias partes lógicas
(part), cada una de las
cuales tiene asociado un tipo
(type) que debe de estar
previamente definido. Cada
part indica un parámetro que
se transmitirá junto con el
mensaje 24
27. WSDL
Morfología de un documento WSDL
Archivo XML: <?xml version=“1.0”?>
Elemento raíz ⇒ <wsdl:definitions …>
Atributos de definitios:
name, targetNamespace,
xmlns=“http://schemas.xmlsoap.org/defnitions”, y
otros namespaces de: SOAP, XML Schema, etc.
Partes del documento WSDL: Preámbulo,
Descripción (de la traducción de método a
mensaje), Información de mensajes y
Localización del servicio 27
28. WSDL
Morfología de un documento WSDL
WSDL
Tipos de datos <wsdl:type/>
Preámbulo
Mensajes <wsdl:message/>
Interfaces <wsdl:portType/> Descripción
Implementaciones <wsdl:binding/> Información de
mensajes
Localizaciones <wsdl:service/> Localización del
servicio 28
29. WSDL
Morfología de un documento WSDL
Preámbulo
Sirve para introducir el servicio ⇒ indicando los
tipos de datos utilizados en las distintas
transacciones, presentación de los mensajes que se
darán durante las transacciones y la declaración de
los namespaces que se van a utilizar
Lenguaje la descripción y especificación de los tipos
de datos en el documento ⇒ XML Schema
Vincular la definición de tipos de datos al
documento: (1) dentro del preámbulo <wsdl:type
…/>, (2) en archivo aparte <wsdl:import …/> 29
31. WSDL
Morfología de un documento WSDL
Descripción
Sirve para describir de forma abstracta el servicio
web. Traducción de método a mensaje
Elemento <wsdl:portType> y debe haber uno por
cada servicio que se quiere concretar
Dentro de <wsdl:portType> se definirán las
operaciones (interfaces) y tipos de mensajes que se
van a utilizar que puede acceder un cliente ⇒
funciones públicas que soporta (<wsdl:operation>)
Las funciones se llaman mediante mensajes y se
contestarán también a través de ellos 31
32. WSDL
Morfología de un documento WSDL
Descripción
Dentro de cada <wsdl:operation> es necesario
definir los mensajes que se darán durante su
llamada, y el orden en que se pueden dar (modelo
de intercambio de mensajes)
Tipos de mensajes:
input ⇒ mensajes que emite el cliente como entrada al
servicio web
output ⇒ mensajes que son emitidos por el servicio web
(respuesta a los mensajes input), y contendrán los datos de
respuesta
fault ⇒ mensajes de condiciones de error
32
34. WSDL
Morfología de un documento WSDL
Operación unidireccional (one-way) ⇒ Petición → un
mensaje de entrada del cliente al servidor sin esperar
respuesta <wsdl:input message=“”>
Operación petición/respuesta (request-response) ⇒
Llamada a una función remota (envia petición y
devuelve mensaje de respuesta) <wsdl:input
message=“”> <wsdl:output message=“”>
Operación solicitud/respuesta (solicit-response) ⇒ El
servidor envia un mensaje y el cliente respode
<wsdl:output message=“”> <wsdl:input message=“”>
Operación de notificación (notification) ⇒ El servidor
envía un mensaje y no recibe ninguna respuesta
<wsdl:output message=“”> 34
35. WSDL
Morfología de un documento WSDL
Modelo de intercambio de mensajes (Op.) ⇒ One-way,
Notificacion, Request-response, Solicit-response
35
36. WSDL
Morfología de un documento WSDL
Información de mensajes
Sirve para establecer el enlace ente la interfaz
abstracta y las características concretas de la
implementación (método de transporte, dirección de
acceso, ...). <wsdl:binding>
<wsdl:binding> ⇒ define cómo se transmitirán los
mensajes y qué protocolo de transporte (SOAP,
HTTP, SMTP, …) se utilizará. Además se completa
la información del elemento <wsdl:portType>
(definción concreta de la interfaz)
Definición más complicada que <wsdl:portType> 36
37. WSDL
Morfología de un documento WSDL
Información de mensajes
<soap:binding> ⇒ indica que los mensajes van a
ser de tipo SOAP. Define el protocolo de transporte
mediante el atributo transport, y el tipo de mensaje
SOAP que se va a transmitir mediante el atributo
style (rpc y document (transacciones EDI))
<soap:body> ⇒ define qué partes del mensaje se
incluirán en el Body del mensaje SOAP, y cómo
serán incluidas las partes. El atributo parts
(opcional) indica qué partes deben incluirse en el
Body de mensaje SOAP, y si no aparece ⇒ se
incluirán todas 37
38. WSDL
Morfología de un documento WSDL
Información de mensajes
<soap:fault> ⇒ aparece para indicar que que se
realice una acción distinta en caso de cualquier tipo
de error y especifica el contenido del mensaje que
se recibirá en tal caso (especifica los contenidos del
elemento detail (además de faultcode,
faultstring y faultactor) dentro del elemento
Fault en el mensaje SOAP)
<soap:header> y <soap:headerdefault> ⇒ permiten
definir cabeceras que serán transmitidas dentro del
elemento Header del mensaje SOAP, y aparecerá
antes del elemento <soap:body> 38
39. WSDL
Morfología de un documento WSDL
Información de mensajes
<soap:operation> ⇒ define el valor del elemento
soapAction cuando se utiliza el protocolo HTTP. Y
sirve para conocer el tipo de mensaje que se dará
mendiante el atributo style
<wsdl:operation> ⇒ dentro de este elemento se
detalla la información de las funciones que están
disponibles en la interfaz, y el nombre de dichas
funciones debe de coincidir con el que se le dio en
<wsdl:portType>. Mediante el atributo name se indica
el nombre de la función que se definirá
<wsdl:documentation>, <wsdl:input>,
<wsdl:output> y <wsdl:fault> ⇔ <wsdl:portType> 39
41. WSDL
Morfología de un documento WSDL
Localización del servicio
<wsdl:service> ⇒ sirve para indicarnos dónde está
el servicio web y dónde hay que enviar las
peticiones
<wsdl:port> ⇒ Indica el puerto al que se conectará
el cliente para realizar las peticiones
<soap:address> ⇒ se utiliza dentro del elemento
<wsdl:port> para indicar la URL del acceso al
servicio SOAP, indicada en el atributo location
Un servicio web no tiene porque está ligado a una
única URL. Diferentes URLs para un mismo servicio
→ definir varios <wsdl:port> 41
42. WSDL
Morfología de un documento WSDL
Localización del servicio
<wsdl:service name="Hello_Service">
<wsdl:documentation>WSDL File for
HelloService</wsdl:documentation>
<wsdl:port binding="tns:Hello_Binding“
name="Hello_Port">
<soap:address
location="http://localhost:8080/soap/servlet/rpcrouter"/>
</wsdl:port>
</wsdl:service>
42
50. WSDL
Ejemplo de documento WSDL a partir de Java
Definición completa del servicio web ⇒ Definición de tipos,
mensajes, portTypes, binding y service
50
51. WSDL
Ejemplo de documento WSDL a partir de Java
<?xml version='1.0' encoding='UTF-8' ?>
<definitions name ='servicioH' targetNamespace =
'http://tempuri.org/wsdl/‘
xmlns:wsdlns='http://tempuri.org/wsdl/‘
xmlns:typens='http://tempuri.org/type‘
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/‘
xmlns:xsd='http://www.w3.org/2001/XMLSchema‘
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<documentation>
Este servicio web busca hoteles en una ciudad específica
</documentation>
<types> … </types>
<message> … </message>
<portType> … </portType>
<binding> … </binding>
<service> … </service>
</definitions> 51
52. WSDL
Protocolos en WSDL
Según la especificación, WSDL puede usarse
con cualquier protocolo de transporte y de
formato de mensajes. La especificación WSDL
sólo define bindings para tres protocolos:
SOAP, HTTP GET/POST y MIME
El binding SOAP y el binding HTTP definen el
modo de transporte, el modo de invocación y la
codificación. Sin embargo, el binding MIME
sólo define el modo de codificación y ha de
combinarse con alguno de los anteriores para
concretar el modo de transporte e invocación
52
53. WSDL
Protocolos en WSDL. Binding SOAP
El binding SOAP para WSDL proporciona una manera
de indicar:
Que los mensajes van a ser de tipo SOAP
La cabecera SOAPAction que hay que usar en los
mensajes si el transporte es HTTP
El resto de cabeceras que haya que usar en los
mensajes
La dirección a la que se deben enviar los mensajes
Los elementos de un binding no forman parte del
espacio de nombres de WSDL. El binding SOAP está
definido en http://schemas.xmlsoap.org/wsdl/soap/53
55. WSDL
Protocolos en WSDL. Binding HTTP GET/POST
El binding define tres maneras diferentes en enlazar un
mensaje con una dirección HTTP:
HTTP GET con codificación de la URL
HTTP GET con sustitución de URL
HTTP POST
Estos métodos permiten que un servicio sea usado por
un navegador HTTP estándar ⇒ lo que haría al servicio
accesible a una gran variedad de clientes
(navegadores, PDAs, teléfonos móviles, etc.)
<binding name="postBinding" type="addPortType">
<http:binding verb="POST"/>
<operation name="add">
<http:operation location="o1"/>
<input> … </input> … <output> … </output> …
</operation>
55
</binding>
56. WSDL
Protocolos en WSDL. Binding MIME
Hay enlaces definidos para los tipos multipart / related
y text / xml. Los demás tipos MIME también se pueden
representar usando el elemento mime:content.
También es posible usar tipos MIME junto con SOAP
para enlazar partes diferentes del mismo mensaje.
Los enlaces de datos MIME se pueden usar dentro de
las secciones input o output del elemento binding
<binding ...>
<operation ...>
<input>
<--Elementos mime-->
</input>
<output>
<--Elementos mime-->
</output>
</operation> 56
</binding>
57. WSDL
Implicaciones del modelo WSDL
Los diferentes tipos de interacción ⇒ Suponen que un
servidor puede invocar servicios (se comporta como un
cliente)
La ventaja de la separación de la parte abstracta y
concreta, es que la primera puede reutilizarse ⇒ Un
WDSL puede importar otro WDSL <import …>. Por
ejemplo, un documento WSDl puede importar la parte
abstracta y concretar los “bindings” y las “direcciones”
Si los mensajes definido en WSDL se intercambian en
SOAP, entonces el InterfaceBinding contiene toda la
información necesaria para construir automáticamente
los mensajes SOAP
57
58. WSDL
Utilización de WSDL (según W3C)
Lenguaje de descripción de servicio tradicional
(contrato que implementa un Servicio Web) ⇒ El
contrato indica cómo interactuar con el servicio, datos a
enviar y devolver, operaciones involucradas y el
formato y protocolo
Entrada para compiladores de stub y otras
herramientas ⇒ Los servidores de aplicaciones dan
facilidades para generar stubs de documento WSDL y
para generar WSDL de clases (p.e. clases java)
Uso no definido claramente por el W3C en referencia a
la semántica ⇒ Uso de WSDL para capturar la
información que permitirá a los diseñadores razonar
sobre la semántica de los servicios 58
60. WSDL
Conclusiones sobre WSDL
WSDL permite describir servicios web de
manera formal
WSDL permite definir la interfaz del servicio,
cómo se enlazará a uno o varios protocolos de
transporte, y los tipos de datos que utiliza
WSDL permite definir el método de transporte y
de invocación, y también especificar la
dirección de acceso al servicio
WSDL es muy flexible ⇒ no limita su uso a una
codificación, ni a un protocolo de transporte, ni
a un modelo de invocación concretos 60
61. WSDL
Conclusiones sobre WSDL
Los enlaces concretos como SOAP, HTTP y
MIME son simplemente extensiones de WSDL,
y se pueden definir otros enlaces para
cualquier protocolo
Existen herramientas para poder crear un
proxy de cliente o un esqueleto (skeleton) de
un servicio de forma automática a partir de un
documento WSDL ⇒ Lo único necesario para
acceder a un servicio = definición en WSDL
WSDL es equivalente a los IDLs ⇒ Servicios
Web son más complejos de describir 61