Memorizzazione nella cache in applicazioni .NET Framework

La memorizzazione nella cache consente di inserire i dati in memoria per l'accesso rapido. Quando accedono nuovamente ai dati, le applicazioni possono recuperarli dalla cache anziché dall'origine. In questo modo si possono ottenere migliori prestazioni e scalabilità. Inoltre, se si memorizzano i dati nella cache, questi sono accessibili anche quando l'origine dati è temporaneamente non disponibile.

.NET Framework offre funzionalità di memorizzazione nella cache che è possibile usare per migliorare le prestazioni e la scalabilità delle applicazioni client e server di Windows, tra cui ASP.NET.

Nota

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 dalle classi ASP.NET. In .NET Framework 4 lo spazio dei nomi System.Runtime.Caching contiene API progettate per le applicazioni Web e anche per quelle non Web.

Memorizzazione di dati nella cache

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

  • Tipi astratti che forniscono gli elementi fondamentali per creare implementazioni della cache personalizzate.

  • Un'implementazione concreta della cache oggetti in memoria.

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

  • Creazione e gestione di voci della cache.

  • Definizione delle informazioni relative alla scadenza e alla 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 usare la classe MemoryCache per la maggior parte delle attività di memorizzazione nella cache.

Nota

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

Per un esempio di come usare la memorizzazione nella cache in un'applicazione WPF, vedere Procedura dettagliata: Memorizzazione dei dati di un'applicazione nella cache di un'applicazione WPF.

Memorizzazione nella cache in applicazioni ASP.NET

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

Nota

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

Nota

Quando si sviluppano nuove applicazioni, è consigliabile usare la classe MemoryCache. L'API disponibile nello spazio dei nomi System.Runtime.Caching è analoga a quella dello spazio dei nomi Cache. L'API risulterà quindi familiare se si è già usata la memorizzazione nella cache nelle versioni precedenti di ASP.NET. Per un esempio di come usare la memorizzazione nella cache in applicazioni ASP.NET, vedere Procedura dettagliata: Memorizzazione nella cache dei dati applicazioni in ASP.NET.

Memorizzazione dell'output nella cache

Per memorizzare manualmente nella cache i dati delle applicazioni, è possibile usare la classe ASP.NET MemoryCache. ASP.NET supporta anche la memorizzazione dell'output nella cache, permettendo così di inserire in memoria l'output generato da pagine, controlli e risposte HTTP. È possibile configurare la memorizzazione dell'output nella cache in modo dichiarativo, in una pagina Web ASP.NET, oppure usando le impostazioni nel file Web.config. Per altre informazioni, vedere Elemento outputCache per caching (schema delle impostazioni ASP.NET).

ASP.NET consente di estendere la memorizzazione dell'output nella cache creando provider di cache di output personalizzati. Mediante questi provider, è possibile archiviare il contenuto memorizzato nella cache usando altri dispositivi di archiviazione, come dischi, risorse di archiviazione 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 in servizi WCF REST

Per i servizi WCF REST, .NET Framework consente di usufruire della memorizzazione dichiarativa dell'output nella cache, disponibile in ASP.NET. In questo modo è possibile memorizzare nella cache le risposte inviate dalle operazioni del servizio WCF REST. Se 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 che la cache è scaduta, al successivo tentativo di invio di una richiesta HTTP GET da parte dell'utente, il metodo del servizio viene chiamato 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 una richiesta HTTP GET condizionale viene spesso usata dai servizi per implementare la memorizzazione intelligente nella cache HTTP, come descritto nella specifica di HTTP. Per altre 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 è stata progettata in modo da supportare l'estendibilità. 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 usa un meccanismo di archiviazione diverso oppure se si vuole usare un controllo granulare per le operazioni della cache.

Per estendere la memorizzazione nella cache è possibile eseguire queste operazioni:

  • Creare una classe personalizzata che deriva dalla classe ObjectCache e quindi fornire un'implementazione personalizzata della cache nella classe derivata.

  • Creare una classe che deriva dalla classe MemoryCache e personalizzare o estendere la classe derivata. Per un esempio di come eseguire questa operazione, vedere Caching Application Data by Using Multiple Cache Objects in an ASP.NET Application (Memorizzazione nella cache dei dati dell'applicazione mediante più oggetti cache in un'applicazione ASP.NET).

  • Creare una classe che deriva dalla classe OutputCacheProvider e configurare l'applicazione per l'utilizzo del provider di cache di output personalizzato.

Per altre informazioni, vedere l'articolo Memorizzazione nella cache di output estendibile con ASP.NET 4 - VS 2010 e .NET Framework 4.0 nel blog di Scott Guthrie.

Vedi anche