2009-08-03 6 views
9

Tengo una pregunta sobre el almacenamiento en caché. Tengo una aplicación web ASP.NET típica de n niveles. He creado un contenedor de caché personalizado (envolviendo el objeto de caché ASP.NET) y me gustaría conocer las mejores prácticas de almacenamiento en caché de datos. No quiero utilizar el almacenamiento en caché en mi capa de negocios (no quiero agregar ninguna referencia a System.Web dll allí). Mismo caso con DAL. Por lo que las únicas opciones que quedan son:Mejores prácticas con respecto al almacenamiento en caché en aplicaciones ASP.NET

  1. caché todo en la capa de interfaz de usuario
  2. Crear una capa de caché entre IU y BL (no sé qué tan factible es que?)

También he oído acerca de la próximo marco de caché de Velocity, pero supongo que podría ser una exageración (ya que mi aplicación no necesitará una granja de servidores web/clúster).

Puedo estar terriblemente mal en mis enfoques, por lo que agradecería cualquier sugerencia o enfoque alternativo sobre cómo caché de manera eficiente en mis proyectos web.

Respuesta

10

La capa entre su IU y BLL sería una capa de Servicios, que es un buen lugar para el almacenamiento en caché. Use un gestor de caché abstraído (example on my blog) para poder intercambiar proveedores (caché ASP.NET, velocidad, memcached, lo que sea) cuando sea necesario.

+0

Me gusta el ejemplo en su blog, gran uso de interfaces. – Rutger

+0

Hicimos lo mismo y hemos hecho la migración de la caché de ASP.Net a Memcache. La forma en que la capa de caché en ASP.Net NO es nativamente conectable es un misterio para mí. – jro

+0

Será en ASP.NET 4 –

1

A veces también vale la pena considerar para qué sirve el propósito de los datos en caché? Si finalmente va a generar HTML estático en la capa de la interfaz de usuario, envolver estas partes en un control de usuario y agregar una directiva @OutputCache puede ser la forma más eficiente (al usar formularios web, al menos). Es fácil olvidar esto, a veces, cuando te empantanas en los marcos de almacenamiento en caché, etc. Por supuesto que aprecio que esto puede no ser adecuado o la mejor práctica en muchos casos.

+0

Básicamente quiero almacenar en caché los datos provenientes de la base de datos (o en corto caché mis objetos comerciales/colecciones). – Raghav

Cuestiones relacionadas