Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 3 2
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 coreografía en
Servicios Web 2
3. Servicios Web
Concepto de Servicio Web.
SOAP.
WSDL.
UDDI (WSIL).
Orquestación de Servicios Web.
Seguridad
3
4. UDDI
UDDI (Universal Description Discovey and Integration)
Primera propuesta en Septiembre de 2000 (IBM, Ariba y
Microsoft), desde la versión 3 (julio 2002) bajo el paraguas
OASIS
Objetivos:
Especificar un framework (entorno de trabajo) para describir,
publicar y descubrir servicios Web
Todo gira alrededor de la noción de bussines registry (un
servicio de nombres y directorio) ⇒ La idea era registrar
cada servicio desarrollado en todo el mundo
UDDI define estructuras de datos y APIs para publicar
descripciones de servicios y buscar servicios
Al ser a su vez un servicio Web ⇒ las APIs de UDDI están
también especificadas en WSDL con SOAP 4
5. UDDI
¿Qué es UDDI?
UDDI es un conjunto de especificaciones que definen
una forma de publicar y descubrir información sobre
empresas y servicios, y por tanto, sobre servicios Web
UDDI consta de cuatro documentos de especificación
relacionados y un esquema XML que define una API
SOAP para el registro y descubrimiento de los
servicios
En el contexto de servicios Web ⇒ UDDI define una
nueva capa (nivel) que permite a usuarios utilizar un
método común para averiguar los servicios ofrecidos
por los demás y hacer accesibles los suyos propios 5
6. UDDI
Pila de protocolos de servicios Web (UDDI)
Con UDDI se alcanza una cota más en el proceso hacia la
consecución de un sistema basado en servicios Web
totalmente universal y automático 6
7. UDDI
¿Qué permite UDDI?
A los desarrolladores ⇒ encontrar información
para escribir los clientes de los servicios Web
Dynamic binding ⇒ permitir a los clientes
preguntar al registro y obtener las referencias a los
servicios de interés
Es decir, UDDI permite publicar información sobre los servicios Web,
ayudándose de documentos WSDL de estos ⇒ hacer llegar al
usuario la información de la empresa y de sus servicios de manera
sencilla y rápida
Además, UDDI permite ser consultado para la creación de clientes
de forma automática, para mantener referencias de los documentos
WSDL 7
8. UDDI
Especificación UDDI 2.0:
Especificación de la API del programador ⇒ define
la interfaz de acceso SOAP a un registro UDDI y el
funcionamiento del registro
Especificación de las estructuras de datos ⇒ define
las estructuras de datos XML utilizadas en los
mensajes SOAP definidos en la especificación de la
API
Especificación de la replicación ⇒ describe el
proceso de replicación y la interfaz requerida por los
registros para conseguir la replicación entre
operadores UDDI
Especificación de los operadores ⇒ describe el
comportamiento y los parámetros operacionales
requeridos para todos los operadores UDDI 8
9. UDDI
Especificación UDDI 2.0:
Las especificaciones UDDI y el esquema se
usan para construir servicios de
descubrimiento en Internet
Estos servicios (de descubrimiento) presentan
una interfaz consistente para publicación y
permiten el descubrimiento programático de
servicios
Estos servicios de descubrimiento serían
realmente los registros UDDI
9
11. UDDI
Registro UDDI global (universal)
Mantenido por IBM y Microsoft
UDDI Business Registry ⇒ nube UDDI
Las compañías que alojan el registro UDDI global se llaman
operadores UDDI
Estos operadores son gratis, y cualquier empresa puede
publicar información sobre los servicios que ofrece
Nube UDDI ⇒ un conjunto de registros que replican su
información en todos y que, para el que accede a ellos,
funcionan cómo uno solo ⇔ registrado una vez,
publicado en todos sitios
Registro UDDI global ⇒ proporciona una forma estándar
de publicar y consultar servicios y puede utilizarse como
base para proporcionar servicios de búsqueda más
complejos 11
12. UDDI
Funcionamiento de UDDI
Conjunto de registros UDDI, cada uno mantenido por un operador (nube
UDDI), proveedores registrando sus servicios y clientes buscando
servicios concretos 12
13. UDDI
Funcionamiento UDDI
Instituciones de estándares (ISO, IEEE, ANSI, etc.) ⇒ publican en
el registro UDDI → descripciones de varios tipos de servicios
Las empresas (proveedores de servicios) ⇒ publican en el
registro UDDI descripciones de los servicios que proporcionan →
Estos servicios deben implementar una interfaz propia o conocida
El registro UDDI ⇒ asigna identificadores únicos a cada servicio y
empresa registrada
Mercados online, motores de búsqueda, y aplicaciones
empresariales ⇒ consultan el registro UDDI para descubrir
servicios
La empresas ⇒ usarán la información obtenida para invocar
métodos en servicios remotos e integrarlos sobre Internet 13
14. UDDI
Datos almacenados en el Registro UDDI
UDDI clasifica los registros en base a para que se utiliza la
información
Páginas blancas ⇒ Nombre de la empresa, información
de contacto, listados de organizaciones y servicios. Los
cliente UDDI pueden encontrar servicios Web dados por
una empresa
Páginas amarillas ⇒ Información de industria,
clasificación de compañías y servicios Web de acuerdo
a una taxonomía (NAICS, UNSPSC, etc.)
Páginas verdes ⇒ Información técnica sobre los
servicios que la compañía proporciona y
especificaciones. Describe cómo puede ser invocado un
servicio Web, punteros a descripciones de servicios
(descripciones externas al registro UDDI) 14
15. UDDI
Tipos de información (ED) en el Registro UDDI
BusinessEntity ⇒ Describe la organización que
ofrece el servicio → Nombre, dirección y otra
información de contacto
BusinessService ⇒ Grupo de servicios Web
relacionados ofrecido por una BusinessEntity
(empresa), pero ofrecida en diferentes direcciones,
versiones, y tecnologías. Al igual que las
BusinessEntity, pueden incluir información de
clasificación → corresponde con una clase de servicio
BusinessTemplate ⇒ Información técnica para utilizar
el servicio → Dirección del servicio, Referencias
documentos (tModels) describiendo el interfaz u otras
propiedades, cómo dar valor a los parámetros y
valores por defecto 15
16. UDDI
Tipos de información en el Registro UDDI
tModels (Technical model) o Registros de tipo
de servicio ⇒ contienen la información que un
programador necesitaría saber para poder
usar un servicio Web particular
tModels ⇒ Contenedor genérico para
cualquier especificación. Por ejemplo, puede
representar un interfaz de servicio en WSDL,
un protocolo de interacción, o la semántica de
una operación
16
18. UDDI
Modelo de información UDDI
El modelo de información UDDI está definido
en un esquema XML ⇒ Define cinco tipos
principales de información que una empresa
necesitaría saber para usar un servicio Web
Información de la entidad de negocio (empresa)
Información del servicio
Información de enlace
Punteros de especificación e información
técnica
Aserciones del proveedor
18
19. UDDI
Modelo de información UDDI
Información de la empresa ⇒ businessEntity,
y corresponde a las páginas blancas y
amarillas sobre la empresa. Atributos:
BusinessKey ⇒ una clave única que identifica
a la entidad de negocio
operador ⇒ nombre del operador del registro
UDDI donde está publicada esta entrada
authorizedName ⇒ el nombre de la persona
que publico esta entrada
19
20. UDDI
Modelo de información UDDI
Elementos (businessEntity):
discoveryURLs ⇒ URLs que apuntan a
mecanismos de descubrimiento alternativos
para el servicio
name ⇒ Nombre de la organización
description ⇒ una descripción breve de la
entidad de negocio
contacts ⇒ información de contacto para la
organización
businessServices ⇒ lista de los servicios que
esta empresa provee y sus características 20
21. UDDI
Modelo de información UDDI
Elementos (businessEntity ⇒ información de
páginas amarillas):
indentifierBag ⇒ una lista de pares nombre-
valor que actúan como identificadores
alternativos para la empresa. Esto permite a los
clientes buscar una empresa usando nombres
identificativos diferentes
categoryBag ⇒ una lista de pares nombre-
valor que etiquetan a la empresa con
información específica de clasificación 21
23. UDDI
Modelo de información UDDI
Información sobre servicios ⇒ businessService,
contiene información descriptiva sobre una familia de
servicios proporcionados por una entidad de negocio
(páginas verdes de la empresa). Familia de servicios
⇒ conjunto de servicios cuya función es la misma pero
con una interfaz diferente. Atributos:
serviceKey ⇒ una clave única que identifica este
servicio. Esta clave es asignada por el operador
cuando se registra el servicio
businessKey ⇒ la clave de la entidad de negocio
que ofrece este servicio 23
24. UDDI
Modelo de información UDDI
Elementos (businessService):
name ⇒ El nombre de esta familia de servicios
(nombre del servicio de alto nivel)
description ⇒ Una descripción textual de la
familia de servicios
bindingTemplates ⇒ las plantillas de enlace
que dan la descripción técnica de la familia de
servicios
categoryBag ⇒ una lista de pares nombre-
valor que etiquetan el servicio con información
taxonómica específica 24
26. UDDI
Modelo de información UDDI
Información de enlace ⇒ bindingTemplate,
información técnica sobre un servicio (servicio
de bajo nivel), que ayuda a los clientes a
conectarse e invocar el servicio Web
Atributos:
bindingKey ⇒ una clave única que identifica
esta plantilla de enlace → identificador único
asignado por el operador del registro
serviceKey ⇒ la clave del elemento
businessService que contiene esta plantilla de
enlace 26
27. UDDI
Modelo de información UDDI
Elementos (bindingTemplate):
description ⇒ descripción textual de la plantilla de
enlace
accessPoint ⇒ el punto de acceso para la información
→ contiene el punto de entrada para el servicio. Valores
válidos para el punto de acceso pueden ser una URL,
dirección de email o incluso un número de teléfono. El
punto de acceso tiene un atributo urlType, y posibles
valores = http, https, ftp, fax, phone y mailto
hostingRedirector ⇒ apunta a otra plantilla de enlace, y
se usa cuando el punto de acceso no está especificado
tModelInstanceDetails ⇒ una lista de estructuras
tModel. tModel ⇔ huella digital para el servicio 27
30. WSIL
WSIL (Web Service Inspection Language)
WSIL (Lenguaje de Inspección de WS):
Otra forma de localizar servicios Web
No es competidor de UDDI, sino que IBM y Microsoft lo
propusieron para completarlo, ya que en algunas
ocasiones es más útil WSIL y en otras lo será UDDI
WSIL funciona de forma descentralizada, al contrario que
UDDI que está centralizado ⇒ No existe un registro
universal en el que buscar, sino que cada nodo puede
tener su(s) propio(s) documento(s) WSIL con las
especificaciones necesarias para la búsqueda de WS
WSIL se apoya de manera importante en el documento
WSDL ⇔ documento de especificación similar 30
31. WSIL
WSIL (Web Service Inspection Language)
WSIL (Lenguaje de Inspección de WS):
WSIL deja de lado la información de la empresa (UDDI),
permitiendo realizar un documento de especificación que
será algo semejante a una tarjeta de presentación con
los servicios disponibles por parte de dicho documento
Con un documento WSIL se puede referenciar servicios
UDDI o WSDL (o otros servicios WSIL)
Documento WSIL es un documento XML que actúa como
un puntero intermediario a la descripción del servicio ⇒
lista de punteros hacia documentos WSDL que son los
encargados de describir el servicio
WSIL es sencillo y extensible a otras descripciones, ya
que se utiliza XML como soporte base 31
32. WSIL
WSIL (Web Service Inspection Language)
WSIL (Lenguaje de Inspección de WS):
Cuando sabes con que host (servidor) deseas trabajar,
por ejemplo, www.progress.com
Por convenio buscar el documento WSIL inspection.wsil,
por ejemplo, http://www.progress.com/inspection.wsil
El documento WSIL soporta enlazado con otros
documentos WSIL
Empresa
WSIL
Unidad de
WSIL WSIL producción
WSIL WSIL WSIL Department 32
o
33. WSIL
WSIL (Web Service Inspection Language)
Web Server
Obtener inspection.wisl
de www.progress.com
Application
Server
Business Interface
SOAP Processor
Listener
GET WISL
HTTP
Web
Service Business
Client Response(WISL) Logic
WSIL
WSDL
WSIL WSDL
WSDL
WSDL 33
34. WSIL
WSIL (Web Service Inspection Language)
Web Server
Obtener el soporte técnico
WSDL denominado
techsupport.wsdl de
www.progress.com Application
Server
Business Interface
SOAP Processor
Listener
GET WSDL
HTTP
Web
Service Business
Client Response(WSDL) Logic
WSIL WSDL
WSDL
WSIL WSDL
WSDL
WSDL 34
36. WSIL
WSIL (Web Service Inspection Language)
Elementos:
inspection ⇒ etiqueta que sirve de raíz en un documento
WSIL y representa el elemento que contendrá a todos los
demás
abstract ⇒ pequeño texto dirigido a los humanos que utilicen
el documento, indicando aclaraciones, modos de uso o
cualquier cosa que considere necesaria el diseñador del
documento. Puede haber 0 o más elementos de este tipo
service ⇒ es el elemento donde se define realmente la
entrada al localizador del servicio
name ⇒ se refiere al nombre que se dará al servicio. Se puede
indicar el nombre en varios idiomas. Puede haber 0 o más
elementos de este tipo, y no asegura que sea único 36
37. WSIL
WSIL (Web Service Inspection Language)
Elementos:
description ⇒ indica el punto de entrada a la descripción del
servicio, y es junto con link la parte más importante del
documento WSIL. Es necesario el atributo
referencedNamespace que indica el namespace del
documento refrenciado. Atributo localization, que es optativo y
que permite ofrecer un enlace hacia la despcripción. El enlace
debe ser una URL válida, y el documento debe ser accesible
mediante el mecanismo de acceso primario de la URL
espedificada. Si es una URL de un ftp ⇒ debe poder
accederse mediante un GET, si es una URL de tipo HTTP ⇒
se podrá acceder mediante un HTTP GET. Además, si es
necesario paso de parámetros ⇒ se utilizan elementos de
37
extensión, donde se advierte de los detalles pertinente
38. WSIL
WSIL (Web Service Inspection Language)
Elementos:
link ⇒ permite enlazar el documento WSIL con otros
documentos del mismo tipo o cualquier otro método de
localización de servicios Web, por ejemplo registro UDDI.
Atributo referencedNamespace define el namespace de la
fuente de datos agregada, y si es otro archivo WSIL su valor
será http://schemas.xmlsoap.org/ws/2001/10/inspection/. El
atributo optativo location permite definir un mecanismo por el
cual se pueden obtener la fuente de los datos que se quieren
enlazar mediante el mecanismo primario de su URL. Si no
existe este atributo o no se puede acceder mediante el
mecanismo primario, se debe de añadir un elemento de
extensión en el que se indica la información necesaria para la
38
obtención de los datos que han sido enlazados
39. WSIL
WSIL (Web Service Inspection Language)
Ejemplo de servicio con un documento WSDL, que
será accedido mediante HTTP GET
<?xml version="1.0"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<service>
<description referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/stockquote.wsdl" />
</service>
</inspection>
Este documento es un sencillo ejemplo de documento WS-Inspection que
proporciona información de la cuota disponible (stock quote). El
documento tiene un enlace a un documento WSDL accesible a través de
HTTP, el cual describe su interfaz 39
41. WSIL
WSIL (Web Service Inspection Language)
Ejemplo de enlace (link) con otro documento WSIL,
que podrá ser accedido mediante HTTP GET
<?xml version="1.0"?>
<inspection
xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<link referencedNamespace =
"http://schemas.xmlsoap.org/ws/2001/10/inspection"
location="http://acme.com/compras/inspection.wsil"/>
</inspection>
41
42. WSIL
WSIL (Web Service Inspection Language)
Publicación del documento:
WSIL es un método descentralizado de localización de
servicios ⇒ problema de la búsqueda del documento WSIL.
Para solucionarlo, la especificación WS-Inspection ofrece dos
posibilidades, describiendo su búsqueda y su localización.
Estas dos soluciones son mediante:
Nombre fijo
Documento enlazado
Nombre fijo ⇒ al realizar la búsqueda del archivo con el
documento WSIL nos podemos encontrar con dos problemas:
nombre del archivo y localización. Solución ⇒ los documentos
de publicación WSIL, deben llamarse inspection.wsil y deben
colocarse en los puntos de entrada más comunes 42
43. WSIL
WSIL (Web Service Inspection Language)
Publicación del documento:
Documento enlazado ⇒ El lenguaje de marcas HTML tiene
una etiqueta llamada META que permite al autor dar
información acerca del documento, y no sobre el formato del
documento como la mayoría de las etiquetas de este lenguaje.
Toda la información que se proporcione mediante estas marcas
no se visualiza, pero su se podrá ver si se decide mostrar el
código fuente de la página. Además estas marcas sirven de
referencia a los crawlers de los motores de búsqueda en Web
como Google
En este caso, la marca META se utiliza como enlace a los
puntos donde se encuentren los distintos documentos WSIL.
Problema ⇒ esta etiqueta no está diseñada para esta finalidad,
43
aunque su uso puede ser útil en este caso
44. WSIL
WSIL (Web Service Inspection Language)
Ejemplo
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META name="serviceInspection" content="localservices.wsil">
<META name="serviceInspection" content="http://www.example.com/calculators.wsil">
<META name="serviceInspection" content="ftp://www.anotherexample.com/translators.wsil">
…
</HEAD>
<BODY>
...
</BODY>
</HTML>
Como se puede apreciar, ya no hace falta que el nombre del archivo
WSIL sea inspection.wsil, sino que se puede poner el que se quiera,
aunque no deja de ser una buena costumbre utilizar siempre como
nombre el estándar de la especificación 44
45. WSIL
WSIL (Web Service Inspection Language)
Ejemplo de documento WSIL que contiene un acceso
a los servicios encargados del tema de localización de
comercios, y el otro es la versión 2 del mismo
(documentos localizador.wsdl y localizadorV2.wsdl,
respectivamente)
<?xml version="1.0"?>
<inspection
xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/“
xmlns:wsiluddi="http://schemas.xmlsoap.org/ws/2001/10/inspectio
n/uddi/”
xmlns:wsilwsdl="http://schemas.xmlsoap.org/ws/2001/10/inspectio
n/wsdl/”>
45
<abstract>Productos Acme</abstract>
46. WSIL
WSIL (Web Service Inspection Language)
<service>
<name>Localizador</name>
<abstract>Localizador de las tiendos con productos acme</abstract>
<description referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://acme.com/servicios/localizador.wsdl"/>
<description referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://acme.com/servicios/localizadorV2.wsdl"/>
</description>
</service>
Por otra parte, se tiene un documento WSDL localizado en el servidor
FTP, que contiene servicios de conversión entre monedas. Para acceder
a él se genera una nueva entrada <service>
46
47. WSIL
WSIL (Web Service Inspection Language)
<service>
<abstract>Servicios de cambio de monedas</abstract>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location=“ftp://ftp.acme.com/util/conversor.wsdl"/>
</service>
<link
referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/in
spection/“
location="http://acme.com/suministros/inspection.wsil"/>
<abstract>Acme suministros</abstract>
</link> 47
48. WSIL
WSIL (Web Service Inspection Language)
Ejemplo:
Si además se tiene información sobre el servicio de suministros
ya introducida en un registro UDDI, también se puede hacer
uso de ella. Para esto se introduce un nuevo elemento <link>.
En este caso se necesitan unos elementos de extensión para
poder recuperar la especificación
Se añade un elementos <serviceKey> que permitirá acceder al
servicio en concreto, como valor de este elemento tiene que
darse el UDDI del servicio. Además, se ha introducido una URL
en el elemento <discoveryURL>. Mediante este elemento, que
es opcional, es posible expresar una URL por la que se
obtendrá la estructura <businessEntity> mediante una petición
HTTP GET
48
49. WSIL
WSIL (Web Service Inspection Language)
<link referencedNamespace=“urn:uddi-org:api“
<abstract>Acme suministros</abstract>
<wsiluddi:serviceDescription
location="http://reguddi.org/uddi/inquiryapi">
<wsiluddi:serviceKey>4AA4227F0-2C66-1A1B-9A37-
BA120FF33F72</wsiluddi:serviceKey>
<wsiluddi:discoveryURL
useType=“businessEntity”>http://reguddi.org(uddi?3A542AD0-2C66-
1A1B-9A37-BA120FF33F72</wsiluddi:discoveryURL>
</wsiluddi:serviceDescription>
</link>
Si en el elemento que accede al registro UDDI se quisiera recuperar todos los
servicios en lugar de uno en concreto, es posible hacerlo recuperando todos de uno
en uno o bien recuperar el elemento <businessEntity> con todos sus servicios, para
49
ello habría que cambiar la etiqueta <serviceKey> por <businessKey>
51. Conclusiones UDDI y WSIL
Conclusiones UDDI y WSIL
UDDI ⇒ Un conjunto de especificaciones que definen
una forma de publicar y descubrir información sobre
empresas y servicios, y por tanto, sobre servicios Web
UDDI ⇒ Permite publicar información sobre los
servicios Web, ayudándose de documentos WSDL de
estos → Hacer llegar al usuario la información de la
empresa y de sus servicios de manera sencilla y rápida
WSIL ⇒ Lenguaje de inspección de WS → Funciona
de forma descentralizada, al contrario que UDDI
(centralizado) → No existe un registro universal en el
que buscar, sino que cada nodo puede tener su(s)
propio(s) documento(s) WSIL con las especificaciones
necesarias para la búsqueda de WS → Se apoya de
manera importante en el documento WSDL 51