Nociones básicas sobre Servicios Web
Web Services, como indica su propio nombre, son servicios ofertados vía Web. Representan la solución con más futuro para la integración de aplicaciones en Internet y una buena y fácil alternativa para integrar aplicaciones sencillas (ej: intercambio de información) en una intranet.
Una gran baza a favor de los servicios web es que cuentan con el apoyo de todos los fabricantes, incluyendo a Microsoft.
Cómo funcionan
En un escenario típico de Web Services, una aplicación de negocio envía una petición vía HTTP a un servicio situado en una URL. El servicio recibe la petición, la procesa y devuelve una respuesta también sobre HTTP.
La idea es sencilla pero requiere:
- Un protocolo de intercambio de mensajes petición/respuesta sobre HTTP.
- Una forma de que clientes y proveedores puedan interactuar a través de los mensajes, es decir, un lenguaje de especificación de interfaces.
Se ha optado por utilizar
SOAP (Simple Objet Access Protocol) como protocolo de intercambio de mensajes. Es un protocolo sencillo basado en XML y estandarizado por el W3C.
El lenguaje de especificación de interfaces utilizado en servicios web es WSDL (Web Services Description Language). WSDL permite especificar en XML las operaciones y tipos de datos de un servicio web. Así, aunque el cliente y el servidor estén escritos en lenguajes distintos (por tanto, con sintaxis y tipos de datos diferentes) pueden interactuar al utilizar un lenguaje neutral para comunicarse.
Una petición de un servicio web constaría de los siguientes pasos:
- En el cliente se elabora una petición de una operación con unos parámetros
- La petición se transforma a formato XML utilizando WSDL
- La petición transformada se envía vía HTTP utilizando SOAP
- El servidor de servicios web recibe la petición
- El servidor determina que operación debe realizarse y transforma los parámetros de formato XML a su representación correspondiente en el lenguaje utilizado para implementar el servidor
- El servidor invoca la operación con los parámetros enviados, elabora una respuesta y se la envía al cliente de la misma forma que se ha explicado
También disponemos de una especie de
listín telefónico en el que se publicitan los servicios web. El
UDDI (Universal, Description, Discovery and Integration) es una iniciativa de varias empresas (IBM, Microsoft, ...) que ofrece un servicio gratuito para registrar y buscar servicios web. Cada servicio web se registra dando, entre otras cosas, su nombre, su punto de acceso y una descripción del servicio.

Cómo se implementan
Para implementar servicios web existen varias APIs (comerciales y gratuitas) para los lenguajes más usuales. Las APIs no son estándares pero esto no afecta a la interoperabilidad ya que la interoperabilidad es posible porque los protocoles (SOAP, WSDL, UDDI) están estandarizados.
Podemos distinguir dos tipos de APIs:
- APIs de programación basadas en mensajes: tanto el receptor como el emisor disponen de un proveedor de mensajería. Permiten mensajes síncronos y asíncronos, enviar a más de un receptor y calidad de servicio. Son APIs muy potentes pero complejas.
- APIs de programación basadas en RPCs: en el caso de un lenguaje orientado a objetos, este tipo de APIs permiten definir interfaces (en WSDL) cuyos métodos se pueden invocar remotamente (similar a CORBA). No es tan potente como las APIs basadas en mensajes pero es mucho más sencilla de usar.
El ejemplo de petición de un servicio mostrado anteriormente utilizaba un API de programación basada en RPCs. Si utilizásemos un API del otro tipo variaría la secuencia de pasos (el cliente enviaría un mensaje SOAP con la petición a un proveedor de mensajería, el cual establecería una conexión con el proveedor de mensajería del servidor para realizar el envio de dicho mensaje).
Dónde encontrar APIs
Dentro de la tecnología Microsoft, los servicios web forman parte de .NET y en cuanto a Java, existen muchas APIs de distintos fabricantes (Iona, Inprise, Oracle, IBM, Sun,...) y también gratuitas (Apache).
Sun está estandarizando el API Java para servicios web. Consta de varias APIs que forman parte de J2EE:
- JAXM: Java API for XML Messaging
- JAX-RPC: Java API for XML-based RPC
- JAXR: Java API for XML Registries
Más información en