Documentos de Académico
Documentos de Profesional
Documentos de Cultura
WEB
NDICE
1. Qu es un servicio Web? ............................................................................. 3
1.1. Arquitectura de Servicios Web (WSA) ..................................................... 3
2. Funcionalidad de transporte de WSA: SOAP ................................................. 6
2.1. Tipos de mensajes SOAP ....................................................................... 7
3. Funcionalidad de descripcin de WSA: WSDL............................................... 8
4. Funcionalidad de descubrimiento de WSA: UDDI .......................................... 11
4.1. Tipos de registros UDDI .......................................................................... 13
5. Implementacin de la arquitectura WSA. ....................................................... 14
INTRODUCCIN
Se puede definir un servicio Web como una pieza software que dispone de una funcionalidad
especfica y que permite ser empleada en multitud de entornos, con independencia del lenguaje
de desarrollo. Esto se consigue usando mecanismos estndar de comunicacin, bsicamente
basados en protocolos Web, evitando as las dependencias de la tecnologa de implementacin.
El extraordinario xito del modelo Web puede atribuirse a una caracterstica fundamental: es un
modelo ms dbilmente acoplado que los modelos de programacin distribuida tradicionales
como RPC, RMI, DCOM y CORBA. Las interacciones entre clientes y servidores Web son
sencillas: intercambian mensajes que transportan datos de tipo MIME, y la semntica de un
mensaje puede modificarse utilizando cabeceras. El destino de un mensaje se especifica
indirectamente utilizando una URL, y este nivel de indireccin puede aprovecharse para
implementar balance de carga, seguimiento de sesiones y otras funcionalidades.
La simplicidad de las interacciones en el modelo de programacin Web posibilita construir
sistemas incrementalmente. A diferencia del acoplamiento fuerte de RPC y de los sistemas de
objetos distribuidos, que requieren la implantacin de todas las piezas de una aplicacin de una
vez, se pueden aadir tantos clientes y servidores a sistemas basados en Web como se
necesiten. Se pueden establecer fcilmente conexiones a aplicaciones nuevas de un modo
descentralizado, sin ninguna coordinacin central ms all del registro de nombres DNS, y con
un grado de interoperabilidad, escalabilidad y capacidad de gestin extraordinariamente alto.
La idea bsica tras los servicios Web es adaptar el modelo de programacin Web dbilmente
acoplado a su uso en aplicaciones que no estn basadas en el navegador. El objetivo es
proporcionar una plataforma para construir aplicaciones distribuidas utilizando software que se
ejecute en distintos sistemas operativos y dispositivos, escrito utilizando distintos lenguajes de
programacin y herramientas de mltiples fabricantes, desarrollado e implantado de forma
independiente.
proceso de negocio, al cul otra aplicacin puede acceder a travs de la Web, y con el cul se puede
comunicar a travs de protocolos estndares de Internet.
Lo que distingue a los servicios web de otros tipos de aplicaciones basadas en Web es que los
servicios web estn diseados para soportar la comunicacin de una aplicacin con otra
aplicacin. Otros tipos de aplicaciones Web soportan comunicacin entre personas (mensajera
instantnea o correo) o comunicacin persona-aplicacin (navegadores de Internet). Los
servicios Web estn diseados para permitir que las aplicaciones se comuniquen si intervencin
humana.
1.1 Arquitectura de Servicios Web (WSA)
Los principios de diseo de las aplicaciones distribuidas basadas en servicios web tienen su
origen en lo que se denomina Arquitectura Orientada a Servicios (SOA, Service-Oriented
Architecture). Como ejemplos de esta arquitectura se pueden nombrar tecnologas tan conocidas
como RPC, RMI, CORBA o DCOM.
En la figura 1 se muestra el modelo arquitectnico de SOA. Los tres componentes
fundamentales del modelo son:
1. Proveedor del servicio, encargado de hacer que el servicio este disponible. Para ello
debe publicar un contrato que describa la interfaz del servicio que ofrece y registrarlo a
travs del agente de servicio.
2. Cliente del servicio, que busca el servicio que necesita (operacin find() de la figura 1) o
al menos uno compatible con sus necesidades. Esto lo hace a travs del agente de
servicio.
3. Agente del servicio, que ofrece a los clientes un mecanismo de bsqueda de los
servicios previamente registrados por los proveedores. Una vez que el cliente ha
encontrado el servicio que necesita, el agente le da al cliente las direcciones donde
puede encontrar el servicio y el contrato del mismo. Con este contrato el cliente puede
enlazar la aplicacin con el servicio ofertado.
Para acompaar a los tres componentes fundamentales del modelo SOA, un sistema que
implemente este modelo debe soportar tres funcionalidades bsicas:
a) Transporte, es decir como se representan los formatos (tipos de datos y flujos
de bytes usados para codificar y decodificar los mensajes) y protocolos usados
para comunicarse con un servicio.
b) Descripcin, encargada de definir y usar un lenguaje de descripcin adecuado
para el servicio. Se deben describir las operaciones soportadas por el servicio
(parmetros y formato de los mensajes), as como la manera de enlazar el
servicio con las aplicaciones. A partir de este lenguaje de descripcin es posible
generar de forma dinmica y esttica el cdigo de comunicacin as como los
delegados y esqueletos necesarios.
c) Descubrimiento, encargada de representar el mecanismo usado para registrar
o encontrar un servicio y su contrato o descripcin.
A partir de esta SOA nace lo que se conoce como Arquitectura de Servicios Web (WSA, Web
Services Architecture, vase la figura 2) que converge el modelo SOA y el uso de la Web como
modelo de comunicacin. La caracterstica principal de WSA es que es independiente de la
plataforma y del lenguaje, lo que significa que un servicio web puede ser desarrollado en
cualquier lenguaje y puede ser implantado en cualquier plataforma: desde un mvil hasta un
supercomputador.
Se puede pensar en WSA como un middleware de Internet, por lo que no se hace necesario
crear un nuevo conjunto de protocolos. El protocolo bsico de los servicios Web es XML
(eXtended Markup Language), que se usa como formato de los mensajes de datos, adems de
usarse como base de otros protocolos de WSA, en concreto SOAP, WSDL y UDDI. La utilizacin
de XML garantiza la independencia del lenguaje y de la plataforma, de tal manera que los
servicios Web utilizan un lenguaje comn, que adems de ser un estndar, permite describir las
interfaces de las operaciones y codificar los mensajes. Pero XML, por si solo, no puede
implementar los protocolos de comunicacin puesto que las aplicaciones necesitan formatos
estndares y protocolos que permitan interpretar de forma apropiada los datos XML. Para ello,
se han desarrollado tres estndares de facto:
Protocolo Simple de Acceso a Objeto (SOAP, Simple Object Access Protocol), que
define un protocolo estndar de comunicacin para los servicios Web.
En la tabla 1 se hace una comparacin de las caractersticas de los distintos modelos SOA
comparados con la arquitectura de servicios Web (WSA).
Mecanismo de invocacin
Formato de los datos
Formato de comunicacin
Protocolo de transferencia
Java RMI
CORBA
Serializacin Java
CDR
(Common
Data
Representation)
GIOP (General Inter-ORB Protocol)
IIOP (Internet Inter-ORB Protocol)
Java RMI
CORBA RMI
Flujo de bits
JRMP (Java Remote
Method Protocol)
Descripcin de la Interfaz
Interfaces Java
CORBA IDL
Mecanismo
de Registro
Java Servicio de nombres (COS naming)
descubrimiento
(RmiRegistry)
Tabla 1.- Comparacin de formatos y protocolos SOA con WSA.
Web Services
JAX-RPC, .NET,
XML
SOAP
HTTP.
JMS
WSDL
UDDI
SMTP,
Adems de estos dos tipos de mensajes SOAP hay una especificacin de mensaje que permite
incluir archivos no XML a los mensajes (http://www.w3c.org/TR/SOAP-attachments). De esta
manera se pueden aadir archivos de tipo multimedia que no estn codificados con XML. Esta
especificacin obliga a usar tipos MIME (para ser ms exactos, la codificacin) para dichos
ficheros.
Normalmente cualquier herramienta de desarrollo SOAP puede usar una descripcin WSDL de
forma automtica para generar un interfaz que se pueda usar (y enlazar) en una aplicacin
cliente.
Una descripcin WSDL define una coleccin de puntos de acceso de red o puertos. Cada puerto
se define de forma abstracta con su tipo, que soporta un conjunto de operaciones. Cada
operacin procesa un conjunto particular de mensajes. Un enlace (binding) relaciona un tipo de
puerto con un protocolo y un formato de datos.
Puesto que un documento WSDL es un documento XML con la descripcin del servicio, ste
contiene los elementos que describen el servicio. En concreto:
1. Tipos (etiqueta <types>). Los elementos de tipo definen los tipos de datos usados dentro
de los mensajes. WSDL usa el sistema de tipo de datos definido en la recomendacin
del W3C sobre esquemas XML (en concreto, en la parte 2) llamada Recomendacin de
tipos de datos (disponible en la direccin http://www.w3.org/TR/xmlschema-2/) como
sistema cannico, aunque se puede usar cualquier sistema de tipificacin de datos. El
sistema del W3C soporta datos simples y estructuras complejas, que pueden ser
relacionados directamente con sus tipos correspondientes en los lenguajes de
programacin que soportan la recomendacin. Las herramientas SOAP usan la
informacin de tipo para codificar y decodificar los datos de los mensajes SOAP.
2. Mensajes (etiqueta <message>). Un mensaje define el formato de un mensaje particular.
Los mensajes se usan como estructuras de entrada o salida para las operaciones
soportadas por el servicio Web. Un mensaje puede estar compuesto por una o varias
partes, cada una de las cuales est asociado a un tipo. Cuando se usa el estilo RPC
para el documento SOAP, cada parte representa un parmetro del mtodo.
3. Tipo de puerto (etiqueta <portType>). Un tipo de puerto representa un conjunto de
operaciones. Cada elemento u operacin (etiqueta <operation>) define los mensajes de
entrada y salida asociados a la operacin. Cuando se usa el estilo RPC para el
documento SOAP, cada parte operacin representa un mtodo.
4. Enlace (etiqueta <binding>). Un elemento enlace relaciona las operaciones y mensajes
definidos por un tipo de puerto a un protocolo concreto y una especificacin de formato
de datos. Por ejemplo, el enlace puede asociar un tipo de puerto a una interfaz
especfica SOAP RPC que usa el protocolo HTTP para el transporte y el sistema de
codificacin de datos SOAP.
5. Servicio (etiqueta <service>). Define una coleccin de puertos relacionados. Un elemento
puerto (etiqueta <port>) relaciona un enlace con la localizacin (una direccin URL) de
una instancia del servicio Web.
Usando estos elementos para la definicin del documento WSDL se puede dividir en tres partes
(vase la figura 4):
10
En esta direccin se puede apreciar adems cmo son los mensajes SOAP RPC que se
transmiten durante el funcionamiento del servicio Web. Como se puede ver en la figura 5 hay dos
tipos de mensajes SOAP RPC: uno de peticin (<message name=getRateRequest>) y uno de
recepcin (<message name=getRateResponse>) que usan el estilo de documento RPC con las
reglas de codificacin dadas por el esquema de tipos del W3C (representadas por las etiquetas
xsd:string y xsd:float). Para cada mensaje definido en la descripcin WSDL se generan
dos mensajes SOAP RPC, uno para el de peticin (vase el listado 1) y otro para la respuesta
(vase el listado 2). Como se puede apreciar en los dos listados se sigue el estilo de documento
RPC definido para el funcionamiento de SOAP RPC. En el caso del mensaje de peticin el
cuerpo tiene un elemento ms externo con el nombre del mtodo (getRate) y dos elementos
ms externos (country1 y country2) con los parmetros del mtodo y sus valores (Euro y
USA).
11
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:getRate xmlns:ns1="urn:xmethods-CurrencyExchange"
SOAP-ENV:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/">
<country1 xsi:type="xsd:string">euro</country1>
<country2 xsi:type="xsd:string">usa</country2>
</ns1:getRate>
</SOAP-ENV:Body>
Listado 1.- Mensaje SOAP RPC de peticin del valor de cambio de moneda.
Resumiendo todo lo anterior, se puede decir que los elementos tipo, mensaje y tipo de puerto
definen un servicio de forma abstracta (de hecho, una descripcin WSDL con slo esos tres
elementos constituye la descripcin del servicio Web). El elemento enlace permite relacionar el
servicio con un protocolo especfico mientras que el elemento servicio relaciona el tipo de
servicio y el enlace a una instancia especfica del servicio. Los elementos enlace y servicio
pueden ser mantenidos en documentos WSDL distintos a fin de obtener ms flexibilidad y
reutilizacin.
4.
UDDI proporciona un mecanismo para registrar y categorizar los distintos servicios Web que se
pueden ofertar a los clientes y que stos deben poder localizar a travs de dicho mecanismo.
UDDI es tambin un servicio Web, por lo cual se pueden usar mensajes SOAP para usar este
servicio.
Un registro UDDI contiene la informacin sobre los negocios (empresas) y servicios que ofrecen.
La informacin se puede organizar de la siguiente manera:
Entidad de negocio.
12
Servicio de negocio.
13
El proceso de estandarizacin de UDDI es gestionado por OASIS (http://www.oasisopen.org/home/index.php), siendo la versin 3 la ltima aceptada. En esta ltima versin se ha
aadido la capacidad de notificacin y suscripcin, de tal manera que aquellos clientes que se
suscribieron para el uso de un servicio web, recibirn notificaciones de cualquier cambio en el
servicio web que usan.
Finalmente hay que decir que UDDI es un registro de propsito general, que puede ser usado
para registrar cualquier tipo de servicio, no slo los servicios Web. UDDI no requiere que los
servicios definan interfaces de tipo SOAP o que estn descritos por documentos WSDL. De
hecho, no existen dependencias entre las tres tecnologas, aunque funcionan mejor si se utilizan
conjuntamente.
4.1 Tipos de registros UDDI
El soporte de registro UDDI puede estar gestionado de dos maneras muy diferentes. En la
primera se puede considerar los denominados registros privados, que permiten a las
organizaciones individuales (o una comunidad privada) soportar los requerimientos de fiabilidad y
seguridad adaptados a sus necesidades. La segunda aproximacin de gestin define los
denominados registros B2B (Business To Business), que permiten que un grupo de empresas
gestionen dicho registro, de tal manera que permite una integracin entre compaas de
productos y servicios. Entre estos registros pblicos cabe destacar los de IBM
(https://uddi.ibm.com/ubr/registry.html) y Microsoft (http://uddi.microsoft.com), aunque ambos
necesitan una cuenta de registro.
14
Los registros privados pueden imponer restricciones de control de la seguridad para proteger la
integridad de los datos del registro y prevenir el acceso a usuarios no autorizados. En tiempo de
diseo, el registro privado UDDI puede ser usado por uno de los equipos de desarrollo de la
organizacin para localizar un servicio y usarlo para el proyecto en el que se est trabajando.
Esto facilita la colaboracin y la reutilizacin de software entre distintos grupos, lo que facilita y
acelera la tarea de produccin de software.
Las herramientas de desarrollo se usan para crear los servicios Web, generar las
descripciones WSDL asociadas a los servicios y generar los delegados (proxies) que
permiten que los clientes puedan usar el servicio, enviando mensajes al servicio. Las
herramientas de desarrollo pueden proporcionar asistentes para registrar o buscar
servicios en un registro UDDI.
15
16
Entre las plataformas ms populares se pueden destacar las soluciones aportadas por IBM
(http://www-128.ibm.com/developerworks/webservices/) Microsoft (en su plataforma .NET,
http://msdn.microsoft.com/vstudio/) o Sun (con el Java Web Services Developer Pack, disponible
en http://java.sun.com/webservices/). Como herramientas gratuitas cabe destacar el API SOAP
de Apache (disponible en http://ws.apache.org/soap/) y el servidor AXIS/AXIS2
(http://ws.apache.org/axis/) de servicios Web. De todas formas se recomienda consultar las
http://www-128.ibm.com/developerworks/views/webservices/downloads.jsp
y
direcciones
http://www.uddi.org/solutions.html para un listado completo de posibles soluciones ofertadas por
otros fabricantes.