2012-05-25 16 views
5

Cuando necesito almacenar algo en mi aplicación, solía elegir Web.Caching.Cache. Pero me encontré con algún código heredado que usaba HttpApplicationState.Cuándo usar HttpApplicationState en lugar de Web.Caching.Cache?

Dado que Web.Caching.Cache es más potente y flexible (parece MUCHO más), ¿hay alguna situación que sea mejor utilizar HttpApplicationState?

que estará muy aprecian si usted me puede mostrar algunos ejemplos :-)

+0

Nunca uso ApplicationState. Creo que es más para el código heredado (días anteriores de ASP) – TGH

+0

@TGH http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx aún en el hombre 4.0 – rhapsodyn

+0

Sí, supongo que todavía está allí, pero no puedo recordar el momento en que consideré usarlo. Supongo que la única ventaja que se me ocurre es que nunca expira ... – TGH

Respuesta

13

Tanto HttpApplicationState y Web.Caching.Cache se puede utilizar para almacenar información que puede ser el acceso a nivel mundial a lo largo de una aplicación ASP.Net. Sin embargo, tienen usos muy diferentes.

HttpApplicationState se utiliza para almacenar datos de aplicaciones que normalmente no cambian. Normalmente se rellena en Application_Start en global.asax, cuando se inicia la aplicación. Personalmente, no lo he usado mucho, pero creo que normalmente se usa para almacenar pequeñas piezas de configuración de aplicaciones que son globales para todos los usuarios de una aplicación y que no cambian o cambian con muy poca frecuencia. Algo puesto en estado de Aplicación permanecerá allí indefinidamente, hasta que la aplicación se recicle. Pero cuando se recicla y se reinicia de nuevo, Application_State se ejecutará nuevamente y volverá a poblarlo.

Es importante tener en cuenta que Application State es un singleton y no es seguro para subprocesos. Por lo tanto, cuando realice cambios en él, debe bloquear y desbloquear el objeto Aplicación mediante llamadas a Application.Lock() y Application.UnLock().

En realidad, existen tres formas diferentes de almacenar en caché contenido de ASP.Net: Nivel de página, página parcial y datos. Voy a hablar sobre el almacenamiento en caché de datos, ya que creo que es más relevante para su pregunta. El caché ASP.Net se utiliza para almacenar grandes cantidades de datos de aplicación que sería costoso recuperar de un almacén de datos para cada solicitud. Las diferencias clave entre ApplicationState y Cache son 1) Los datos de caché están diseñados para caducar y purgarse de la memoria por una variedad de desencadenantes o condiciones (tiempo, otras dependencias de caché, etc.), mientras que ApplicationState estará allí para siempre hasta que la aplicación se recicla, y 2) los datos de caché se pueden purgar de la memoria si un servidor está experimentando una presión de memoria severa, y usted nunca puede contar con que esté allí y siempre debe probar para ver si está presente, mientras que ApplicationState siempre estará allí.

El almacenamiento en caché se utiliza para almacenar datos más cercanos a la aplicación que no necesitan extraerse de una base de datos en cada solicitud. El almacenamiento en caché está diseñado para almacenar grandes cantidades de datos, y una arquitectura de almacenamiento en caché inteligente puede tener un enorme impacto positivo en el rendimiento.

+0

Ahora estoy bastante seguro de que podría usar Cache en lugar de HttpApplicationState, gracias a ti – rhapsodyn

+5

Si estás utilizando .NET 4.0 o superior, puedes use System.Runtime.Caching.MemoryCache en un proyecto ASP.NET o .NET. http://msdn.microsoft.com/en-us/library/dd997357.aspx – bounav

Cuestiones relacionadas