WSDL (Web Services
Description Language)
Construcción de servicios web
Lourdes Tajes Martínez
(
[email protected])
1
En 5 minutos…
Un servicio web se define (en palabras del W3C) como una
aplicación software, identificada por un URI que se puede
definir, describir y descubrir a través de documentos XML.
Soporta la interacción directa con otros agentes software
usando mensajes basados en documentos XML
intercambiados vía protocolos de Internet.
Usualmente, el término se refiere a clientes y servicios que se
comunican usando mensajes SOAP sobre HTTP.
No es un requerimiento obligatorio PERO permite la generación
automática de código entre cliente y servicio
Se asume que hay también una machine readable description de
las operaciones soportadas por el servicio.
2
Web Service Specifications (WS-*)
Descripción de servicio: WSDL, …
Mensajería y llamada a funciones
SOAP, SOAP con attachments, SOAP sobre UDP,
XML-RPC, WS-Addressing, …
WS-I: Mejorar la interoperabilidad entre
implementaciones de distintos vendedores
Security: XML-Signature, XML Encryption, WS-
Security, WS-Trust
Transaction: WS-Coordination, WS-Transaction,
…
3
Web Service Protocols
SOAP (XML-RPC)
REST (REpresentational State Transfer)
WSDL
UDDI (Universal Description, Discovery
and Integration)
BPEL (Business Process Execution
Language)
4
Web Service Frameworks
Nombre
Plataforma
Destino
Especificaciones
Protocolos
Apache Axis
Java/C++
Cliente
Servicio
Java Web Service
Development Pack
Java
Cliente
Servicio
WS-ReliableMessaging
WS-Coordination
WS-Security
WS-AtomicTransaction
WS-Addressing
WS-Security
WS-Addressing
XFire
Java
gSOAP
C/C++
Cliente
Servicio
WS-Security
WS-Addressing
Cliente
Servicio
WS-Discovery
WS-Security
WS-Enumeration
WS-Addressing
SOAP
WSDL
SOAP
WSDL
SOAP
WSDL
SOAP
XML-RPC
WSDL
5
¿Por qué hay que definir los
servicios web?
Los servicios web exponen un sistema
software con el que las aplicaciones
cliente pueden interaccionar a través de
la red.
Una visión orientada al software
Métodos a invocar, con qué parámetros,
cuáles son los valores de retorno, las
excepciones que se propagan si algo va
mal, …
Casi lo mismo con lo que llevamos
tiempo trabajando. Pero …..
muy lejos (internet mediante)
No conocemos el detalle del servicio. No
tenemos acceso a su código fuente. No ha
sido hecho para nosotros.
6
¿Por qué hay que definir los
servicios web?
Pero, para que tal interacción se lleve a cabo de forma
satisfactoria, el servicio debe ser descrito y publicitado a sus
consumidores potenciales.
Los consumidores deben ser capaces de encontrar una
descripción de cómo interaccionar con el servicio:
¿ cómo se llaman los métodos? ¿qué datos espera recibir
(parámetros)? ¿devuelve algún resultado (tipo de retorno)?
¿qué protocolos de transporte soporta (http, smtp, ppp, …)?
¿formato de los mensajes?
7
¿Por qué hay que definir los
servicios web? (5 minutos)
Alumnos DNI PAR
Hotel Rural
Función de comprobación de disponibilidad para unas
fechas y un número de personas determinadas
Alumnos DNI IMPAR
Central de reservar rurales
Consulta de la disponibilidad de todos los hoteles para
dar al cliente el mejor precio
8
¿Por qué hay que definir los
servicios web? (5 minutos)
Alumnos DNI PAR
¿Qué información deberías darle a la central de
reservas?
Alumnos DNI IMPAR
¿Qué requieres de los hoteles?
9
¿Por qué hay que definir los
servicios web?
Suponga la siguiente descripción de un servicio: Hotel Rural (Casa Otilio)
El servicio puede atender peticiones de consulta de disponibilidad
Debe decir qué número de personas, de cuándo a cuándo van a alojarse.
Hay que ponerse de acuerdo en…
Nombre del método
¿ Se llama Disponibilidad? ¿ConsultaDisponibilidad? ¿Availability?
Y en los Parámetros
El periodo de alojamiento ¿ cómo se indica? ¿día entrada, día salida?, ¿día entrada, número de
días?
Y el formato del mensaje
¿Cómo sabe el cliente qué tipo de mensaje enviar?
SOAP es sólo el formato, pero no indica qué poner en la cabecera o en el contenido
Y la codificación de los datos enviados ¿ Qué XML hay que poner en el cuerpo del mensaje SOAP?
¿ cómo son los parámetros? ¿ Un array de Strings? ¿ Varios Strings? ¡¡¡ No lo sé ¡¡¡¡¡
10
¿Por qué hay que definir los
servicios web?
Hotel Rural (Casa Otilio) (continuación)
Y en la Respuesta
¿ Qué formato tiene la respuesta? ¿Hay respuesta?
¿ Nos devuelve sí/no? ¿nos devuelve el precio final que costaría la
reserva? ¿Nos devuelve una estructura compleja con habitaciones,
precio,…? Si nos responde que no, ¿nos devuelve no, simplemente, o
alternativas de alojamiento?
Protocolo de transporte
¿ Puedo enviar un mail para solicitar el servicio? Ojo, eso implica que
tengan un servidor de correo escuchando¡¡
HTTP, siempre está disponible
¿ A qué dirección? ( Pero, ¿es que no sé ni eso?)
11
¿Por qué hay que definir los
servicios web?
Los hoteles, que describan todo lo anterior
como les apetezca
Las centrales de reserva, que describan cómo
les gustaría que fuese.
Necesito dos Hoteles Rurales voluntarios
Necesito una central de reservas voluntaria
¿Coincide todo el mundo?
12
Todavía puede empeorar
Hotel Rural (Casa Pepe Gotera)
Otra casa rural con diferentes nombres de métodos, parámetros,
etc…
Cada uno lo hace como quiere
Pero yo tengo un servicio de reservas naturales
(Centro de reservas on-line “El Percebe”)
Tengo que consultar varias casas rurales para hacer un resumen
al cliente o para buscarle la mejor opción o la que mejor se le
ajuste o ….. Y quiero automatizarlo¡¡¡
Construir mensajes SOAP para cada servicio
NECESITO SABER CÓMO SON CADA UNO DE ELLOS.
13
¿ Cómo mejorar nuestra situación?
Tenemos varios servicios web que exponen un negocio con el que los
clientes interaccionan a través de la red.
Necesitamos un contrato entre el desarrollador del servicio y el
desarrollador del cliente. Fundamental
Publicar: Un proveedor comunica a los clientes cómo invocar el servicio
web.
Encontrar: El solicitante puede encontrar un servicio adecuado
Enlazar: La descripción del servicio indica exactamente qué formato de
mensaje tiene que ser enviado a qué dirección con el fin de invocar al
servicio
14
WSDL (güisdel)
WSDL (Web Services Description Language) es una gramática XML que se utiliza para
describir la interfaz pública de los servicios Web. De forma estandarizada
Las descripciones generadas con tal gramática son documentos XML que describen la
interfaz e implementación de los servicios web
Un documento WSDL describe tres propiedades fundamentales de un servicio web
Las operaciones soportadas y qué mensajes las activan
El formato de los mensajes
Los tipos de datos especiales que se envíen se incluyen en el archivo WSDL en forma de
XML Schema (ejemplo, DNI).
El protocolo de comunicación en el que se envía el mensaje
La forma en qué cada operación se compone de mensajes formateados de una forma
específica y transmitidos por un protocolo concreto de red
Mira el ejemplo del wsdl de amazon en http://www.amazon.com/E-Commerce-
Service-AWS-home-
page/b/ref=sc_fe_c_0_15763381_1?ie=UTF8&node=12738641&no=15763381&me=A3
6L942TSJ2AJA
15
Un servicio web bien definido
Definición de la interfaz del servicio (descripción
abstracta)
En términos de mensajes intercambiados (los necesarios para
activar los métodos expone el servicio web)
Cómo formatear el mensaje (SOAP, HTTP, …)
Definición de la implementación del servicio (definición
concreta)
Información de enlazado (binding)
Qué protocolo de comunicaciones utilizar
Cómo implementar interacciones sobre ese protocolo
Cómo alcanzar al servicio (dirección de red)
16
Terminología
WSDL
Endpoint
W3C Recommendation 26 June 2007
http://www.w3.org/TR/wsdl20/
Indica una localización específica para acceder a un
servicio web usando un protocolo y formato de datos
específico.
Un Web service endpoint es una entidad o recurso
referenciables a los que se pueden enviar mensajes.
Una referencia a un endpoint debe proporcionar
toda la información necesaria para direccionar un
web service endpoint.
17
Versión 2.0 (2007)
tipos
Interfaz del servicio
(definición abstracta)
Operaciones
Implementación
del servicio
(definición concreta)
Interfaces
Binding
Servicios
Endpoint
A caballo entre dos especificaciones: WSDL 1.X (2002) y WSDL 2.0 (2006) ya
aceptada pero no muy implantada todavía (http://www.w3.org/TR/2003/WD-wsdl12-
20030303/, http://www.w3.org/TR/wsdl20-primer/)
18
Especificación WSDL 1.2: Parte
Abstracta
La parte abstracta indica {interfaz, mensajes, tipos de parámetros}
Parte reusable del servicio
Posible distintas implementaciones concretas de esta interfaz
Interfaz
Mensajes
Conjunto de operaciones que conforman un endpoint (bloque de funcionalidad del servicio)
Patrón de intercambio de mensajes para cada una
Mensajes válid
Comentarios de: WSDL (Web Services Description Language) (0)
No hay comentarios