Modello di programmazione (Memorizzazione nella cache di Windows Server AppFabric)

Il modello di programmazione di Windows Server AppFabric è personalizzato per il criterio di programmazione cache-aside. Di conseguenza, se i dati non sono presenti nella cache, l'applicazione, e non la cache distribuita di AppFabric, deve ricaricare i dati nella cache dall'origine dati originaria. Il codice dell'applicazione utilizza la classe DataCache, definita anche client cache, dopo la creazione della relativa istanza.

Strategia di memorizzazione nella cache

Il codice dell'applicazione deve essere progettato in modo da poter funzionare indipendentemente dalla cache e da non richiedere che i dati siano sempre disponibili. Poiché i dati presenti nella cache non vengono resi permanenti in maniera duratura, esiste la possibilità che essi diventino non disponibili.

La funzionalità ad alta disponibilità costituisce una protezione contro errori di computer e processo derivanti da singoli host della cache durante l'esecuzione del cluster. Potrebbero, tuttavia, verificarsi situazioni in cui l'intero cluster diventa inattivo. Ad esempio, se troppi host diventano inattivi, l'intero cluster diventa inattivo. Per ulteriori informazioni, vedere Host principali e gestione cluster (Memorizzazione nella cache di Windows Server AppFabric).

Esistono diversi altri motivi per cui il codice potrebbe incontrate un mancato riscontro nella cache: l'elemento della cache potrebbe essere scaduto o essere stato rimosso, il server di cache potrebbe essere stato riavviato, il servizio di memorizzazione nella cache potrebbe essere stato riavviato oppure il cluster di cache potrebbe essere stato riavviato accidentalmente. A prescindere dal motivo, il codice dell'applicazione deve essere in grado di accedere al database (o altra origine dati) se l'oggetto memorizzato nella cache non è disponibile.

Client cache

Per memorizzare i dati nella cache, utilizzare il metodo GetCache o il metodo GetDefaultCache per restituire un oggetto DataCache. Una volta creata l'istanza, tale oggetto DataCache viene definito come client cache.

Nota

Per motivi di prestazioni, si consiglia di ridurre al minino il numero di oggetti DataCacheFactory cerati in un'applicazione abilitata alla cache. Memorizzare l'oggetto DataCacheFactory in una variabile disponibile per tutte le parti dell'applicazione che utilizzano i client cache.

Per configurare il comportamento del client cache sono disponibili diverse opzioni. È possibile specificare tali impostazioni di configurazione a livello di programmazione o con un file di configurazione dell'applicazione oppure utilizzando entrambi gli approcci. Per ulteriori informazioni sui client cache e le impostazioni di configurazione dell'applicazione disponibili, vedere Client cache e cache locale (Memorizzazione nella cache di AppFabric) e Impostazioni di configurazione dell'applicazione (Memorizzazione nella cache di Windows Server AppFabric).

Più client cache possono accedere a una singola cache contemporaneamente. A tale scopo, nelle applicazioni eseguite in computer diversi, è possibile creare istanze di un client cache configurato per l'utilizzo della stessa cache. Il codice di esempio seguente dimostra questo concetto. Si noti che i commenti vengono utilizzati per identificare il codice in esecuzione in istanze di client cache differenti.

'Each application has a similar GetCache method call
Dim myCacheFactory As DataCacheFactory = New DataCacheFactory()
Dim catalog As DataCache = myCacheFactory.GetCache("catalog")

'One cache client saves an object to the catalog named "toy101"
Call catalog.Put("toy101", New ToyObject("toy101", "Playschool"))

'The same or different cache client retrieves the object
Dim toy As ToyObject = CType(catalog.Get("toy101"), ToyObject)

'The same or a different cache client removes the object
catalog.Remove("toy101")
//Each application has a similar GetCache method call
DataCacheFactory myCacheFactory = new DataCacheFactory();
DataCache catalog = myCacheFactory.GetCache("catalog");

//One cache client saves an object to the catalog named "toy101"
catalog.Put("toy101", new ToyObject("toy101", "Playschool"));

//The same or different cache client retrieves the object
ToyObject toy = (ToyObject)catalog.Get("toy101");

//The same or a different cache client removes the object
catalog.Remove("toy101");

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