Partager via


Ajout d'un rappel de notification de cache (mise en cache de Windows Server AppFabric)

Windows Server AppFabric permet à votre application prenant en charge le cache de recevoir des notifications de cache. Cette rubrique décrit l'ajout d'un rappel de notification de cache permettant à votre application de recevoir des notifications de cache. Pour plus d'informations sur les notifications de cache, consultez la rubrique Notifications du cache (mise en cache de Windows Server AppFabric).

L'ajout d'un rappel de notification de cache inclut deux étapes. Commencez par créer une méthode devant être appelée lorsqu'une notification de cache est déclenchée par une ou plusieurs opérations de cache. La méthode appelée avec les notifications de cache doit accepter les mêmes paramètres que le délégué DataCacheNotificationCallback. Ajoutez ensuite un rappel à l'aide d'une des trois méthodes disponibles à partir de l'objet DataCache :

Utilisez le paramètre filter pour définir les types d'opérations de cache qui déclencheront des notifications de cache. Utilisez le nom de la méthode créée lors de la première étape pour le paramètre clientDelegate.

Notes

Pour que votre application utilise les notifications, vous devez activer ces dernières sur un cache nommé. Utilisez le paramètre notificationsEnabled avec la commande New-Cache ou Set-CacheConfig. Pour plus d’informations, consultez la rubrique Utilisation de Windows PowerShell pour la gestion des fonctionnalités de mise en cache de Windows Server AppFabric.

Ajout d'un rappel pour une ou plusieurs opérations de cache

  1. Créez la méthode qui sera déclenchée par la notification de cache. Vérifiez que la méthode accepte les mêmes paramètres que le délégué DataCacheNotificationCallback.

  2. Ajoutez un rappel. Utilisez une des trois méthodes disponibles à partir de l'objet DataCache pour définir l'étendue de la notification : AddCacheLevelCallback, AddRegionLevelCallback ou AddItemLevelCallback.

    1. Utilisez l'énumération DataCacheOperations dans le paramètre filter pour spécifier le type des opérations de cache qui doivent déclencher des notifications. Sélectionnez plusieurs énumérations en séparant celles-ci à l'aide de l'opérateur OR binaire pour effectuer une opération OR au niveau du bit. Pour ce faire, utilisez le caractère | dans C# et l'opérateur Or dans Visual Basic.

    2. Utilisez le nom de la méthode à appeler lorsque ces notifications surviennent dans le paramètre clientDelegate.

    3. Définissez la méthode d'ajout d'un rappel comme égale à un objet DataCacheNotificationDescriptor que vous pouvez utiliser à un autre emplacement dans votre programme pour supprimer le rappel de notification de cache.

Exemple

La première étape de l'enregistrement des notifications de cache consiste à créer la méthode appelée par la notification. Celle-ci doit accepter les mêmes paramètres que le délégué DataCacheNotificationCallback. L'exemple suivant montre une méthode pouvant être appelée par une notification 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();
}

La deuxième étape consiste à ajouter un rappel pour une ou plusieurs opérations de cache. Dans cet exemple, une notification est créée pour appeler la méthode de l'exemple précédent. Pour la démonstration, cette notification a été configurée pour toutes les opérations de cache possibles sur l'étendue de notification d'un cache.

Pour définir plusieurs opérations de cache, vous pouvez utiliser l'opérateur OR binaire afin d'affecter plusieurs énumérations DataCacheOperations à une variable DataCacheOperations que vous pouvez utiliser comme paramètre Filter. Pour ajouter un rappel aux opérations de cache sur l'étendue de notification d'un cache, utilisez la méthode AddCacheLevelCallback.

Notes

Il est déconseillé d'effectuer cette opération dans une application de production. Cet exemple a été conçu pour la démonstration uniquement.

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

L'exemple suivant montre l'ajout d'un rappel pour une opération de cache sur l'étendue de notification d'une région, le rappel étant uniquement déclenché lorsque la région TestRegion est ajoutée au 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);

L'exemple suivant montre l'ajout d'un rappel pour des opérations de cache sur l'étendue de notification d'un élément, le rappel étant uniquement déclenché lorsqu'un objet est ajouté ou remplacé dans le cache à l'aide de la clé TestKey.

Notes

Seules les opérations d'élément AddItem, ReplaceItem et RemoveItem peuvent déclencher des notifications de cache avec des rappels au niveau de l'élément. La spécification des opérations de région dans le paramètre Filter lors de l'ajout d'un rappel au niveau de l'élément génère une exception.

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

Voir aussi

Concepts

Ajout d'un rappel de notification d'échec (mise en cache de Windows Server AppFabric)
Suppression d'un rappel de notification de cache (mise en cache de Windows Server AppFabric)
Méthodes de notifications de cache (mise en cache de Windows Server AppFabric)
Utilisation de Windows PowerShell pour la gestion des fonctionnalités de mise en cache de Windows Server AppFabric

  2011-12-05