Servicios web o web services


¿Qué es un servicio web?

Podemos describir un servicio web de forma técnica como un componente de software que es accesible a través de la red. Engloba varias tecnologías aunque en sí mismo no podemos catalogarlo como una tecnología. Yo diría que es más bien un método o una forma de poder intercambiar información a través de protocolos y de estándares como, XML, HTTP, SOAP, REST y WSDL. Hablaremos más detenidamente de estos términos más adelante.

Los servicios web nos permiten diseñar software modular, software dividido en módulos siendo más mantenible y manejable, y servicios distribuidos en diferentes máquinas conectadas en red.

La clave de los servicios web es la interoperabilidad, el intercambio de información entre sistemas sin importar el sistema operativo, el dispositivo o el lenguaje de programación. Un servicio web tiene un funcionamiento parecido al de un sitio web. Si en la web tradicional la respuesta del servidor es un archivo HTML, fácilmente entendible por los humanos, en los servicios web este archivo es un XML o un formato del tipo JSON, fácilmente entendible por las máquinas. Por este motivo los servicios web también se conocen como la web para máquinas.

Características principales de los servicios web

La finalidad de los servicios web es la transmisión de datos entre sistemas distintos, esto se puede hacer de muchas maneras pero, para que se considere un servicio web debe cumplir ciertas características.

  • Debe ser accesible a través de la red o Internet, normalmente mediante los protocolos HTTP.
  • La codificación de los mensajes deben ser en un lenguaje estándar como XML o JSON.
  • Debe contener una descripción de sí mismo para que cualquier aplicación pueda consumirlo de una forma automática.
  • Debe poder ser localizado y disponer de un mecanismo para encontrarlo de una manera automática.

Tipos de servicios web

Existen dos grandes tipos de servicios web SOAP y REST. Los dos cumplen las características especificadas anteriormente.

SOAP (Simple Object Access Protocol) Se trata de un protocolo de comunicación estándar, bajo el amparo de la W3C, que define como se deben comunicar dos sistemas a través de archivos XML. Este protocolo puede ser utilizado de dos maneras diferentes según convenga:

  • Mensajes orientados al documento. Este tipo de comunicación comparte la información entre dos o más aplicaciones a través de ficheros XML.
  • Mensajes orientados a RPC (Remote Procedure Calls), llamadas a procedimientos remotos. Es un mecanismo que permite invocar métodos, funciones o procedimientos de aplicaciones a través de un sistema de mensajes. Se envía un mensaje que tiene el nombre del procedimiento junto con los parámetros. La respuesta de la invocación del procedimiento se envía al cliente a través de otro mensaje.

Este protocolo estipula los mensajes SOAP con una estructura definida. Se pueden consultar las especificaciones técnicas que ofrece la W3C.

Una de las características de los servicios web es que tienen que tener la capacidad de ser descritos para que automáticamente puedan ser invocados. Esto se hace a través del lenguaje de programación WDSL (Web Services Description Language) lenguaje de descripción de servicios web. Este lenguaje describe los requisitos del protocolo y los formatos de los mensajes.

El punto fuerte de los servicios web SOAP es la seguridad, esto es lo que le hace diferente a los servicios web REST que veremos a continuación.

REST (Representational State Transfer) Transferencia de estado representacional, también llamados RESTful, es una arquitectura de software para sistemas distribuidos. Al igual que SOAP, también permite el envío de mensajes orientados al documento y mensajes orientados a RPC. Son servicios web más fáciles que usar y se suele decir que es la manera ágil de crear servicios web por su sencillez.

Este tipo permite el intercambio de diferentes formatos de archivos estándar como XML y JSON. Sirve para obtener datos y para ejecutar operaciones sobre ellos. Se suelen utilizar a través del protocolo HTTP o HTTPS.

Se dice que este tipo de servicios está orientado a los recursos. Normalmente cada recurso tiene asignado una URI donde accedemos. La respuesta es en los formatos ya mencionados XML o JSON, son los más típicos aunque no los únicos.

Un ejemplo puede ser la API de Spreaker, el hosting de nuestros capítulos del podcast. Por ejemplo, si quieres obtener la información de nuestra cuenta en formato JSON solo tienes que acceder aquí, esto sería un recurso. Si quieres obtener un listado de todos los episodios del pocast puedes acceder aquí.

Como puedes comprobar en los enlaces anteriores, la información presentada es poco legible para el ser humano pero, créeme que para una máquina resulta muy sencillo.

Conclusión

Los servicios web son un recurso muy importante cuando estamos trabajando con una aplicación que tiene versiones en diferentes plataformas (Windows, Mac OSX, Linux, Android o iOS) y dispositivos (móvil, tablet, web, desktop, Arduino oRaspberry Pi).

