ArquitecturaWeb

Arquitectura de Servicios Web

A finales de los años 90, tras casi diez años de CORBA sin gran éxito, comienza a estandarizarse el uso de HTTP para la implementación de interoperabilidad entre componentes distribuidos. Las evidentes ventajas del uso de las tecnologías web para los servicios software llevan a establecer un estándar. A partir de ahí, la estandarización lleva a W3C a definir una arquitectura de servicios web.

El uso de servicios web ha contribuido sin duda alguna a la construcción del paradigma de arquitectura SOA, proporcionando el soporte tecnológico mas utilizado para su implementación. La independización de la plataforma o lenguaje en el que esté desarrollado dos componentes, es una clave de su éxito. SOA y Servicios Web han estado tan unidos, que a menudo existe la confusión entre una cosa y la otra, asemejándolos.

¿Qué es un servicio web?

Un servicio web es un conjunto de especificaciones tecnológicas basadas en estándares abiertos y que proporcionan un modelo de interacción sistema a sistema. Estándares como XML, SOAP, URL o HTTP forman la base tecnológica de esta especificación.

De forma mas concreta, un servicio web supone la exposición de una funcionalidad invocable a través de HTTP, utilizando XML para comunicación de la información. De esta manera la comunicación entre dos componentes es independiente de la plataforma o lenguaje utilizado para su codificación.

El World Wide Web Consortium (W3C) define Web Service como:

«Un servicio web es un sistema de software diseñado para admitir la interacción interoperable de máquina a máquina a través de una red. Tiene una interfaz descrita en un formato procesable por máquina (específicamente WSDL). Otros sistemas interactúan con el servicio web de la manera prescrita por su descripción usando mensajes SOAP, típicamente transmitidos usando HTTP con una serialización XML junto con otros estándares relacionados con la web.»

Arquitectura de Servicios Web

La definición de W3C ya aporta la información relevante sobre la estructura y patrón de interacción de un servicio web. En ella vemos necesario el rol de un proveedor de servicio, y un consumidor del mismo. Sin embargo, debe poderse localizar en la red tal funcionalidad, y para ello existe un componente que actúa de directorio de servicios: el registro del servicio.

Atendiendo a la arquitectura compuesta por tres componentes: Proveedor, Consumidor y Registro del servicio, las interacciones entre ellos se reflejan en el siguiente diagrama. En el mismo se indica el protocolo o estándar utilizado para cada operación.

Patron de interacción y arquitectura de servicio web
Patrón de interacción y arquitectura de servicio web

Con este esquema general podemos describir el patrón de interacción de un servicio web con los siguientes pasos:

  1. El Proveedor del Servicio genera el contrato de integración WSDL, donde se describirá la especificación del Servicio Web. Registra este WSDL en el directorio UDDI o Registro del Servicio.
  2. Un consumidor del servicio solicita un Servicio Web, a través del UDDI lo localiza en el Registro de Servicio y dispone de su ubicación física.
  3. El consumidor, o cliente del servicio, a través de la especificación del descriptor (WSDL) envía una solicitud (Request) para un servicio particular al Web Service Listener, que se encarga de recibir y enviar los mensajes en formato SOAP.
  4. El Proveedor del servicio recibe el mensaje SOAP del consumidor y ejecuta la operación relacionada con dicha solicitud. El resultado de la misma se devuelve como mensaje SOAP al consumidor.
  5. El consumidor recibe el SOAP con la respuesta y/o resultado de la operación y lo procesa.

Estándares que forman la base tecnológica de Servicios Web

La base tecnológica de los servicios web involucra a otras tecnologías interrelacionadas, y las distintas capas. La definición de la arquitectura de servicios web que hace la organización W3C, incluye algunas como las que muestran en la siguiente figura.

Pila de Arquitectura de Servicios Web
Pila de Arquitectura de Servicios Web

Entre los mas relevantes de esta arquitectura están:

XML

XML, del inglés eXtensible Markup Language, es un estándar de
W3C. Se trata de un metalenguaje que permite definir otros lenguajes de marcas, y utilizado principalmente para el almacenamiento de datos. Su principal clave de éxito está en el uso en distintas tecnologías como lenguaje descriptivo de representación de datos. Su estructura es predecible, parseable, computable y legible por humanos.

