Pregunta

Sé que es una pregunta muy similar aquí pero yo tenía la esperanza de obtener una mejor explination. Por qué iba a utilizar nunca HttpContext.Cache en lugar de HttpRuntime.Cache si el HttpContext utiliza realmente el HttpRuntime.Cache detrás de las escenas?

En el artículo Simular un servicio de Windows usando ASP.NET para ejecutar los trabajos programados Omar utiliza el HttpContext para almacenar sus elementos de caché, pero cuando Jeff Atwood puesto en práctica aquí optó por utilizar el HttpRuntime lugar. Obviamente en esta situación particular que tiene sentido desde ya que no tiene que hacer una petición web para añadir el elemento de la caché de nuevo en el HttpContext.

Sin embargo, yo estoy buscando unos puntos básicos en cuanto a cuándo utilizar uno contra el otro.

¿Fue útil?

Solución

Realmente es el mismo caché al final, sólo HttpContext.Current veces puede ser nula (cuando no en un contexto web, o en un contexto web, pero aún no construido). Usted sería seguro de usar siempre HttpRuntime.Cache.

Otros consejos

Cuando estás en una página web normal, se puede utilizar con seguridad HttpContext.Cache o simplemente la propiedad Cache de la página.

Si usted está haciendo algo que no está en una página, a menudo es necesario utilizar HttpRuntime.Cache para obtener de forma segura el acceso a la misma.

En algunos casos se puede saber si hay un contexto http o no, por ejemplo si se inicia un hilo separado desde una página web, que el hilo no tiene contexto http. En otros casos puede que tenga un contexto http veces, como en el método Application_Start en global.asax, ya que la aplicación no siempre se puede iniciar porque hay una solicitud.

Me resulta engañosa también, aunque todos sabemos que sólo devuelve HttpRuntime.Cache internamente. También el tipo de HttpRuntime es una mala elección para exponer la caché supongo.

Todo el mundo sais cómo es Session caché de nivel de sesión y la caché que estamos hablando es de aplicación a nivel. Yo preferiría haber Application.Cache como el caché que estamos utilizando hoy y HttpContext.Cache para referirse a lo que se conoce como HttpContext.Items.

En cuanto a responder a su pregunta, creo que todos debemos ceñirnos a la HttpRuntime.Cache hacer nuestro código más claro aún si tenemos diferentes maneras de acceder a él. Y cuando realmente el plan de utilizarlo es mejor que envolver su propia API y tienen que internamente llama a la HttpRuntime's o cualquier otra aplicación de caché (EntLib, velocidad, etc ...).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top