Condividi tramite


Memorizzazione nella cache nelle 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 invece di recuperarli dall'origine originale. Ciò può migliorare le prestazioni e la scalabilità. Inoltre, la memorizzazione nella cache rende disponibili i dati quando l'origine dati non è temporaneamente 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, incluse le ASP.NET.

Annotazioni

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

Memorizzazione di dati nella cache

È possibile memorizzare nella cache le informazioni usando 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 le basi per la creazione di implementazioni di cache personalizzate.

  • Implementazione concreta della cache degli oggetti in memoria.

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

  • Creazione e gestione delle voci di cache.

  • Specificare le informazioni di scadenza ed eliminazione.

  • Attivazione di eventi generati in risposta alle modifiche nelle voci della cache.

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

Annotazioni

La classe MemoryCache è modellata sull'oggetto cache di ASP.NET definito nel namespace 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 per memorizzare nella cache in un'applicazione WPF, vedere Procedura dettagliata: Memorizzazione dei dati dell'applicazione nella cache in un'applicazione WPF.

Memorizzazione nella cache nelle applicazioni ASP.NET

Le classi di caching nello spazio dei nomi System.Runtime.Caching forniscono funzionalità per il caching dei dati in ASP.NET.

Annotazioni

Se l'applicazione è destinata al .NET Framework 3.5 o versioni precedenti, è necessario usare le classi di memorizzazione nella cache definite nello spazio dei nomi System.Web.Caching. Per ulteriori informazioni, consultare Panoramica del Caching di ASP.NET.

Annotazioni

Quando si sviluppano nuove applicazioni, è consigliabile usare la MemoryCache classe . L'API fornita nello spazio dei nomi System.Runtime.Caching è simile all'API fornita nello spazio dei nomi Cache. Pertanto, l'API sarà familiare se è stata usata la memorizzazione nella cache nelle versioni precedenti di ASP.NET. Per un esempio di come usare la memorizzazione nella cache nelle applicazioni ASP.NET, vedere Procedura dettagliata: Memorizzazione nella cache dei dati dell'applicazione in ASP.NET.

Memorizzazione nella cache dell'output

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

ASP.NET consente di estendere la memorizzazione nella cache dell'output creando provider di cache di output personalizzati. Usando provider personalizzati, è possibile archiviare contenuto memorizzato nella cache usando altri dispositivi di archiviazione, ad esempio dischi, archiviazione cloud e motori di cache distribuita. Per creare un provider di cache di output personalizzato, creare una classe che deriva dalla OutputCacheProvider classe e configurare l'applicazione per l'uso del provider di cache di output personalizzato.

Memorizzazione nella cache nei servizi REST WCF

Per i servizi REST WCF, .NET Framework consente di sfruttare la memorizzazione nella cache dell'output dichiarativo disponibile in ASP.NET. In questo modo è possibile memorizzare nella cache le risposte dalle operazioni del servizio REST WCF. Quando un utente invia una richiesta HTTP GET a un servizio configurato per la memorizzazione nella cache, ASP.NET invia la risposta memorizzata nella cache e il metodo del servizio non viene chiamato. Dopo la scadenza della cache, la volta successiva che un utente invia una richiesta HTTP GET, viene chiamato il metodo del servizio e la risposta viene nuovamente memorizzata nella cache.

Il .NET Framework consente anche di implementare la memorizzazione nella cache di richieste HTTP GET condizionali. Negli scenari REST, una richiesta HTTP GET condizionale viene spesso usata dai servizi per implementare la memorizzazione nella cache HTTP intelligente, come descritto nella specifica HTTP. Per altre informazioni, vedere Supporto per la memorizzazione nella cache per i servizi HTTP Web WCF.

Estensione della memorizzazione nella cache in .NET Framework

La memorizzazione nella cache in .NET Framework è progettata per essere estendibile. La ObjectCache classe 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). Questa operazione può essere eseguita per creare una classe di cache che usa un meccanismo di archiviazione diverso o se si vuole un controllo granulare sulle operazioni della cache.

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

Per altre informazioni, vedere la voce Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET Framework 4.0 Series) nel blog di Scott Guthrie.

Vedere anche