Exportar (0) Imprimir
Expandir todo

Procedimiento: Recepción de notificaciones de una Caché de Azure

Actualizado: julio de 2010

noteNota
Si quiere que le guiemos a la hora de elegir la oferta de Caché de Azure que mejor se adapta a su aplicación, consulte ¿Cuál es la oferta de Caché de Azure más adecuada para mí?.

En este tema se describe cómo agregar una devolución de llamada de notificación de caché que permitirá a la aplicación recibir notificaciones de caché.

Para agregar una devolución de llamada de notificación de caché se requieren dos pasos. En primer lugar, cree un método que deba invocarse cuando una o varias operaciones de caché desencadenen una notificación de caché. El método que invoque con las notificaciones de caché deberá aceptar los mismos parámetros que el delegado de DataCacheNotificationCallback. En segundo lugar, agregue una devolución de llamada mediante uno de los tres métodos disponibles desde el objeto DataCache:

Use el parámetro filter para definir los tipos de operaciones de caché que desea que activen notificaciones de caché. Use el nombre del método que creó en el primer paso para el parámetro clientDelegate.

  1. Cree el método que desea que active la notificación de caché. Asegúrese de que el método acepte los mismos parámetros que el delegado de DataCacheNotificationCallback.

  2. Agregue una devolución de llamada. Use uno de los tres métodos disponibles del objeto DataCache para definir el ámbito de notificación: AddCacheLevelCallback, AddRegionLevelCallback o AddItemLevelCallback.

    1. Use la enumeración DataCacheOperations del parámetro filter para especificar el tipo de operaciones de caché que desea que activen notificaciones. Para seleccionar más de una enumeración, sepárelas mediante el operador binario OR para realizar una operación OR de bit a bit. Para ello, use el carácter | en C# y el operador Or en Visual Basic.

    2. Use el nombre del método que desea invocar cuando se produzcan estas notificaciones en el parámetro clientDelegate.

    3. Defina el método para agregar devolución de llamada igual a un objeto DataCacheNotificationDescriptor que puede usar en cualquier otra parte del programa para quitar la devolución de llamada de notificación de caché.

El primer paso al registrarse para notificaciones de caché es crear el método que la notificación debe invocar. El método al que llama la notificación debe aceptar los mismos parámetros que el delegado de DataCacheNotificationCallback. En este ejemplo se muestra un método que puede invocar una notificación de caché.


//method invoked by notification "ndCacheLvlAllOps" 
public void myCacheLvlDelegate(string myCacheName,
    string myRegion, 
    string myKey, 
    DataCacheItemVersion itemVersion,
    DataCacheOperations OperationId, 
    DataCacheNotificationDescriptor nd)
{
    //display some of the delegate parameters
    Console.WriteLine("A cache-level notification was triggered!");
    Console.WriteLine("    Cache: " + myCacheName);
    Console.WriteLine("    Region: " + myRegion);
    Console.WriteLine("    Key: " + myKey);
    Console.WriteLine("    Operation: " + OperationId.ToString());
    Console.WriteLine();
}

El segundo paso es agregar una devolución de llamada para una o varias operaciones de caché. En este ejemplo, se crea una notificación para invocar al método del ejemplo anterior. Exclusivamente para la demostración, esta notificación se configuró para todas las posibles operaciones de caché con un ámbito de notificación en el nivel de caché.

Para definir más de una operación de caché, puede usar el operador binario OR con el fin de asignar más de una enumeración DataCacheOperations a una variable DataCacheOperations que puede usarse para el parámetro de filtro. Para agregar una devolución de llamada para operaciones de caché con un ámbito de notificación en el nivel de caché, use el método AddCacheLevelCallback.

noteNota
No se recomienda hacer esta operación en una aplicación de producción. Este ejemplo sirve únicamente como demostración.


//specify all possible item and region operations
DataCacheOperations allCacheOperations = DataCacheOperations.AddItem |
    DataCacheOperations.ReplaceItem |
    DataCacheOperations.RemoveItem |
    DataCacheOperations.CreateRegion |
    DataCacheOperations.ClearRegion |
    DataCacheOperations.RemoveRegion;

//add cache-level notification callback 
//all cache operations from a notifications-enabled cache
DataCacheNotificationDescriptor ndCacheLvlAllOps
    = myTestCache.AddCacheLevelCallback(allCacheOperations, myCacheLvlDelegate);

En el siguiente ejemplo se muestra el resultado de agregar una devolución de llamada para una operación de caché con un ámbito de notificación en el nivel de región, que solamente se activa cuando se agrega a la memoria caché una región denominada TestRegion.


//add region-level notification callback for region "TestRegion"
//trigger notification with CreateRegion operation
DataCacheNotificationDescriptor ndRegionCreateRegOp
    = myTestCache.AddRegionLevelCallback("TestRegion",
    DataCacheOperations.CreateRegion, myRegionLvlAddDelegate);

En el siguiente ejemplo se muestra el resultado de agregar una devolución de llamada para operaciones de caché con un ámbito de notificación en el nivel de elemento, que solamente se activa cuando se agrega o se reemplaza un objeto en la memoria caché mediante la clave TestKey.

noteNota
Solo las operaciones de elemento AddItem, ReplaceItem y RemoveItem pueden desencadenar las notificaciones de caché con devoluciones de llamada de nivel de elemento. Al agregar una devolución de llamada en el nivel de elemento, especificar operaciones de región en el parámetro de filtro provocará una excepción.


//add item-level notification callback for item "TestKey"
//trigger notification with AddItem and ReplaceItem operations
DataCacheNotificationDescriptor ndItemUpdateOps
    = myTestCache.AddItemLevelCallback("TestKey",
        (DataCacheOperations.AddItem | DataCacheOperations.ReplaceItem),
        myItemLvlUpdateDelegate);

  1. Use el método RemoveCallback para quitar la devolución de llamada de notificación de caché. Use el objeto DataCacheNotificationDescriptor apropiado para el parámetro nd. Use el NotificationDescriptor que recibió al registrarse para notificar que desea dejar de recibir notificaciones.

En este ejemplo, el cliente de caché y tres objetos DataCacheNotificationDescriptor están declarados en el nivel de clase, de forma que los métodos que agregan y quitan declaraciones de llamadas puedan obtener acceso a ellos.


//define variables for class
DataCache myTestCache;
DataCacheNotificationDescriptor ndCacheLvlAllOps;
DataCacheNotificationDescriptor ndRegionLvlAllOps;
DataCacheNotificationDescriptor ndItemLvlAllOps;

En este ejemplo se muestra el uso del método RemoveCallback para quitar las devoluciones de llamadas correspondientes a los tres objetos DataCacheNotificationDescriptor del ejemplo anterior.


//remove cache notification callbacks
public void RemoveNotificationCallbacks()
{
    myTestCache.RemoveCallback(ndCacheLvlAllOps);
    myTestCache.RemoveCallback(ndRegionLvlAllOps);
    myTestCache.RemoveCallback(ndItemLvlAllOps);
}

Mostrar:
© 2014 Microsoft