Una de las necesidades que necesitamos cubrir cuando trabajamos con granjas de servidores es la persistencia de la sesión en un lugar común para todas las instancias. Si bien Windows Azure AppFabric Caching está pensado para el almacenamiento de cache distribuido de alta velocidad, también podemos hacer uso del mismo para almacenar el estado de la sesión. En este post vamos a ver cuál sería la configuración para nuestra aplicación para hacer uso de este servicio.
Creación de un service namespace para Windows Azure AppFabric Caching
Antes de modificar nuestra aplicación, debemos dirigirnos al portal de Windows Azure. Dentro de él, nos posicionamos en Service Bus, Access Control & Caching que son los tres servicios disponibles a día de hoy dentro del apartado Windows Azure AppFabric.
En este espacio tenemos los tres servicios por separado. En este caso seleccionamos el producto Caching y hacemos clic en New en el menú superior para solicitar el alta de un sistema de caché dentro de nuestra subscripción.
En este momento nos aparecerá una nueva ventana donde nos facilitarán la creación de los tres servicios a la vez, bajo el mismo namespace, o bien únicamente de aquel que tengamos seleccionado.
Cuando queremos dar de alta una nueva cache debemos elegir, además del namespace y la región donde lo queremos ubicar, la cuota para el tamaño máximo de la misma, siendo 128MB el tamaño mínimo y 4GB el máximo. Para consultar la tabla de precios podemos ir a la siguiente dirección.
Modificación del archivo web.config con los valores de Windows Azure AppFabric Caching
Una vez que hayamos elegido todos los parámetros, el servicio puede tardar unos minutos en estar disponible para su uso (mientras tanto tendrá el estado Activating…). Cuando la activación haya finalizado, seleccionaremos el servicio para habilitar el menú superior y así poder hacer clic en View Client Configuration.
En estos momentos se cargará la configuración exacta para nuestro servicio, incluyendo la URL y el token asignado para la conexión. La forma de mostrárnosla será la siguiente:
Si nos fijamos bien en la información anterior, son fragmentos que debemos incrustar dentro del archivo web.config de nuestra aplicación. Hay que tener extremo cuidado al insertar cada fragmento en el lugar que le corresponde ya que de lo contrario el emulador ni siquiera será capaz de arrancar 🙂 En dicha configuración está incluida más información de la que necesitamos en este post, ya que también está disponible la configuración para la funcionalidad output cache.
El primer apartado, configSections, es posible que ya se esté utilizando en la aplicación actual por lo que sólo sería necesario añadir la sección que contiene el mismo. De lo contrario, copiamos todo el apartado hasta el siguiente comentario y lo añadimos al archivo. Una vez que tenemos registrada esta sección, ya podemos hacer uso de dataCacheClient donde nos facilitan las dos posibilidades: uso simple y otra para conexiones a través de SSL. Elegimos la primera de ella o las dos en el caso de que aplique. Esta sección(es) debe estar al mismo nivel que configSections.
Por último, para session state, bastará con añadir dentro de la sección system.web el apartado sessionState donde se indica que vamos a utilizar el dataCacheClient con nombre default para almacenar la sesión. Por otro lado, nos indican que si utilizamos SSL deberemos cambiar este nombre por el nombre SslEndpoint que es el nombre dado por defecto al otro dataCacheClient mostrado en esta pantalla.
Añadir DLLs de Windows Azure AppFabric Caching
Para finalizar la configuración, necesitamos añadir a nuestro proyecto tres DLLs que hemos mencionado dentro del archivo de configuración:
- Microsoft.ApplicationServer.Caching.Client
- Microsoft.ApplicationServer.Caching.Core
- Microsoft.Web.DistributedCache
Estas librerías están ubicadas en %programfiles%Windows Azure AppFabric SDKV1.5AssembliesNET4.0Cache y deben tener el atributo Copy Local a True.
Cuando realicemos pruebas con el emulador de Windows Azure Compute es necesario hacer un iisreset para que no tenga comportamientos extraños.
Espero que sea de utilidad 😀
Session[«despedida»] = «¡Saludos!»; 😛