No hay un lenguaje específico para crear servicios web, existen diferentes APIs, frameworks, librerías y herramientas que nos facilitan esta tarea.

Si lo que realmente importa es la seguridad, SOAP es la solución, es más complejo pero es más seguro. Si por el contrario lo que necesitas es algo sencillo y escalable, es recomendable utilizar REST.

Por último no puedo dejar pasar la oportunidad de hacer mención a WCF (Windows Communication Foundation) es un framework para la creación de aplicaciones orientadas a servicios. De esto hablaremos en otro capítulo de nuestro podcast.


Web services: servicios de máquina a máquina

A día de hoy, usar diferentes servicios a través de la web es una actividad habitual. Comprar online, leer el periódico, reservar una mesa en un restaurante o ver películas son solo algunos ejemplos de las muchas interacciones que se producen a diario entre el usuario y la máquina. Pero, además, y aunque pueda pasar desapercibido, estas interacciones también tienen lugar entre máquinas: el cliente y el servidor se están enviando continuamente solicitudes y respuestas, transmisión que se produce gracias a los web services o servicios web.

¿Qué es un web service?

Un web service facilita un servicio a través de Internet: se trata de una interfaz mediante la que dos máquinas (o aplicaciones) se comunican entre sí. Esta tecnología se caracteriza por estos dos rasgos:

  • Multiplataforma: cliente y servidor no tienen por qué contar con la misma configuración para comunicarse. El servicio web se encarga de hacerlo posible.
  • Distribuida: por lo general, un servicio web no está disponible para un único cliente, sino que son diferentes los que acceden a él a través de Internet.

Cuando se utiliza un web service, un cliente manda una solicitud a un servidor, desencadenando una acción por parte de este. A continuación, el servidor devuelve una respuesta al cliente.

Al principio, web service solo funcionaba con SOAP, pero en la actualidad se utilizan también otros métodos como REST.

La tecnología detrás de un servicio web con ejemplo

Todos los web services cuentan con un Uniform Resource Identifier (URI) unívoco, esto es, la dirección del servicio web. Es similar al Uniform Resource Locator (URL) que permite acceder a páginas web. El catálogo UDDI debía desempeñar también un papel importante, pues permitía encontrar los servicios web, pero este servicio nunca logró imponerse y sus mayores partidarios terminaron retirándose del proyecto.

Más importancia tiene el lenguaje Web Service Description Language (WSDL). Un servicio web contiene un archivo en WSDL en el que se describe el servicio de forma detallada. Con esta información, el cliente puede comprender qué funciones puede ejecutar en el servidor a través del servicio web. La comunicación funciona exclusivamente mediante diferentes protocolos y arquitecturas. Entre ellos, son muy populares el protocolo de red SOAP en combinación con el estándar de Internet HTTP o los servicios web basados en una arquitectura REST.

Con estas tecnologías se posibilita el intercambio de peticiones y respuestas a menudo utilizando el lenguaje de marcado extensible (XML). Este lenguaje, relativamente simple, puede ser interpretado en igual medida por personas y ordenadores, y además es adecuado para unir sistemas con requisitos diferentes. Con todo, REST también admite otros formatos, como JSON.

Veamos cómo funciona la mecánica de esta tecnología con un ejemplo de web service. Partamos de un software escrito en Visual Basic que se ejecuta en una máquina con sistema Windows. El programa necesita el servicio de un servidor web Apache. Para ello, el cliente envía una solicitud SOAP en forma de mensaje HTTP al servidor. El web service interpreta el contenido de la solicitud y se encarga de que el servidor lleve a cabo una acción. Finalmente, el servicio web formula una respuesta y la envía de vuelta al cliente (de nuevo con SOAP y HTTP), que vuelve a interpretarla. La información se envía entonces al software, donde será procesada.

Ventajas y desventajas de los servicios web

La ventaja principal de los servicios web es que la comunicación no depende de una plataforma determinada, por lo que el cliente y el servidor apenas han de presentar rasgos en común para poder comunicarse. Para ello, la tecnología web service recurre a formatos estandarizados que interpretan todos los sistemas.

Pero en estos formatos es donde encontramos una de las desventajas. Precisamente, XML es un formato más bien voluminoso que genera grandes paquetes de datos, lo que puede crear problemas en las conexiones de red lentas. Otra posibilidad que permite conectar a dos sistemas a través de Internet son las API web. Aunque, por lo general, son más rápidas, someten a cliente y servidor a especificaciones más concretas, con lo que la interoperabilidad se ve limitada.


 

Deja un comentario