Almacenamiento en caché en aplicaciones .NET Framework

El almacenamiento en caché permite almacenar datos en memoria para un acceso rápido. Cuando se vuelve a acceder a los datos, las aplicaciones pueden obtenerlos de la memoria caché en lugar de recuperarlos de la fuente original. Esto puede mejorar el rendimiento y la escalabilidad. Además, el almacenamiento en caché permite que los datos estén disponibles cuando el origen de datos no está disponible temporalmente.

.NET Framework proporciona la funcionalidad de almacenamiento en caché que puede usar para mejorar el rendimiento y la escalabilidad de las aplicaciones de cliente y servidor de Windows, incluido ASP.NET.

Nota

En .NET Framework 3.5 y versiones anteriores, ASP.NET proporciona una implementación de caché en memoria en el espacio de nombres System.Web.Caching. En versiones anteriores de .NET Framework, el almacenamiento en caché solo estaba disponible en el espacio de nombres System.Web y, por tanto, exigía una dependencia de las clases de ASP.NET. En .NET Framework 4, el espacio de nombres System.Runtime.Caching contiene API diseñadas para aplicaciones web y no web.

Almacenar datos en caché

Puede almacenar información en caché mediante clases del espacio de nombres System.Runtime.Caching. Las clases de almacenamiento en caché de este espacio de nombres proporcionan las siguientes características:

  • Tipos abstractos que proporcionan la base para crear implementaciones de caché personalizadas.

  • Una implementación de caché de objetos en memoria concreta.

La clase de almacenamiento en caché base abstracta (ObjectCache) define las siguientes tareas de almacenamiento en caché:

  • Creación y administración de entradas de caché.

  • Especificación de información de expiración y expulsión.

  • Desencadenamiento de eventos producidos en respuesta a cambios en las entradas de caché.

La clase MemoryCache es una implementación de caché de objetos en memoria de la clase ObjectCache. Puede usar la clase MemoryCache para la mayoría de las tareas de almacenamiento en caché.

Nota

La clase MemoryCache se ha basado en el objeto de caché ASP.NET definido en el espacio de nombres System.Web.Caching. Por lo tanto, la lógica interna de almacenamiento en caché es similar a la lógica proporcionada en versiones anteriores de ASP.NET.

Para obtener un ejemplo de uso del almacenamiento en caché en una aplicación WPF, vea Walkthrough: Caching Application Data in a WPF Application (Tutorial: almacenamiento en caché de datos de aplicación en una aplicación WPF).

Almacenamiento en caché de aplicaciones ASP.NET

Las clases de almacenamiento en caché del espacio de nombres System.Runtime.Caching proporcionan funcionalidad para almacenar en caché datos en ASP.NET.

Nota

Si el destino de la aplicación es .NET Framework 3.5 o anteriores, debe usar las clases de almacenamiento en caché definidas en el espacio de nombres System.Web.Caching. Para más información, vea Información general sobre el almacenamiento en caché en ASP.NET.

Nota

Al desarrollar nuevas aplicaciones, se recomienda usar la clase MemoryCache. La API proporcionada en el espacio de nombres System.Runtime.Caching es como la API que se proporciona en el espacio de nombres Cache. Por lo tanto, la API le resultará familiar si ha usado el almacenamiento en caché de versiones anteriores de ASP.NET. Para obtener un ejemplo de uso del almacenamiento en caché en aplicaciones ASP.NET, vea Tutorial: Almacenar en caché datos de la aplicación en ASP.NET.

Almacenamiento en caché de resultados

Para almacenar en caché de forma manual datos de aplicación, puede usar la clase MemoryCache de ASP.NET. ASP.NET también admite el almacenamiento en caché de resultados, lo que almacena el resultado generado de páginas, controles y respuestas HTTP en memoria. Puede configurar el almacenamiento en caché de resultados de forma declarativa en una página web de ASP.NET o mediante los valores del archivo Web.config. Para más información, vea Elemento outputCache para el almacenamiento en caché (Esquema de configuración de ASP.NET).

ASP.NET permite extender el almacenamiento en caché de resultados mediante la creación de proveedores de caché de salida personalizados. Con proveedores personalizados, puede almacenar contenido de la caché con otros dispositivos de almacenamiento, como discos, almacenamiento en la nube y motores de caché distribuida. Para crear un proveedor de caché de salida personalizado, cree una clase que derive de la clase OutputCacheProvider y configure la aplicación de modo que use el proveedor de caché de salida personalizado.

Almacenamiento en caché en servicios WCF REST

En los servicios WCF REST, .NET Framework permite aprovechar el almacenamiento en caché de resultados declarativo que está disponible en ASP.NET. Esto permite almacenar en caché las respuestas de las operaciones del servicio WCF REST. Cuando un usuario envía una solicitud HTTP GET a un servicio que está configurado para el almacenamiento en caché, ASP.NET devuelve la respuesta almacenada en caché y no se llama al método del servicio. Cuando la memoria caché expira, la siguiente vez que un usuario envía una solicitud HTTP GET, se llama al método del servicio y la respuesta se vuelve a almacenar en caché.

.NET Framework también permite implementar almacenamiento en caché condicional de HTTP GET. En escenarios REST, los servicios suelen usar una operación condicional HTTP GET para implementar el almacenamiento en caché inteligente de HTTP descrito en la especificación HTTP. Para más información, vea Caching Support for WCF Web HTTP Services (Compatibilidad del almacenamiento en caché con servicios HTTP web WCF).

Extender el almacenamiento en caché en .NET Framework

El almacenamiento en caché en .NET Framework está diseñado para ser extensible. La clase ObjectCache permite crear una implementación de caché personalizada. Esta clase proporciona miembros que están disponibles para todas las aplicaciones administradas, como Windows Forms, Windows Presentation Foundation (WPF) y Windows Communications Foundation (WCF). Puede hacer esto para crear una clase de caché que use otro mecanismo de almacenamiento o si quiere un control detallado sobre las operaciones de la caché.

Para extender el almacenamiento en caché, puede hacer lo siguiente:

Para más información, consulte la entrada Almacenamiento en caché de resultados extensible con ASP.NET 4 (VS 2010 y serie .NET 4.0) del blog de Scott Guthrie.

Consulte también