Compartilhar via


Adicionar um retorno de chamada de notificação de cache (cache do Windows Server AppFabric)

O Windows Server AppFabric permite que o aplicativo habilitado para cache receba notificações de cache. Este tópico descreve como adicionar um retorno de chamada da notificação de cache que permitirá que o seu aplicativo receba notificações de cache. Para obter mais informações sobre notificações de cache, consulte Notificações de cache (cache do Windows Server AppFabric).

A adição de um retorno de chamada de notificação de cache exige duas etapas. Primeiro, crie um método a ser chamado quando uma notificação de cache é disparada por uma ou mais operações de cache. O método chamado com as notificações de cache deve aceitar os mesmos parâmetros que o representante DataCacheNotificationCallback. Segundo, adicione um retorno de chamada usando um dos três métodos disponíveis pelo objeto DataCache:

Use o parâmetro filter para definir os tipos de operações de cache para os quais você deseja disparar notificações de cache. Use o nome do método criado na primeira etapa para o parâmetro clientDelegate.

Dica

Para que o seu aplicativo use notificações, você precisa habilitá-la em um cache nomeado. Use o parâmetro notificationsEnabled com os comandos New-Cache ou Set-CacheConfig. Para obter mais informações, consulte Usando o Windows PowerShell para gerenciar os recursos de cache do Windows Server AppFabric.

Para adicionar um retorno de chamada referente a uma ou mais operações de cache

  1. Crie o método a ser disparado pela notificação de cache. Verifique se o método aceita os mesmos parâmetros que o representante DataCacheNotificationCallback.

  2. Adicione um retorno de chamada. Use um dos três métodos disponíveis pelo objeto DataCache para definir o escopo da notificação: AddCacheLevelCallback, AddRegionLevelCallback ou AddItemLevelCallback.

    1. Use a enumeração DataCacheOperations no parâmetro filter para especificar o tipo de operações de cache que você deseja disparar notificações. Selecione mais de uma enumeração separando-as com o operador binário OU para executar um bit a bit OU. Para fazer isso, use o caractere | no C# e o operador Ou no Visual Basic.

    2. Use o nome do método que você desejará chamar quando ocorrerem essas notificações no parâmetro clientDelegate.

    3. Defina o método de adicionar retorno de chamada igual a um objeto DataCacheNotificationDescriptor que você pode usar em qualquer local do seu programa para remover o retorno de chamada da notificação de cache.

Exemplo

A primeira etapa ao registrar notificações de cache é criar um método a ser chamado pela notificação. O método chamado pela notificação deve aceitar os mesmos parâmetros que o representante DataCacheNotificationCallback. Este exemplo mostra um método que pode ser chamado por uma notificação de 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();
}

A segunda etapa é adicionar um retorno de chamada para uma ou mais operações de cache. Neste exemplo, uma notificação é criada para chamar o método do exemplo anterior. Somente para fins de demonstração, essa notificação foi configurada para todas as operações de cache possíveis com um escopo de notificação de nível de cache.

Para definir mais de uma operação de cache, você pode usar o operador binário OU para atribuir mais de uma enumeração DataCacheOperations a uma variável DataCacheOperations que pode ser usada para o parâmetro de filtro. Para adicionar um retorno de chamada para operações de cache com um escopo de notificação de nível de cache, use o método AddCacheLevelCallback.

Dica

Não recomendamos fazer isso em um aplicativo de produção. Este exemplo é apenas para fins de demonstração.

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

O próximo exemplo mostra qual será a aparência de adicionar um retorno de chamada para uma operação de cache com um escopo de notificação de nível de região, que é disparado apenas quando uma região com o nome TestRegion é adicionada ao cache.

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

O próximo exemplo mostra qual será a aparência de adicionar um retorno de chamada para operações de cache com um escopo de notificação de nível de item, que é disparado apenas quando um objeto é adicionado ou substituído no cache usando a chave TestKey.

Dica

Somente as operações de item AddItem, ReplaceItem e RemoveItem podem disparar notificaçõs de cache com retornos de chamada de nível de item. A especificação de operações de região no parâmetro filtro, ao adicionar um retorno de chamada de nível de item, causará uma exceção.

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

Consulte também

Conceitos

Adicionar um retorno de chamada de notificação de falha (cache do Windows Server AppFabric)
Remover um retorno de chamada de notificação de cache (cache do Windows Server AppFabric)
Métodos de notificações de cache (cache do Windows Server AppFabric)
Usando o Windows PowerShell para gerenciar os recursos de cache do Windows Server AppFabric

  2011-12-05