En lo que aplica a la arquitectura de servicios web, XML reduce el tiempo de desarrollo al canalizar la representación de datos en una tecnología sencilla, y bien conocida.

La principal desventaja radica en el rendimiento, al tener que realizar la conversión de los datos primitivos al texto, validar y parsear un documento xml.

SOAP

Del inglés Simple Object Access Protocol, es un protocolo de intercambio de mensajes basado en XML, derivado del XML-RPC, y estándar del W3C.

SOAP define una gramática XML que describe el formato de los documentos para el intercambio de información en servicios web. Este protocolo establece una capa de transporte sobre HTTP, que actúa de envoltura de los datos, denominada «sobre». El documento XML que define SOAP se compone de 4 elementos:

  • Envelope: La raíz del documento, y «sobre» Soap.
  • Header: Sección opcional de información sobre cómo debe ser procesado el mensaje.
  • Body: Sección obligatoria que contiene la información relativa a la llamada y a su respuesta.
  • Fault: En este bloque se proporciona información relativa a errores producidos durante el procesamiento.

UDDI

Del inglés Universal Description Discovery and Integration, UDDI es una iniciativa de OASIS para el contexto de los servicios web. Se trata de un servicio de registro de directorio de servicios web, en XML, donde un proveedor publica su servicio, y un consumidor lo busca. El funcionamiento es similar a las páginas amarillas de directorio de teléfonos.

El protocolo SOAP permite consultar este directorio para obtener las descripciones de servicios WSDL y poder acceder al servicio a través de su interfaz.

WSDL

Web Services Description Languaje es un lenguaje específico XML que permite definir la interfaz de un servicio web.

La descripción de un servicio web consta de tres elementos:

  • Definición de espacios usados en la descripción del servicio.
  • Descripción de la interfaz del servicio web mediante el conjunto de operaciones que definen el servicio y tipos usados.
  • Enlace lógico con la implementación concreta de las operaciones de la interfaz.
Estructura WSDL
Estructura WSDL

Ventajas e inconvenientes de los Servicios Web

Las aportaciones de las especificaciones de Servicios Web a la industria son evidentes en cuanto a interoperabilidad. Dadas sus características y el hecho de utilizar la tecnología mas ampliamente extendida en internet (HTTP) el esfuerzo para adaptar un sistema distribuido a una arquitectura de servicios web es menor que en otros casos.

Ventajas

Entre otras, la principal aportación de esta tecnología, en mi opinión, ha sido el soporte tecnológico al desarrollo de arquitecturas SOA. Pero existen otras ventajas que hay que enumerar:

  1. Aportan interoperabilidad entre sistemas software independientemente del lenguaje, plataforma o tecnología en la que estén desarrolladas.
  2. Minimizan los problemas de interacción entre sistemas distribuidos físicamente en redes diferentes. Al apoyarse sobre HTTP, incluso permiten pocos cambios en la seguridad de las organizaciones, al poder invocarse a través del puerto TCP 80.
  3. Conectan sistemas remotos, distribuidos físicamente en distintas ubicaciones, con estándares abiertos como XML o HTTP. Todo ello bajo el paraguas de la especificación de W3C, que hace transparente las capacidades de integración, sin tecnologías propietarias.
  4. Fomenta la reutilización. Una de las grandes ventajas de los servicios web es la reutilización de funciones desplegadas como servicios. Un mismo servicio puede servir una función incluso a distintas aplicaciones.
  5. Fomenta el encapsulado a la vez que la independencia tecnológica. Un consumidor no sabe cómo está implementado un servicio, sólo necesita saber qué función realiza, y su interfaz.
  6. Simplicidad de entendimiento, al basarse en estándares y protocolos basados en texto, es human-readable.

Inconvenientes

Entre los inconvenientes del uso de servicios web, el principal es el que afecta al rendimiento. Si bien utilizar estándares y protocolos basados en texto es una virtud respecto a la legibilidad, también es un inconveniente en cuanto a rendimiento.

Por otro lado, en cuanto a la seguridad, la ventaja de basarse en HTTP puede convertirse en el inconveniente de ser mas difícilmente auditable.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Follow by Email
LinkedIn
Share