2011-11-11 15 views
25

Soy un principiante en asp.net, y tienen unos cuantos cuestión de la caché:¿Debo usar HttpRuntime.Cache?

  1. HttpRuntime.Cache sólo proporciona métodos severals y creo que soy capaz de poner en práctica estos métodos con diccionario sola.
  2. Si HttpRuntime.Cache es mucho mejor que Dictionary, por qué a algunas personas les gustaría implementar su propio marco de caché.
  3. ¿Qué hay de MS Enterprise Cache Block?

Respuesta

72

HttpRuntime.Cache sólo proporciona métodos severals y creo que soy capaz para poner en práctica estos métodos con diccionario sola.

Piensas mal. HttpRuntime.Cache es mucho más que un simple diccionario. Ofrece políticas de seguridad de subprocesos y caducidad de caché. Proporciona la posibilidad de utilizar una implementación personalizada y beneficiarse del almacenamiento en caché distribuido, que es útil en granjas web. Implementar esto con diccionarios podría ser un montón de trabajo en el que probablemente no quieras aventurarte ya que básicamente reinventarás las ruedas e incluso si reinventar las ruedas no te molesta, las posibilidades de hacerlo bien son escasas.

2) Si HttpRuntime.Cache es mucho mejor que un diccionario, por qué algunas personas les gustaría para implementar su propio marco caché.

La gente no querría hacer eso.

3) ¿Qué hay de MS Enterprise Cache Block?

Es una artillería pesada que no siempre es necesaria cuando se necesita un simple almacenamiento en caché que se puede lograr con lo que el marco ya le proporciona de fábrica.

Observación: En .NET 4.0 debe utilizar el nuevo espacio de nombres System.Runtime.Caching en lugar de HttpRuntime.Cache.

Así que para responder a su pregunta: Should I use HttpRuntime.Cache

Sí, a menos que esté utilizando .NET 4.0, en cuyo caso se debe utilizar las clases de la nueva System.Runtime.Caching espacio de nombres.

+0

Gracias por su maravillosa respuesta. Tengo otra pregunta: he visto a algunas personas usar HttpRuntime.Cache en una aplicación no web como Console, creo que es un poco extraño. ¿Alguna vez viste eso? –

+2

@ Domi.Zhang, sí, he visto eso. Funciona pero requiere una dependencia del ensamblado System.Web. Esa es la razón por la cual Microsoft decidió externalizar el almacenamiento en caché en un ensamblado separado en .NET 4.0. –

+0

Darin, ¿Qué pasa si quiero los tiempos de caducidad como en Httpruntime cache? No pude encontrarlo en System.Runtime.Caching –