Almacenamiento en caché en aplicaciones .NET Framework
El almacenamiento en caché permite almacenar los datos en memoria para poder acceder a ellos rápidamente. Cuando se tiene acceso de nuevo a los datos, las aplicaciones pueden obtener los datos de la memoria caché en lugar de recuperarlos del origen inicial. Esto puede mejorar el rendimiento y la escalabilidad. Además, con el almacenamiento en caché, los datos siguen estando disponibles si el origen de datos temporalmente no lo está.
.NET Framework proporciona funcionalidad de almacenamiento en caché que puede usar para mejorar el rendimiento y la escalabilidad de las aplicaciones cliente y servidor de Windows, incluido ASP.NET.
Nota |
---|
En .NET Framework 3.5 y en 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, necesitaba una dependencia en las clases de ASP.NET.En .NET Framework 4, el espacio de nombres System.Runtime.Caching contiene las API diseñadas tanto para las aplicaciones web como para las no web. |
Almacenar datos en caché
Puede almacenar información en caché usando clases del espacio de nombres System.Runtime.Caching. Las clases de almacenamiento en caché de este espacio de nombres proporcionan las características siguientes:
Tipos abstractos que proporcionan la base para crear implementaciones personalizadas de caché.
Una implementación concreta de la caché de objetos en memoria.
La clase base abstracta de almacenamiento en caché (ObjectCache) define las tareas de almacenamiento en caché siguientes:
Crear y administrar entradas de caché.
Especificar la información de expiración y de expulsión.
Desencadenar eventos que se generan como 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 modela sobre el objeto de caché de ASP.NET que se define en el espacio de nombres System.Web.Caching.Por tanto, la lógica interna de almacenamiento en caché es similar a la que se proporcionaba en versiones anteriores de ASP.NET. |
Para obtener un ejemplo de cómo usar el almacenamiento en caché en una aplicación WPF, vea Tutorial: Almacenar en caché datos de la aplicación en una aplicación de WPF.
Almacenamiento en caché en 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 su aplicación tiene como destino .NET Framework 3.5 o una versión anterior, debe usar las clases de almacenamiento en caché que se definen en el espacio de nombres System.Web.Caching.Para obtener más información, vea Información general sobre el almacenamiento en caché en ASP.NET. |
Nota |
---|
Al desarrollar aplicaciones nuevas, se recomienda usar la clase MemoryCache.La API proporcionada en el espacio de nombres System.Runtime.Caching es como la API proporcionada en el espacio de nombres Cache.Por tanto, la API le resultará familiar si usó el almacenamiento en caché en versiones anteriores de ASP.NET.Para obtener un ejemplo de cómo usar el almacenamiento en caché en aplicaciones ASP.NET, vea Tutorial: Almacenar en caché datos de la aplicación en ASP.NET. |
Almacenar resultados en la memoria caché
Para almacenar en caché manualmente los datos de la aplicación, puede usar la clase MemoryCache de ASP.NET. ASP.NET también admite el almacenamiento en caché de resultados, que almacena en memoria el resultado generado de las páginas, los controles y las respuestas HTTP. Puede configurar el almacenamiento en caché de resultados mediante declaración en una página web ASP.NET o usando configuraciones del archivo web.config. Para obtener más información, vea Elemento outputCache para el almacenamiento en caché (Esquema de configuración de ASP.NET).
ASP.NET le permite extender almacenamiento en caché de resultados creando proveedores personalizados de caché de resultados. Al usar proveedores personalizados, puede almacenar el contenido almacenado en caché usando otros dispositivos de almacenamiento como discos, almacenamiento en la nube y motores de caché distribuidos. Para crear un proveedor personalizado de caché de resultados, debe crear una clase que se derive de la clase OutputCacheProvider y configurar la aplicación para que use el proveedor personalizado de caché de resultados.
Almacenar en caché servicios REST de WCF
Para los servicios REST de WCF, .NET Framework permite aprovechar el almacenamiento en caché de resultados declarativo disponible en ASP.NET. Esto le permite almacenar en caché las respuestas de las operaciones de servicios REST de WCF. Cuando un usuario envía una solicitud GET HTTP 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. Después de que expira la memoria caché, la próxima vez que un usuario envía una solicitud GET HTTP, se llama a su método de servicio y la respuesta se almacena en caché de nuevo.
.NET Framework también permite implementar el almacenamiento en caché condicional de solicitudes GET HTTP. En escenarios REST, los servicios suelen usar una solicitud GET HTTP condicional para implementar el almacenamiento en caché HTTP inteligente como se describe en Hypertext Transfer Protocol -- HTTP/1.1. Para obtener más información, vea Soporte de almacenamiento en memoria caché para servicios web HTTP de WCF.
Extender el almacenamiento en caché en .NET Framework
El almacenamiento en caché de .NET Framework está diseñado para ser extensible. La clase ObjectCache le permite crear una implementación personalizada de la memoria caché. Esta clase proporciona miembros que están disponibles para todas las aplicaciones administradas, incluido Windows Forms, Windows Presentation Foundation (WPF) y Windows Communications Foundation (WCF). Puede hacerlo para crear una clase de caché que use otro mecanismo de almacenamiento diferente o si desea tener un control específico sobre las operaciones de caché.
Para extender el almacenamiento en caché puede hacer lo siguiente:
Crear una clase personalizada que se derive de la clase ObjectCache y, a continuación, proporcionar una implementación personalizada de caché en la clase derivada.
Crear una clase que se derive de la clase MemoryCache y personalizar o extender la clase derivada. Para obtener un ejemplo de cómo hacerlo, vea la entrada Caching Application Data by Using Multiple Cache Objects in an ASP.NET Application.
Crear una clase que se derive de la clase OutputCacheProvider y configurar la aplicación para que use el proveedor personalizado de caché de resultados.
Para obtener más información, vea la entrada Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET 4.0 Series) en el blog de Scott Guthrie.
Vea también
Tareas
Tutorial: Almacenar en caché datos de la aplicación en una aplicación de WPF
Referencia
Otros recursos
Tutorial: Almacenar en caché datos de la aplicación en ASP.NET