Storage en Windows Azure: Colas y Blobs

Nota: Post original publicado en pablomarambio.cl en 2008.

Esta es una versión un poco más producida, y escrita en .NET, de lo que presentó Steve Marx en su charla “Building Java Applications with Windows Azure“. La idea es mostrar cómo se puede usar la API de almacenamiento de Azure a través de un wrapper, en este caso el que fue escrito para .NET.

El ejemplo es bastante simple: Una aplicación web que sirve para aumentar un contador, el que es incrementado cada vez que se hace click sobre un botón. El contador se almacena como texto en un blob.

La aplicación cuenta con dos vistas:

  • La primera incrementa directamente el contador modificando el valor del blob cada vez que se hace click sobre el botón.
  • La segunda deja un mensaje en una cola para que “otro” se encargue de incrementar el contador en el blob. Ese “otro” es el “back-end” de la aplicación; en este caso, un proceso independiente corriendo en otra máquina virtual dentro de Windows Azure.

La arquitectura de cada vista es más o menos como sigue:

  • Para la primera vista, la acción de hacer click sobre el botón “incrementar” se traduce automáticamente en una escritura del blob.

Incremento síncrono

  • Para la segunda vista, sin embargo, el hacer click sobre el botón sólo deja un mensaje para que el back-end incremente el valor del blob, cuando lo estime conveniente.

Incremento asíncrono

  • Por otra parte, cada cierto tiempo, el rol trabajador (”el otro“, como fue describido más arriba) se encarga de aumentar el blob por cada mensaje existente en la cola.

Ciclo del proceso back-end

El código de la aplicación de ejemplo es provisto como una solución de visual studio que puede ser descargado al final de este post. Cuenta con dos proyectos principales, uno para la aplicación web (”web role”) y otro para el back-end (”worker role”). Además, cuenta con un tercer proyecto que almancena los componentes y servicios comunes a ambos roles.

Los requisitos para poder compilar y probar esta solución son:

  • Visual Studio 2010
  • Cloud Service 1.1 o superior (Cloud Service es el ambiente de desarrollo para Windows Azure)
  • Castle Windsor 2.1 (inversor de dependencias; me resulta más fácil escribir aplicaciones web ASP.NET MVC con un componente de este tipo). Este componente está incluido como binario en la solución.
  • Mvc Contrib (muchas funcionalidades, pero para este caso, permite usar Castle Windsor fácilmente). Este componente está incluido como binario en la solución.
  • jQuery 1.4.2 (biblioteca javascript para mostrar los mensajes en la cola). Este componente está incluido como código fuente en la solución.

Si además estás interesado en probar este proyecto directamente sobre Windows Azure, te recomiendo echarle una mirada a las ofertas que hace MSDN al respecto.

Happy coding!

Descargas: solución con código fuente y algunas dependencias en formato binario (link).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s