(0) exportieren Drucken
Alle erweitern

Vorgehensweise: Empfangen von Benachrichtigungen von einem Azure-Cache

Letzte Aktualisierung: Juli 2010

noteHinweis
Hilfestellung bei der Auswahl des für Ihre Anwendung geeigneten Azure Cache-Angebots finden Sie unter Welches Azure-Cacheangebot eigent sich am besten für mich?.

In diesem Thema wird beschrieben, wie ein Cachebenachrichtigungs-Rückruf hinzugefügt wird, der Anwendungen das Empfangen von Cachebenachrichtigungen ermöglicht.

Das Hinzufügen eines Cachebenachrichtigungs-Rü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.

  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.

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 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.

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


//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
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.

noteHinweis
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
DataCacheNotificationDescriptor ndItemUpdateOps
    = myTestCache.AddItemLevelCallback("TestKey",
        (DataCacheOperations.AddItem | DataCacheOperations.ReplaceItem),
        myItemLvlUpdateDelegate);

  1. Verwenden Sie die RemoveCallback-Methode zum Entfernen des Cachebenachrichtigungs-Rückrufs. Verwenden Sie das entsprechende DataCacheNotificationDescriptor-Objekt für den Parameter nd. Verwenden Sie den NotificationDescriptor, den Sie bei der Registrierung für Benachrichtigungen empfangen haben, um den Empfang von Benachrichtigungen zu ändern.

In diesem Beispiel werden der Cacheclient und drei DataCacheNotificationDescriptor-Objekte auf Klassenebene deklariert, so dass auf sie durch Methoden, die Rückrufe hinzufügen und entfernen, zugegriffen werden kann.


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

Dieses Beispiel veranschaulicht eine Methode, die die RemoveCallback-Methode verwendet, um die allen drei DataCacheNotificationDescriptor-Objekten aus dem vorhergehenden Beispiel entsprechenden Rückrufe zu entfernen.


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

Anzeigen:
© 2014 Microsoft