La plataforma Windows Azure es una colección de servicios basados en la nube para crear y consumir aplicaciones y servicios en la nube. Los componentes clave de la plataforma son:

-
Windows Azure – provee computo virtualizado, almacenamiento y gestión para tus aplicaciones basadas en la nube. Microsoft lo define como un sistema operativo en la nube. Provee una abstracción para el hardware repartido en múltiples servidores.
-
SQL Azure – provee servicios de base de datos relacionales basados en la nube.
-
Azure AppFabric – permite que los desarrolladores conecten aplicaciones y servicios en la nube o de forma interna. Esto incluye aplicaciones que se ejecutan en Windows Azure, Windows Server y una cantidad de distintas plataformas, incluso Java, Ruby, PHP, entre otras.
Nota: Windows Azure, SQL Azure y Windows Azure platform AppFabric son productos diferentes y su utilización se paga por separado. Para más información click aquí.
La plataforma Windows Azure puede ser utilizada por aplicaciones que corren tanto en un entorno local como desde la nube. Por ejemplo, se puede acceder a datos en la nube desde aplicaciones locales, o una aplicación hosteada en la nube puede acceder a las cuentas de usuarios locales.
Windows Azure
Windows Azure provee computo y almacenamiento, como también gestión a través del Windows Azure Developer Portal. Los componentes clave son:
-
Servicios de Computo – pedidos de procesamiento. Son instancias de máquinas virtuales (VM) que vienen en dos tipos: Web Roles y Worker Roles. Los Web Roles incluyen Internet Information Services (IIS) y pueden aceptar pedidos HTTP y HTTPS. Worker Roles no vienen configurados con IIS y se utilizan principalmente para procesamiento en segundo plano.
-
Servicios de Almacenamiento – almacena datos. Provee blobs, tables y queues. Blobs (Binary Large Object) y tables son para almacenar y leer datos, pero queues (filas) se usan principalmente para que instancias de Web Roles se comuniquen con instancias Worker Roles en forma asíncrona.
-
Fabric – consiste de un (gran) grupo de máquinas. Todas las máquinas son controladas por el Fabric Controller. El Fabric Controller está encargado de monitorear todas las aplicaciones que están corriendo, gestiona las Windows Azure VMs, y decide en qué servidores correr nuevas aplicaciones, optimizando la utilización del hardware.
Al desarrollar una aplicación Windows Azure, la primer gran diferencia que se encuentra es la falta de estados (stateless). No se puede utilizar Session en una aplicación web, por ejemplo. Para guardar estados, debemos recurrir a un blob típicamente. Esto es debido a que Microsoft no garantiza en qué servidor va a estar corriendo nuestra aplicación, y tampoco garantiza que va a seguir corriendo en el servidor en el cual comenzó a correr. En cualquier momento podría caerse el servidor en el cual nuestra aplicación se ejecutaba, y automáticamente otro servidor en el Fabric levantará una VM nueva para correr la aplicación.
Además, al crear un Role (worker o web), se debe crear una clase que herede de RoleEntryPoint. Esta clase contiene 3 métodos importantes:
-
OnStart(): Es llamado por el Fabric al comienzo, y te permite realizar alguna tarea de inicialización.
-
OnStop(): Es llamado cuando el rol es detenido. Te permite realizar cualquier tarea final antes de detenerse el rol. Un rol puede detenerse porque el Fabric decidió cambiarlo de servidor, o fue solicitado desde el portal web manualmente.
-
Run(): La lógica principal va aquí. Puede ser cualquier cosa, normalmente es un loop que nunca termina.
Depende de uno decidir nunca hacer return una vez que el rol comenzó a correr, hasta que se indique que debe detenerse. De todas formas, no es necesario manejar el evento de detención, simplemente puede “fallar” sin problemas.
Finalmente, todos los archivos de un proyecto son estáticos (read only). Si se necesita cambiar el contenido de los archivos, se debe utilizar el servicio de almacenamiento (blobs), o si es configuración, en lugar de utilizar el Web.Config, usar los archivos del Service Model (ServiceConfiguration.cscfg), los cuales pueden ser cambiados sin necesidad de re-compilar.
Para más información, ver Windows Azure Platform Whitepapers.
SQL Azure
SQL Azure provee servicios de bases de datos relacionales en la nube. El principal componente es una SQL Azure Database. Por el momento es el único componente, pero Microsoft promete otros servicios para el futuro.
-
SQL Azure Database – servicio de base de datos relacional basado en Microsoft SQL Server. Una aplicación que utilice SQL Azure ve un entorno familiar al SQL Server, aunque algunos aspectos fueron omitidos en el primer release. Se puede acceder utilizando el protocolo TDS (Tabular Data Stream), lo que significa que se puede utilizar ADO.NET y otras librerías familiares.
Ver SQL Azure (MSDN) para más información.
AppFabric
El objetivo de Windows Azure platform AppFabric (antes denominado “.NET Services”), es proveer un servicio que facilite las conexiones entre aplicaciones que corren en la nube o localmente. Los componentes clave son:
-
Service Bus – facilita realizar conexiones entre aplicaciones a través de internet. Un servicio puede registrar uno o más endpoints con Service Bus. Por cada uno de ellos, Service Bus expone un endpoint, y asigna a la organización una URI raíz. Cuando una aplicación desea conectarse a este servicio, contacta al registro del Service Bus para buscar el endpoint. Service Bus devuelve un documento AtomPub, y el cliente invoca las operaciones expuestas en estos endpoints. Por cada solicitud que Service Bus recibe, invoca a la correspondiente operación en el endpoint expuesto por tu servicio. Además de facilitar la comunicación, Service Bus también puede mejorar la seguridad. Debido a que ahora los clientes ven una IP de Service Bus, no hay necesidad de exponer una dirección IP desde dentro de la organización. Service Bus soporta REST, HTTP y HTTPS.
-
Access Control – provee autenticación y autorización a través de tokens y claims. Actualmente, un cliente se puede identificar utilizando REST. (Microsoft dice que en el futuro ampliará el rol del servicio, agregando soporte para servicios basados en SOAP, etc)
Ver AppFabric Service Bus (MSDN) y AppFabric Access Control (MSDN) para más información.