| |
Java:
Servicios Web (I)
Primero fue la programación
estructurada, después surgió la programación
orientada a objeto y ahora es la programación basada
en servicios la que está revolucionando la forma
de concebir el software.
En
este nuevo paradigma de desarrollo software, la construcción
de aplicaciones ya no consiste en crear programas monolíticos
que resuelven un problema específico. La idea consiste
en disponer de servicios que resuelvan problemas específicos
y concretos, de manera que la construcción de una aplicación
simplemente se reduzca a la interconexión de estos servicios
para implementar un funcionalidad de mayor nivel.
Los servicios
Web constituyen una implementación de esta
filosofía de programación orientada a servicios
en el mundo Web, por ello, en este artículo vamos a analizar
el funcionamiento y composición de los servicios Web,
así como los estándares en los que se basan.

Introducción
a los servicios web
La arquitectura de servicios Web representa un nuevo estilo
de programación, basado en la implementación y despliegue
de módulos software, conocidos como servicios Web, encargados
de ejecutar una determinada operación y que puedan ser
reutilizados a través de la Web por otros servicios
o aplicaciones.
Es decir,
se trata de trasladar la filosofía de la reutilización
de código a la Web, de manera que estos módulos
de software o servicios puedan ser utilizados por cualquier aplicación,
independientemente del lenguaje de programación con que
tanto los servicios como las aplicaciones clientes estén
implementados.
Esto significa que
un servicio Web puede ser implementado con cualquier lenguaje
y tecnología de desarrollo existente
(Java, C++, .NET,..), no necesitando utilizar tecnologías
específicas de ningún fabricante; únicamente
se debe tener en cuenta que un servicio Web debe ser implementado
de manera que sea compatible con los siguientes estándares:
-
HTTP. Dado que el
servicio Web estará publicado en
la Red, el acceso al mismo se deberá realizar utilizando
el protocolo estándar Web (HTTP).
-
XML.
Los servicios Web se comportan igual que los métodos
de un objeto, esto es, reciben parámetros en la llamada
y devuelven resultados tras su ejecución. Al ser un
estándar para representación de datos independiente
de plataformas, la utilización de XML como formato
de intercambio de datos entre el servicio Web y el cliente
permite que ambos se puedan comunicar.
Estándares
de la arquitectura de servicios Web
Además de las tecnologías básicas sobre
las que se apoyan los servicios Web, XML y http, se han definido
una serie de estándares que posibilitan la interacción
entre los diferentes roles que forman la arquitectura. Estos
estándares son:
-
SOAP. SOAP son las siglas de Simple Object
Access Protocol y hace referencia a un protocolo, definido
por el W3C, para el intercambio de información entre
aplicaciones en un entrono distribuido. SOAP está basado
en XML y estable el formato de los documentos XML (mensajes
SOAP) que van a ser intercambiados entre el servicio Web
y las aplicaciones clientes durante el proceso de comunicación.
- El siguiente listado
nos muestra la estructura de un documento SOAP. Sería en el interior del elemento <body> donde,
en la petición al servicio Web, se incluiría el
nombre de la operación invocada y los parámetros
necesarios para ello, mientras que cuando se trate de una respuesta,
se incluirá el resultado de la operación.
-
WSDL.
Web Service Description Lenguage es un lenguaje basado en
XML que se utiliza para crear la descripción
de un servicio Web. En esta descripción se describen
las características del servicio Web, como las operaciones
que exponen al exterior, parámetros de llamada y tipo
de devolución. Los desarrolladores de aplicaciones clientes
del servicio Web utilizarán este documento para obtener
la información necesaria que les permita invocarlo.
A continuación se muestra la estructura de un documento
WSDL, indicándose los elementos principales y la
función de cada uno.
-
UDDI.
Universal Description Discovery and Integration proyect)
es una especificación que define
como publicar y localizar un servicio Web en un registro
de servicios, de modo que se pueda ofrecer un mecanismo estándar
tanto para la búsqueda de servicios por parte de los
clientes, como para la difusión de los mismos por
parte de los proveedores de servicios Web.
Estructura de un servicio Web
Desde el punto de vista de su implementación, un servicio Web es básicamente
un objeto con una serie de métodos que definen las operaciones que
el servicio debe exponer. Para poder comunicar este objeto con el exterior,
será necesario además disponer de un módulo software
que traduzca las peticiones XML/SOAP procedentes del cliente en llamadas
nativas a los métodos del objeto, así como codificar los
resultados devueltos por el componente en mensajes XML/SOAP y enviarlos
como respuesta al cliente.

En el caso de que
el servicio Web esté implementado
en Java, el objeto de negocio será un objeto de una clase estándar
Java, aunque podría estar implementado también como un EJB
de tipo stateless. Por su parte, el módulo adaptador sería
implementado mediante un servlet que es el tipo de componente Web encargado
del diálogo HTTP con el cliente. El código de este servlet,
deberá utilizar algún API (por ejemplo, JAXP) para realizar
la manipulación de documentos XML.
Por
Antonio Martín.
Profesor de Java de syncrom.com.
Redactor.
|
|