El bus de servicios
Presentado en la PDC2008 formando parte de la ambiciosa plataforma de servicios en la nube Windows Azure (dentro del módulo .NET Services), el bus de servicios (Service Bus) nos proporciona un mecanismo para la comunicación entre equipos y aplicaciones independiente de la topología de la red en la que se encuentren, o de los cortafuegos y traductores de direcciones de red (NATs) que pueda haber entre ellos.
El problema de conectividad es doble, por un lado los equipos necesitan estar localizables, lo cual puede no ser posible, especialmente en el caso de que nuestro ISP no nos asigne una IP pública o de que uno de los equipos sea móvil y pueda estar aprovechando la mejor conexión de la que disponga a cada momento. Por otro lado, al menos uno de los participantes en la comunicación tiene que mantener un puerto de comunicación que acepte conexiones entrantes, lo cual en ocasiones no es posible al encontrarnos detrás de Cortafuegos y de NATs.
Hasta ahora se han estado utilizando diversos mecanismos para solventar estos problemas:
- DNS dinámica
- mapeo de puertos en NAT / UPnP
- Abrir puertos de conexiones entrantes en el cortafuegos
Los procedimientos anteriores son difíciles, inseguros y en ocasiones no prácticos.
El bus de servicios establece una 'zona desmilitarizada en el cielo (DMZ)’ proporcionando un sistema de descubrimiento, control de acceso y comunicación entre servicios, equipos y aplicaciones omnipresente y seguro.
Conceptualmente el sistema se basa en proporcionar un intermediario entre los equipos de tal forma que basta que los equipos puedan iniciar una conexión saliente para que puedan participar en el bus.
La plataforma proporciona diversas formas de enlace entre los equipos de tal forma que varios dispositivos podrían estar exponiendo servicios en el bus que estuvieran siendo consumidos por otros dispositivos de diversas maneras tal como una conexión bidireccional directa o a través de HTTP vía REST por ejemplo.
En la figura anterior se muestra uno de los mecanismos de enlace en el cual la conexión comienza con el bus actuando como intermediario para después de un tiempo pasar a establecerse una comunicación directa entre los participantes de forma automática en el caso de que sea posible con las ventajas que esto conlleva con respecto a latencia y velocidad de la conexión.
La figura siguiente muestra el proceso acceso a ese mismo servicio vía http.
Gracias a que Microsoft me ha proporcionado una clave para la CTP en un próximo artículo se explorará un posible caso de uso del bus de servicios implementando la fundación de los que podría ser un sistema de localización geográfica de dispositivos.
Fuentes | BB38 .NET Services: Connectivity, Messaging, Events, and Discovery with the Service Bus by Clemens Vasters | http://www.microsoft.com/azure/servicebus.mspx