Aggiungere una richiamata di notifiche cache (Funzionalità di memorizzazione nella cache di Windows Server AppFabric)

Windows Server AppFabric consente alle applicazioni abilitate alla cache di ricevere notifiche cache. In questo argomento viene descritto come aggiungere una richiamata della notifica cache che consenta all'applicazione di ricevere le notifiche cache. Per ulteriori informazioni sulle notifiche cache, vedere Notifiche cache (Memorizzazione nella cache di Windows Server AppFabric).

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.

Nota

Se si desidera che l'applicazione utilizzi le notifiche, è necessario attivare queste ultime su una cache denominata. Utilizzare il parametro notificationsEnabled con i comandi New-Cache o Set-CacheConfig. Per ulteriori informazioni, vedere Utilizzo di Windows PowerShell per la gestione delle funzionalità di Memorizzazione nella cache di Windows Server AppFabric.

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. Per effettuare questa operazione, ricorrere al carattere | in C# e all'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 Sub myCacheLvlDelegate(ByVal myCacheName As String, _
    ByVal myRegion As String, _
    ByVal myKey As String, _
    ByVal itemVersion As DataCacheItemVersion, _
    ByVal OperationId As DataCacheOperations, _
    ByVal nd As DataCacheNotificationDescriptor)

    '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()
End Sub
//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.

Nota

È 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
Dim allCacheOperations As DataCacheOperations
allCacheOperations = DataCacheOperations.AddItem Or _
    DataCacheOperations.ReplaceItem Or _
    DataCacheOperations.RemoveItem Or _
    DataCacheOperations.CreateRegion Or _
    DataCacheOperations.ClearRegion Or _
    DataCacheOperations.RemoveRegion

'add cache-level notification callback 
'all cache operations from a notifications-enabled cache
Dim ndCacheLvlAllOps as DataCacheNotificationDescriptor = _
    myTestCache.AddCacheLevelCallback(allCacheOperations, AddressOf myCacheLvlDelegate)
//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
Dim ndRegionCreateRegOp As DataCacheNotificationDescriptor
ndRegionCreateRegOp = _
    myTestCache.AddRegionLevelCallback("TestRegion", _
    DataCacheOperations.CreateRegion, AddressOf myRegionLvlAddDelegate)
//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.

Nota

Solo le operazioni elemento AddItem, ReplaceItem e RemoveItem possono attivare le notifiche cache con richiamate 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
Dim ndItemUpdateOps As DataCacheNotificationDescriptor
ndItemUpdateOps = _
    myTestCache.AddItemLevelCallback("TestKey", _
    (DataCacheOperations.AddItem Or DataCacheOperations.ReplaceItem), _
    AddressOf myItemLvlUpdateDelegate)
//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);

Vedere anche

Concetti

Aggiungere una richiamata di notifica di errore (Memorizzazione nella cache di Windows Server AppFabric)
Rimuovere una richiamata di notifiche cache (Memorizzazione nella cache di Windows Server AppFabric)
Metodi delle notifiche cache (Memorizzazione nella cache di Windows Server AppFabric)
Utilizzo di Windows PowerShell per la gestione delle funzionalità di Memorizzazione nella cache di Windows Server AppFabric

  2011-12-05