WACEL – Windows Azure Cache Extension Library

Introducción

Windows Azure Cache Extension Library o WACEL es una librería que implementa diferentes estructuras de datos que se guardan en la nube y pueden ser compartidos entre los Servicios en la Nube, Web Sites o Aplicaciones de la Tienda de Windows 8.

clip_image001

Esto suena muy bien, pero ¿Qué es exatamente?

¿Qué te ofrece WACEL?

WACEL implementa estructuras de datos de alto nivel que pueden ser compartidas entre tus aplicaciones y servicios. La manera en la que se utilizan esas estructuras en como si fueran locales, es decir, almacenadas en la memoria local, pero están sincronizadas en la nube.

Las estructuras que WACEL ofrece actualmente son, arrays, table,s circulas buffers y cubos OLAP. Todas estas estructuras están almacenadas en Windows Azure Cache, Windows Azure Table Storage o en algunos casos en los dos sitios en base a tus necesidades de rendimiento y persistencia.

En resumen:

  • Estructuras comunes como Arrays, Circulas Buffers, Queue, Dictionaries y Multi-dimensional Cubes. Nuevas estructuras se agregaran en el futuro en las siguientes releases.
  • Un modelo de programación muy fácil. Puedes usar estas estructuras como si fueran locales sin necesidad de hacer nada especial. WACEL tiene en cuenta diferentes cosas por ti como:
    • Cachea automáticamente todos los datos de para un mayor rendimiento.
    • Tiene un soporte integrado de manejo de errores.
    • Soporta trabajo en batch y compresión automática para una mejor salida de datos.
    • Diseño sin estado para soportar alta escalabilidad.
  • Puedes balancear entre rendimiento y alta disponibilidad.

¿Cómo empiezo a trabajar con WACEL?

  • Obtener la librería de Nuget
  • Configurar la conexión con los servicios de Azure como Windows Azure Cache o Windows Azure Storage.
  • Especificar las estructuras y empezar a trabajar con ellas de manera natural.

Como compartir un Array en la nube.

    1: //allowcate a large array on a Windows Azure Cache 
    2: cluster
    3: CachedArray<int> array = new 
    4: CachedArray<int>("my_array", long.MaxValue);
    5: //operate array as if it was a local array
    6: array[12345] = 200;
    7: Console.WriteLine("Array member: " + array[12345]);

Así es como se crea un Cubo multidimensional para escenarios comunes de BI:

    1: //create a Cube with a Time dimension and a Value dimension
    2: Cube cube = Cube.GetSimpleCube("UseDevelopmentStorage=true");
    3: //Add two more dimensions. The WebSite dimension is a free dimension, which allows
    4: //you to use any strings as members without expliciting defining them.
    5: cube.AddDimension(Dimension.CreateFreeDimension("WebSite"));
    6: cube.AddDimension(Dimension.CreateFlatDimension("StatusCode", 
    7: new string[] { "200", "404", "500" }));
    8: //Update the cube
    9: cube.Update(new { Time = DateTime.Now, WebSite = 
   10: "blog.haishibai.com", StatusCode = "200", Value = 200.0 });
   11: //Query back monthly summary data
   12: var monthlySummary = cube.Query(new { Time = "Nov", WebSite = 
   13: "blog.haishibai.com", StatusCode = "200" });
   14: Console.WriteLine("Monthly average: " + 
   15: monthlySummary.Average);
   16: //Drill-down from the month to daily details
   17: var days = cube.Drilldown(monthlySummary, "Time");
   18: foreach (var day in days)
   19: Console.WriteLine(day.Coordinates[1].Name + " = " + day.Value);

Enalces

Proyecto de CodePlex: https://wacel.codeplex.com/

NuGet: https://www.nuget.org/packages/WACEL/

Si tienes alguna duda o feedback, por favor ponte en contacto conmigo.

Luis Guerrero.

Technical Evangelist Windows Azure.

@GuerreroTook