Freigeben über


Hinzufügen eines Cachebenachrichtigungsrückrufs

Microsoft AppFabric 1.1 für Windows Server ermöglicht cacheaktivierten Anwendungen das Empfangen von Cachebenachrichtigungen. In diesem Thema wird beschrieben, wie ein Cachebenachrichtigungsrückruf hinzugefügt wird, der Anwendungen das Empfangen von Cachebenachrichtigungen ermöglicht. Weitere Informationen zu Cachebenachrichtigungen finden Sie unter Cachebenachrichtigungen (AppFabric 1.1-Cache).

Das Hinzufügen eines Cachebenachrichtigungsrückrufs umfasst zwei Schritte. Erstellen Sie zuerst eine Methode, die beim Auslösen einer Cachebenachrichtigung durch einen Cachevorgang bzw. Cachevorgänge aufgerufen werden soll. Die mit der Cachebenachrichtigung aufgerufene Methode muss die gleichen Parameter wie der DataCacheNotificationCallback-Stellvertreter akzeptieren. Fügen Sie im zweiten Schritt einen Rückruf mithilfe einer der drei verfügbaren Methoden des DataCache-Objekts hinzu:

Verwenden Sie den filter-Parameter, um die Typen von Cachevorgängen zu definieren, die in der Lage sein sollen, Cachebenachrichtigungen auszulösen. Verwenden Sie den Namen der Methode, die Sie im ersten Schritt erstellt haben, für den clientDelegate-Parameter.

Hinweis

Damit Ihre Anwendung Benachrichtigungen verwendet, müssen Sie diese für einen benannten Cache aktivieren. Verwenden Sie den notificationsEnabled-Parameter mit den Befehlen New-Cache oder Set-CacheConfig. Weitere Informationen finden Sie unter Verwenden von Windows PowerShell zum Verwalten von AppFabric 1.1-Cachefunktionen.

So fügen Sie einen Rückruf für einen oder mehrere Cachevorgänge hinzu

  1. Erstellen Sie die Methode, die von der Cachebenachrichtigung ausgelöst werden soll. Achten Sie darauf, dass die Methode die gleichen Parameter wie der DataCacheNotificationCallback-Stellvertreter annimmt.

  2. Fügen Sie einen Rückruf hinzu. Verwenden Sie eine von drei verfügbaren Methoden des DataCache-Objekts, um den Benachrichtigungsbereich zu definieren: AddCacheLevelCallback, AddRegionLevelCallback oder AddItemLevelCallback.

    1. Verwenden Sie die DataCacheOperations-Enumeration im Parameter filter, um anzugeben, welcher Typ von Cachevorgang zur Auslösung von Benachrichtigungen führen soll. Es können mehrere Enumerationen ausgewählt werden, indem die Enumerationen durch den bitweisen ODER-Operator getrennt werden, um ein bitweises ODER auszuführen. Verwenden Sie zu diesem Zweck das Zeichen „|“ in C# und den Operator „Or“ in Visual Basic.

    2. Verwenden Sie den Namen der Methode, die beim Auftreten dieser Benachrichtigungen im clientDelegate-Parameter aufgerufen werden soll.

    3. Legen Sie die Methode zum Hinzufügen des Rückrufs auf ein DataCacheNotificationDescriptor-Objekt fest, das Sie an anderer Stelle im Programm verwenden können, um das Cachebenachrichtigungsobjekt zu entfernen.

Beispiel

Der erste Schritt beim Registrieren für Cachebenachrichtigungen besteht im Erstellen einer Methode, die von der Benachrichtigung aufgerufen werden soll. Die von der Cachebenachrichtigung aufgerufene Methode muss die gleichen Parameter wie der DataCacheNotificationCallback-Stellvertreter akzeptieren. Dieses Beispiel zeigt ein Beispiel einer Methode, die von einer Cachebenachrichtigung aufgerufen werden kann.

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

Der zweite Schritt besteht im Hinzufügen eines Rückrufs für einen oder mehrere Cachevorgänge. In diesem Beispiel wird eine Benachrichtigung erstellt, um die Methode aus dem vorhergehenden Beispiel aufzurufen. Nur zu Demonstrationszwecken wurde diese Benachrichtigung mit allen möglichen Cachevorgängen bei einem Benachrichtigungsumfang auf Cacheebene konfiguriert.

Wenn mehr als ein Cachevorgang definiert werden soll, können Sie den binären ODER-Operator verwenden, um mehrere DataCacheOperations-Enumerationen einer DataCacheOperations-Variablen zuzuweisen, die für den Filterparameter verwendet werden kann. Verwenden Sie zum Hinzufügen eines Rückrufs für Cachevorgänge mit einem Benachrichtigungsumfang auf Cacheebene die AddCacheLevelCallback-Methode.

Hinweis

Dies wird für Produktionsumgebungen nicht empfohlen. Dieses Beispiel dient nur zu Demonstrationszwecken.

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

Das nächste Beispiel veranschaulicht das Hinzufügen eines Rückrufs für einen Cachevorgang mit einem Benachrichtigungsumfang auf Bereichsebene, der nur ausgelöst wird, wenn dem Cache ein Bereich mit dem Namen „TestRegion“ hinzugefügt wird.

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

Das nächste Beispiel veranschaulicht das Hinzufügen eines Rückrufs für Cachevorgänge mit einem Benachrichtigungsumfang auf Elementebene, der nur ausgelöst wird, wenn ein Objekt im Cache mithilfe des Schlüssels „TestKey“ hinzugefügt oder ersetzt wird.

Hinweis

Nur die Elementvorgänge AddItem, ReplaceItem und RemoveItem können Cachebenachrichtigungen mit Rückrufen auf Elementebene auslösen. Das Angeben von Bereichsvorgängen im Filterparameter beim Hinzufügen eines Rückrufs auf Elementebene löst eine Ausnahme aus.

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

Siehe auch

Konzepte

Hinzufügen eines Fehlerbenachrichtigungsrückrufs
Entfernen eines Cachebenachrichtigungsrückrufs
Cachebenachrichtigungsmethoden
Verwenden von Windows PowerShell zum Verwalten von AppFabric 1.1-Cachefunktionen

  2012-03-05