Memorizzazione nella cache in applicazioni .NET Framework

La memorizzazione nella cache consente di archiviare i dati in memoria per l'accesso rapido. Quando si accede nuovamente ai dati, le applicazioni possono ottenere i dati dalla cache anziché recuperarli dall'origine. Ciò può migliorare prestazioni e scalabilità. Inoltre, la memorizzazione nella cache rende disponibili i dati quando l'origine dati non è temporaneamente disponibile.

.NET Framework fornisce funzionalità di memorizzazione nella cache che è possibile utilizzare per migliorare le prestazioni e la scalabilità sia del client Windows che delle applicazioni server, come ASP.NET.

NotaNota

In .NET Framework 3.5 e versioni precedenti, ASP.NET fornisce un'implementazione della cache in memoria nello spazio dei nomi System.Web.Caching.Nelle versioni precedenti di .NET Framework la memorizzazione nella cache è disponibile solo nello spazio dei nomi System.Web e pertanto richiede una dipendenza nelle classi ASP.NET.In .NET Framework 4 lo spazio dei nomi System.Runtime.Caching contiene le API progettate sia per le applicazioni Web che non Web.

Memorizzazione di dati nella cache

È possibile memorizzare nella cache le informazioni utilizzando le classi nello spazio dei nomi System.Runtime.Caching. Le classi di memorizzazione nella cache in questo spazio dei nomi forniscono le funzionalità seguenti:

  • Tipi astratti che forniscono gli elementi fondamentali per la creazione di implementazioni della cache personalizzate.

  • Un'implementazione della cache oggetti in memoria concreta.

La classe di base astratta di memorizzazione nella cache (ObjectCache) definisce le attività di memorizzazione nella cache seguenti:

  • Creazione e gestione delle voci della cache.

  • Specifica delle informazioni sulla scadenza e sulla rimozione.

  • Attivazione degli eventi generati in risposta a modifiche apportate alle voci della cache.

La classe MemoryCache è un'implementazione della cache oggetti in memoria della classe ObjectCache. È possibile utilizzare la classe MemoryCache per la maggior parte delle attività di memorizzazione nella cache.

NotaNota

La classe MemoryCache viene modellata sull'oggetto cache ASP.NET definito nello spazio dei nomi System.Web.Caching.Di conseguenza, la logica di memorizzazione nella cache interna è simile alla logica fornita nelle versioni precedenti di ASP.NET.

Per un esempio di come utilizzare la memorizzazione nella cache in un'applicazione WPF, vedere Walkthrough: Using Caching with a WPF Application.

Memorizzazione nella cache nelle applicazioni ASP.NET

Le classi di memorizzazione nella cache nello spazio dei nomi System.Runtime.Caching forniscono le funzionalità per memorizzare i dati nella cache in ASP.NET.

NotaNota

Se l'applicazione è destinata a .NET Framework 3.5 o versioni precedenti, è necessario utilizzare le classi di memorizzazione nella cache definite nello spazio dei nomi System.Web.Caching.Per ulteriori informazioni, vedere Cenni preliminari sull'inserimento nella cache in ASP.NET.

NotaNota

Quando si sviluppano nuove applicazioni, è consigliabile utilizzare la classe MemoryCache.L'API fornita nello spazio dei nomi System.Runtime.Caching è analoga all'API fornita nello spazio dei nomi Cache.Di conseguenza, l'API risulterà familiare se è già stata utilizzata la memorizzazione nella cache nelle versioni precedenti di ASP.NET.Per un esempio di come utilizzare la memorizzazione nella cache nelle applicazioni ASP.NET, vedere Walkthrough: Caching Application Data in ASP.NET.

Memorizzazione nella cache di output

Per memorizzare manualmente nella cache i dati dell'applicazione, è possibile utilizzare la classe MemoryCache in ASP.NET. ASP.NET supporta inoltre la memorizzazione nella cache di output, che consente di archiviare in memoria l'output generato di pagine, controlli e risposte HTTP. È possibile configurare la memorizzazione nella cache di output in modo dichiarativo in una pagina Web ASP.NET oppure utilizzando le impostazioni del file Web.config. Per ulteriori informazioni, vedere Elemento outputCache per caching (schema delle impostazioni ASP.NET).

ASP.NET consente di estendere la memorizzazione nella cache di output creando provider di cache di output personalizzati. Utilizzando i provider personalizzati, è possibile archiviare il contenuto memorizzato nella cache mediante altri dispositivi di archiviazione, come dischi, archiviazione di tipo cloud e motori di cache distribuiti. Per creare un provider di cache di output personalizzato, è necessario creare una classe che deriva dalla classe OutputCacheProvider e configurare l'applicazione per l'utilizzo del provider di cache di output personalizzato.

Memorizzazione nella cache nei servizi WCF REST

Per i servizi WCF REST, .NET Framework consente di usufruire della memorizzazione nella cache di output dichiarativa, disponibile in ASP.NET. Ciò consente di memorizzare nella cache le risposte inviate dalle operazioni dei servizi WCF REST. Quando un utente invia una richiesta HTTP GET a un servizio configurato per la memorizzazione nella cache, ASP.NET restituisce la risposta memorizzata nella cache e il metodo del servizio non viene chiamato. Dopo la scadenza della cache, al successivo invio di una richiesta HTTP GET da parte dell'utente, viene chiamato il metodo del servizio e la risposta viene nuovamente memorizzata nella cache.

.NET Framework consente inoltre di implementare la memorizzazione condizionale nella cache di HTTP GET. Negli scenari REST i servizi utilizzano spesso una richiesta HTTP GET condizionale per implementare la memorizzazione intelligente nella cache HTTP, come descritto nella pagina relativa alla specifica HTTP. Per ulteriori informazioni, vedere Supporto di memorizzazione nella cache per servizi HTTP Web WCF.

Estensione della memorizzazione nella cache in .NET Framework

La memorizzazione nella cache in .NET Framework è progettata per essere estensibile. La classe ObjectCache consente di creare un'implementazione della cache personalizzata. Questa classe fornisce membri disponibili per tutte le applicazioni gestite, tra cui Windows Form, Windows Presentation Foundation (WPF) e Windows Communications Foundation (WCF). È possibile eseguire questa operazione per creare una classe cache che utilizza un meccanismo di archiviazione diverso oppure se si desidera il controllo granulare per le operazioni della cache.

Per estendere la memorizzazione nella cache, è possibile effettuare le operazioni seguenti:

Per ulteriori informazioni, vedere l'intervento relativo alla memorizzazione nella cache di output estensibile con ASP.NET 4 (VS 2010 e .NET 4.0) nel blog di Scott Guthrie.

Vedere anche

Attività

Walkthrough: Using Caching with a WPF Application

Riferimenti

ObjectCache

MemoryCache

Altre risorse

Walkthrough: Caching Application Data in ASP.NET