Modello di programmazione (Memorizzazione nella cache di AppFabric 1.1)

Sono ora disponibili due modelli di programmazione per Microsoft AppFabric 1.1 per Windows Server:

  • Modello di programmazione cache-aside. In questo modello, 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.

  • Modello di programmazione read-through/write-behind. In questo modello, è necessario creare un provider personalizzato per l'accesso all'archivio back-end. Se un elemento non è incluso nella cache, il provider provvede a recuperarlo dall'archivio back-end. Quando sono scritti in una cache, gli elementi vengono memorizzati nell'archivio back-end in modalità asincrona e con frequenza periodica. Per ulteriori informazioni sul modello, vedere Funzionalità read-through e write-behind (Memorizzazione nella cache di AppFabric 1.1).

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 AppFabric 1.1).

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

Nota

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

Per configurare il comportamento del client della 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 della cache e cache locale (Memorizzazione nella cache di AppFabric 1.1) e Impostazioni di configurazione dell'applicazione (Memorizzazione nella cache di AppFabric 1.1).

Più client della cache possono accedere a una singola cache contemporaneamente. A tale scopo, nelle applicazioni eseguite in computer diversi, è possibile creare istanze di un client della 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 della 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 AppFabric (Memorizzazione nella cache di AppFabric 1.1)
Diagramma dell'architettura logica della memorizzazione nella cache di AppFabric (Memorizzazione nella cache di AppFabric 1.1)
Sviluppo di un client della cache

  2012-03-05