Notifiche cache (Memorizzazione nella cache di Windows Server AppFabric)
Windows Server AppFabric fornisce notifiche cache che consentono alle applicazioni di ricevere notifiche in modo asincrono quando vengono eseguite diverse operazioni nel cluster di cache. Le notifiche cache consentono inoltre l'invalidamento automatico degli oggetti memorizzati nella cache locale. Per ulteriori informazioni, vedere Scadenza e rimozione (Memorizzazione nella cache di Windows Server AppFabric).
Affinché possa ricevere notifiche cache in modo asincrono, aggiungere all'applicazione una richiamata della notifica cache. Quando si aggiunge la richiamata, si definiscono i tipi di operazioni cache che attivano una notifica cache e quale metodo nell'applicazione deve essere chiamato al verificarsi delle operazioni specificate. In questo argomento viene fornita una descrizione dettagliata del processo.
Nota
Per utilizzare le notifiche cache, è necessario abilitarle in una cache denominata mediante i comandi New-Cache
o Set-CacheConfig
di Windows PowerShell dal relativo strumento di amministratore della cache.
Attivazione di notifiche cache
Come indicato nella figura seguente, le modifiche alle aree e agli oggetti memorizzati nella cache (definiti elementi all'interno della cache) possono attivare le notifiche cache.
Tali operazioni cache vengono definite dai membri della classe DataCacheOperations.
Operazioni dell'area
L'applicazione può ricevere notifiche cache quando si verificano le seguenti operazioni cache all'interno di un'area:
CreateRegion: quando viene creata un'area nella cache.
ClearRegion: quando viene cancellata un'area dalla cache.
RemoveRegion: quando viene rimossa un'area dalla cache.
Operazioni elemento
L'applicazione può ricevere notifiche cache quando si verificano le seguenti operazioni cache all'interno di oggetto memorizzato nella cache (definito elemento all'interno della cache).
AddItem: quando viene aggiunto un elemento alla cache.
ReplaceItem: quando viene sostituito un elemento nella cache.
RemoveItem: quando viene rimosso un elemento dalla cache.
Nota
Tali operazioni elemento non dipendono autonomamente dal fatto se sono avvenute o meno all'interno di un'area. È possibile scegliere di limitare l'ambito di notifica della richiamata a un'area particolare. Questa procedura viene illustrata nella sezione Ambito di notifica del presente documento.
Ambito di notifica
A seconda dell'attività e delle esigenze dell'applicazione, è possibile ignorare gli eventi relativi a ciascun oggetto e area nell'intera cache. AppFabric consente di restringere l'ambito delle notifiche dal livello della cache al livello dell'area e dell'elemento. Come illustrato nel seguente diagramma, l'ambito di notifica selezionato quando si aggiunge una richiamata influisce considerevolmente sul tipo di notifiche ricevute.
Al livello della cache, è possibile che l'applicazione riceva notifiche relative a tutte le operazioni della cache da tutti gli oggetti e aree contenuti nella cache. Al livello dell'area, l'applicazione riceverà solo le notifiche relative alle operazioni della cache provenienti da una singola area e dai relativi oggetti in essa contenuti. Al livello dell'elemento, l'applicazione riceverà solo le notifiche relative alle operazioni della cache relative a un singolo oggetto.
Per specificare l'ambito di notifica desiderato, scegliere uno di questi tre metodi per aggiungere una richiamata della notifica cache:
AddCacheLevelCallback: quando si desidera ricevere notifiche in merito a operazioni della cache relative all'area o agli elementi che si verificano in tutte le aree e in tutti gli elementi.
AddRegionLevelCallback: quando si desidera ricevere notifica delle operazioni cache basate su aree ed elementi relative a un'area specifica.
AddItemLevelCallback: quando si desidera ricevere notifica delle operazioni cache basate su elementi relative a un elemento specifico.
Ordine delle notifiche
L'ordine delle notifiche ricevute dal client della cache è garantito nell'ambito del contesto di una singola area. Si supponga, ad esempio, di aver creato un'area denominata RegionA
. Poiché tutti i dati inseriti in un'area della cache sono limitati alla stessa area, tutte le operazioni della cache relative all'area RegionA
(ambito di notifica al livello dell'area) arrivano al client della cache nell'ordine reciprocamente corretto. Non è garantito che le operazioni della cache basate su aree ed elementi che si verificano su altri host della cache giungano nell'ordine relativo alle operazioni che si verificano nell'area RegionA
.
In termini di prestazioni, non è possibile garantire l'ordine delle notifiche che coinvolgono più di un'area o oggetti non archiviati nella stessa area.
Le informazioni sulla versione relative agli eventi elemento, nella forma dell'oggetto DataCacheItemVersion, vengono passate al metodo richiamato dalla notifica cache con il parametro version
. Questo oggetto DataCacheItemVersion corrisponde alla versione dell'oggetto che ha attivato l'evento elemento. Mediante il metodo CompareTo, è possibile confrontare le versioni per stabilire l'ordine di priorità delle operazioni della cache.
Nota
I confronti delle versioni sono utili solo quando si esegue il confronto delle versioni dello stesso elemento specificato con la stessa chiave. Non è possibile dedurre l'ordine mediante il confronto delle versioni di diverse chiavi. Il metodo CompareTo potrebbe restituire un risultato, ma quest'ultimo sarà valido solo per le versioni della stessa chiave.
Intervallo di polling
Quando si utilizzano le notifiche cache, l'applicazione effettua un controllo con il cluster di cache a intervalli regolari per verificare se sono disponibili nuove notifiche. Tale intervallo, definito intervallo di polling, equivale a 300 secondi per impostazione predefinita.
L'intervallo di polling viene specificato in unità di secondi nelle impostazioni di configurazione dell'applicazione. Per specificare un intervallo specifico, è possibile utilizzare l'attributo pollInterval
dell'elemento clientNotifications
nel file di configurazione dell'applicazione. È possibile inoltre indicare un intervallo di polling specifico a livello di programmazione con la proprietà NotificationProperties
dell'oggetto DataCacheFactoryConfiguration.
In caso di perdita delle notifiche
Gli host della cache possono conservare solo un certo numero di operazioni cache in memoria. È possibile che, a seconda del carico di sistema, alcuni client della cache non ricevano le notifiche prima che vengano troncate nelle code degli host della cache. I client della cache potrebbero inoltre non ricevere le notifiche quando i dati vengono persi a causa di un errore su un server cache mentre il resto del cluster continua a funzionare. In tali casi, il cliente della cache può rilevare la perdita di alcune notifiche cache mediante una notifica di errore. L'applicazione può aggiungere una richiamata per ricevere le notifiche di errore mediante il metodo AddFailureNotificationCallback. Per ulteriori informazioni, vedere Aggiungere una richiamata di notifica di errore (Memorizzazione nella cache di Windows Server AppFabric)
In caso di perdita del cluster di cache
È fondamentale, tuttavia, distinguere tra la perdita di notifiche e la perdita del cluster di cache. Se l'applicazione perde una o più notifiche, potrà rendersi conto di tale perdita grazie a una notifica di errore. Se invece l'intero cluster di cache viene arrestato, riavviato o altrimenti perso, non verrà attivata alcuna notifica. Al contrario, il client della cache genererà eccezioni la volta successiva in cui si tenterà di utilizzare la cache se non sarà possibile connettersi al cluster.
Nota
Le notifiche cache segnalano solo le modifiche relative ai dati alle aree agli elementi della cache nel cluster, ma non segnalano eventi relativi al cluster stesso.
Abilitazione delle notifiche cache
Le notifiche cache vengono configurate a livello di cache nelle impostazioni di configurazione del cluster. Trattandosi di una proprietà della cache, può essere attivata al momento della creazione della cache utilizzando il comando New-Cache
con il parametro NotificationsEnabled
. Per impostazione predefinita, la funzionalità di notifiche cache viene disattivata quando si crea una nuova cache. Per ulteriori informazioni sulla modifica delle impostazioni di configurazione della cache, vedere Modificare le impostazioni di configurazione della cache con Windows PowerShell (Memorizzazione nella cache di Windows Server AppFabric).
Per aggiungere una richiamata per la ricezione delle notifiche cache, non è necessaria alcuna impostazioni di configurazione dell'applicazione. È possibile utilizzare le impostazioni di configurazione dell'applicazione per specificare un intervallo di polling. L'intervallo di polling predefinito è di 300 secondi. Se si desidera una durata diversa, utilizzare l'elemento clientNotification
nel file di configurazione dell'applicazione basato su XML oppure specificare l'intervallo desiderato a livello di programmazione con la proprietà NotificationsProperties
dell'oggetto DataCacheFactoryConfiguration.
Utilizzo di notifiche cache
Dopo l'abilitazione, saranno disponibili tre attività correlate all'utilizzo delle notifiche cache: aggiunta di richiamate delle notifiche cache, aggiunta di una richiamata di notifica di errore e rimozione delle richiamate delle notifiche cache. Le procedure relative a ciascuna di tali attività sono descritte in Utilizzo delle notifiche cache (Memorizzazione nella cache di Windows Server AppFabric).
Vedere anche
Concetti
Diagramma dell'architettura fisica della memorizzazione nella cache di Windows Server AppFabric
Diagramma dell'architettura logica della memorizzazione nella cache di Windows Server AppFabric
Sviluppo di un client cache (Memorizzazione nella cache di Windows Server AppFabric)
2011-12-05