Cachebenachrichtigungen (Windows Server AppFabric-Cache)
Windows Server AppFabric stellt Cachebenachrichtigungen bereit, die Anwendungen beim Auftreten einer Vielzahl von Cachevorgängen auf dem Cachecluster das Empfangen asynchroner Benachrichtigungen ermöglichen. Cachebenachrichtigungen stellen darüber hinaus die automatische Invalidierung zwischengespeicherter Objekte bereit. Weitere Informationen finden Sie unter Ablauf und Entfernung (Windows Server AppFabric-Cache).
Fügen Sie zum Empfangen asynchroner Cachebenachrichtigungen der Anwendung einen Cachebenachrichtigungsrückruf hinzu. Beim Hinzufügen des Rückrufs definieren Sie die Typen von Cachevorgängen, die eine Cachebenachrichtigung auslösen, und die Methoden in Ihrer Anwendung, die beim Auftreten der angegebenen Vorgänge aufgerufen werden sollen. In diesem Thema wird der Prozess im Detail beschrieben.
Hinweis
Zum Verwenden von Cachebenachrichtigungen müssen Cachebenachrichtigungen für einen benannten Cache mit den Windows PowerShell-Befehlen New-Cache
oder Set-CacheConfig
aus dem Windows PowerShell-basierten Cacheverwaltungstool aktiviert werden.
Auslösen von Cachebenachrichtigungen
Wie in der folgenden Abbildung dargestellt, können Änderungen an Bereichen wie auch an zwischengespeicherten Objekten (die innerhalb des Caches als Elemente bezeichnet werden) Cachebenachrichtigungen auslösen.
Diese Cachevorgänge werden durch Member der DataCacheOperations-Klasse definiert.
Bereichsvorgänge
Anwendungen können beim Auftreten der folgenden Cachevorgänge in einem Bereich Cachebenachrichtigungen empfangen:
CreateRegion: Wenn ein Bereich im Cache erstellt wird.
ClearRegion: Wenn ein Bereich im Cache gelöscht wird.
RemoveRegion: Wenn ein Bereich aus dem Cache entfernt wird.
Elementvorgänge
Die Anwendung kann Cachebenachrichtigungen empfangen, wenn die folgenden Cachevorgänge für ein zwischengespeichertes Objekt (das im Cache als Element bezeichnet wird) auftreten.
AddItem: Wenn dem Cache ein Element hinzugefügt wird.
ReplaceItem: Wenn ein Element im Cache ersetzt wird.
RemoveItem: Wenn ein Element aus dem Cache entfernt wird.
Hinweis
Diese Vorgänge sind hängen an sich nicht vom Auftreten in Bereichen ab. Sie können sich entscheiden, den Benachrichtigungsumfang Ihres Rückrufs auf einen bestimmten Bereich einzuschränken. Dies wird im Abschnitt „Benachrichtigungsumfang“ dieses Dokumente erörtert.
Benachrichtigungsumfang
Abhängig von der Aktivität und den Erfordernissen Ihrer Anwendung, möchten Sie möglicherweise nicht über Ereignisse für alle Objekte und Bereiche im gesamten Cache informiert werden. AppFabric erlaubt das Einschränken des Umfangs der Benachrichtigungen von der Cacheebene bis hinunter zur Bereichsebene und Elementebene. Wie im folgenden Diagramm dargestellt, hat der beim Hinzufügen eines Rückrufs ausgewählte Benachrichtigungsumfang großen Einfluss auf die empfangenen Cachebenachrichtigungen.
Auf der Cacheebene können Ihre Anwendungen über alle Cachevorgänge aller Objekte und Bereiche im Cache benachrichtigt werden. Auf Bereichsebene werden die Anwendungen nur über Cachevorgänge aus einem einzelnen Bereich und die in ihm enthaltenen Objekte benachrichtigt. Auf Elementebene wird eine Anwendung nur über Cachevorgänge benachrichtigt, die sich auf ein einzelnes Objekt beziehen.
Wählen Sie zum Hinzufügen eines Cachebenachrichtigungsrückrufs eine der folgenden drei Methoden, um den gewünschten Benachrichtigungsumfang anzugeben:
AddCacheLevelCallback: Wenn Sie über bereichs- und elementbezogene Cachevorgänge aller Bereiche und Elemente informiert werden wollen.
AddRegionLevelCallback: Wenn Sie über bereichs- und elementbezogene Cachevorgänge aus einem bestimmten Bereich informiert werden wollen.
AddItemLevelCallback: Wenn Sie über elementbezogene Cachevorgänge für ein bestimmtes Element informiert werden wollen.
Benachrichtigungsreihenfolge
Die Reihenfolge der vom Cacheclient empfangenen Benachrichtigungen ist im Kontext eines einzelnen Bereichs garantiert. Nehmen Sie beispielsweise an, dass ein Bereich mit dem Namen RegionA
erstellt wurde. Da alle in einen Cachebereich eingestellten Daten auf diesen einen Bereich beschränkt sind, treffen alle Cachevorgänge, die sich auf RegionA
beziehen (beim Benachrichtigungsumfang auf Bereichsebene) beim Cacheclient aufeinander bezogen in der passenden Reihenfolge ein. Für bereichs- und elementbezogene Cachevorgänge, die auf anderen Cachehosts aufgetreten sind, kann das Eintreffen in der passenden Reihenfolge bezogen auf die in RegionA
aufgetretenen Vorgänge nicht garantiert werden.
Im Sinne optimaler Leistung kann die Reihenfolge von Benachrichtigungen, die mehr als einen Bereich oder Objekte umfassen, die nicht im gleichen Bereich gespeichert sind, nicht garantiert werden.
Versionsinformationen für Elementereignisse in Form des DataCacheItemVersion-Objekts werden mit dem Parameter version
an die von der Cachebenachrichtigung aufgerufene Methode übergeben. Dieses DataCacheItemVersion-Objekt entspricht der Version des Objekts, von dem das Elementereignis ausgelöst wurde. Mithilfe der CompareTo-Methode können Versionsvergleiche durchgeführt werden, um zu bestimmen, welche Cachevorgänge zuerst erfolgt sind.
Hinweis
Versionsvergleiche sind nur sinnvoll, wenn Versionen des gleichen Elements, die mit dem gleichen Schlüssel angegeben werden, verglichen werden. Es ist nicht möglich, die Reihenfolge durch den Vergleich von Versionen aus verschiedenen Schlüsseln abzuleiten. Die CompareTo-Methode gibt möglicherweise ein Ergebnis zurück, das Ergebnis ist jedoch nur für Versionen des gleichen Schlüssels gültig.
Abrufintervall
Wenn Sie Cachebenachrichtigungen verwenden, überprüft die Anwendung den Cachecluster in regelmäßigen Intervallen auf neue verfügbare Benachrichtigungen. Dieses Intervall, das als Abfrageintervall bezeichnet wird, beträgt standardmäßig 300 Sekunden.
Das Abfrageintervall wird in den Anwendungskonfigurationseinstellungen in Sekundeneinheiten angegeben. Zum Angeben eines bestimmten Intervalls können Sie das pollInterval
-Attribut des clientNotifications
-Elements in der Anwendungskonfigurationsdatei verwenden. Ferner können Sie ein bestimmtes Abrufintervall programmgesteuert mithilfe der NotificationProperties
-Eigenschaft des DataCacheFactoryConfiguration-Objekts angeben.
Verlust von Benachrichtigungen
Cachehosts können nur eine bestimmte Menge von Cachevorgängen im Arbeitsspeicher halten. Abhängig von der Systemlast kann es geschehen, dass einige Cacheclients Benachrichtigungen nicht erhalten, bevor diese in den Warteschlangen des Cachehosts abgeschnitten werden. Cacheclients können Benachrichtigungen auch verpassen, wenn Daten aufgrund eines Cacheserverfehlers verloren gehen, während der restliche Cluster weiterhin ausgeführt wird. In diesen Fällen kann der Cacheclient mithilfe von Fehlerbenachrichtigungen feststellen, dass er einige Cachebenachrichtungen verpasst hat. Die Anwendung kann mithilfe der AddFailureNotificationCallback-Methode einen Rückruf hinzufügen,um Fehlerbenachrichtungen zu empfangen. Weitere Informationen finden Sie unter Hinzufügen eines Fehlerbenachrichtigungsrückrufs (Windows Server AppFabric-Cache)
Verlust des Cacheclusters
Es besteht ein wichtiger Unterschied zwischen dem Verlust von Benachrichtigungen und dem Verlust des Cacheclusters. Wenn die Anwendung Benachrichtigungen verpasst, kann ihr dieser Verlust mithilfe einer Fehlerberichtigung zur Kenntnis gebracht werden. Wenn der gesamte Cachecluster beendet oder neu gestartet wird oder in anderer Weise verloren geht, werden keine Benachrichtigungen ausgelöst. Stattdessen löst der Cacheclient beim nächsten Versuch, den Cache zu verwenden, Ausnahmen aus, wenn er keine Verbindung mit dem Cluster herstellen kann.
Hinweis
Cachebenachrichtigungen melden nur datenbezogene Änderungen an Bereichen und Cacheelementen im Cluster, sie melden jedoch keine Ereignisse auf dem Cluster selbst.
Aktivieren von Cachebenachrichtigungen
Das Feature für Cachebenachrichtigungen wird auf Cacheebene in den Clusterkonfigurationseinstellungen konfiguriert. Als Eigenschaft des Caches können Sie diese beim erstmaliges Erstellen des Caches mithilfe des Befehls New-Cache
mit dem Schalter NotificationsEnabled
aktivieren. Standardmäßig ist das Feature für Cachebenachrichtigungen beim Erstellen eines neuen Caches deaktiviert. Weitere Informationen zum Bearbeiten der Cachekonfigurationseinstellungen finden Sie unter Bearbeiten der Cachekonfigurationseinstellungen mit Windows PowerShell (Windows Server AppFabric-Cache).
Es sind keine Anwendungskonfigurationseinstellungen zum Hinzufügen eines Rückrufs zum Empfangen von Cachebenachrichtigungen erforderlich. Die Anwendungskonfigurationseinstellungen können verwendet werden, um ein bestimmtes Abrufintervall anzugeben. Standardmäßig beträgt das Abrufintervall 300. Wenn Sie eine andere Dauer benötigen, verwenden Sie das clientNotification
-Element in der XML-basierten Anwendungskonfigurationsdatei, oder geben Sie das gewünschte Intervall programmgesteuert mithilfe der NotificationsProperties
-Eigenschaft des DataCacheFactoryConfiguration-Objekts an.
Verwenden von Cachebenachrichtigungen
Nach dem Aktivieren von Cachebenachrichtigungen sind drei Aufgaben im Zusammenhang mit der Verwendung von Cachebenachrichtigungen auszuführen: Hinzufügen von Cachebenachrichtigungsrückrufen, Hinzufügen eines Fehlerbenachrichtigungsrückrufs und Entfernen von Cachebenachrichtigungsrückrufen. Die Vorgehensweisen für jede dieser drei Aufgaben sind in Verwenden von Cachebenachrichtigungen (Windows Server AppFabric-Cache) beschrieben.
Siehe auch
Konzepte
Diagramm der physischen Windows Server AppFabric-Cachearchitektur
Diagramm der logischen Windows Server AppFabric-Cachearchitektur
Entwickeln eines Cacheclients (Windows Server AppFabric-Cache)
2011-12-05