Esporta (0) Stampa
Espandi tutto

Procedura: ricevere notifiche da una cache di Azure

Aggiornamento: febbraio 2014

In questo argomento viene descritto come aggiungere una richiamata della notifica cache che consenta all'applicazione di ricevere le notifiche cache.

L'aggiunta di una richiamata della notifica cache richiede due passaggi, il primo dei quali consiste nella creazione di un metodo da richiamare quando una o più operazioni cache attivano una notifica cache. Il metodo richiamato insieme alle notifiche cache deve accettare gli stessi parametri del delegato DataCacheNotificationCallback. Il secondo passaggio prevede l'aggiunta di una richiamata utilizzando uno dei tre metodi resi disponibili dall'oggetto DataCache:

Utilizzare il parametro filter per definire i tipi di operazioni cache che devono attivare le notifiche cache. Per il parametro clientDelegate ricorrere al nome del metodo creato durante il primo passaggio.

Per aggiungere una richiamata per una o più operazioni cache

  1. Creare il metodo che si desidera venga attivato dalla notifica cache. Verificare che il metodo accetti gli stessi parametri del delegato DataCacheNotificationCallback.

  2. Aggiungere una richiamata. Utilizzare uno dei tre metodi resi disponibili dall'oggetto DataCache per definire l'ambito della notifica: AddCacheLevelCallback, AddRegionLevelCallback o AddItemLevelCallback.

    1. Utilizzare l'enumerazione DataCacheOperations del parametro filter per specificare il tipo di operazioni cache che devono attivare le notifiche. Selezionare più di un'enumerazione separandole con l'operatore binario OR per eseguire un OR bit per bit. A tale scopo, utilizzare il carattere | in C# e l'operatore Or in Visual Basic.

    2. Utilizzare il nome del metodo che si desidera richiamare quando queste notifiche si verificano nel parametro clientDelegate.

    3. Impostare lo stesso metodo di aggiunta della richiamata dell'oggetto DataCacheNotificationDescriptor utilizzabile in altre parti del programma per eliminare la richiamata della notifica cache.

Esempio

Il primo passaggio da effettuare nella registrazione per le notifiche cache consiste nel creare un metodo che deve essere richiamato dalla notifica. Il metodo richiamato dalla notifica deve accettare gli stessi parametri del delegato DataCacheNotificationCallback. In questo esempio viene illustrato un metodo che può essere richiamato da una notifica cache.


//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();
}

Il secondo passaggio prevede l'aggiunta di una richiamata per una o più operazioni cache. In questo esempio viene creata una notifica per richiamare il metodo dell'esempio precedente. Unicamente a scopo dimostrativo, questa notifica è stata configurata per tutte le possibili operazioni cache con un ambito di notifica a livello di cache.

Per definire varie operazioni cache, è possibile ricorrere all'operatore binario OR per assegnare più di un'enumerazione DataCacheOperations a una variabile DataCacheOperations da utilizzare per il parametro filtro. Per aggiungere una richiamata per le operazioni cache con ambito di notifica a livello di cache, utilizzare il metodo AddCacheLevelCallback.

noteNota
È consigliabile evitare di effettuare questa operazione in un'applicazione di produzione. Questo esempio è fornito unicamente a scopo dimostrativo.


//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);

Nell'esempio seguente è descritta l'aggiunta di una richiamata per un'operazione cache con ambito di notifica a livello di area, che si attiva solo quando alla cache viene aggiunta un'area chiamata TestRegion.


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

Nell'esempio seguente è descritta l'aggiunta di una richiamata per operazioni cache con ambito di notifica a livello di elemento, che si attiva solo quando nella cache si aggiunge o si sostituisce un elemento utilizzando la chiave TestKey.

noteNota
Solo le operazioni sugli elementi AddItem, ReplaceItem e RemoveItem possono attivare notifiche della cache con callback a livello di elemento. Se nel parametro filtro si specificano operazioni dell'area, l'aggiunta di una richiamata a livello di elemento provoca un'eccezione.


//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);

Per eliminare una richiamata della notifica cache

  1. Per eliminare la richiamata della notifica cache, utilizzare il metodo RemoveCallback. Utilizzare l'oggetto DataCacheNotificationDescriptor appropriato per il parametro nd. Per interrompere la ricezione di notifiche, utilizzare l'oggetto NotificationDescriptor ricevuto al momento della registrazione per le notifiche.

Esempio

In questo esempio il client della cache e tre oggetti DataCacheNotificationDescriptor vengono dichiarati a un livello di classe che li rende accessibili da parte dei metodi che aggiungono ed eliminano le richiamate.


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

In questo esempio è riportato un metodo che utilizza il metodo RemoveCallback per eliminare le richiamate corrispondenti a tutti e tre gli oggetti DataCacheNotificationDescriptor dell'esempio precedente.


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

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft