2009-01-24 15 views
5

Vengo del mundo LAMP, donde prevalece la mentalidad de "almacenar todo en caché". Todo está puesto en Memcache.¿Cómo diseñar un sitio ASP.NET MVC para el almacenamiento en caché con Velocity?

Estoy comenzando un nuevo proyecto con ASP.NET MVC y SQL Server. Probablemente vaya con LINQ to SQL o tal vez Entity Framework. ¿Hay alguna decisión de diseño que deba tomar ahora para el almacenamiento en caché, o es bastante fácil comenzar a usar Velocity si es necesario? Para ser claros, estoy hablando de la memoria caché Velocity de Microsoft y no del motor de plantillas de Apache Velocity.

Espero que pueda ignorar el almacenamiento en caché por el momento, porque aprender C#, ASP.NET MVC, LINQ, IIS, SQL Server y volverme competente en VS mantendré mi plato lleno.

Respuesta

1

@dswatic: Muchas gracias. Parece que puedo agregar el almacenamiento en caché más adelante con un mínimo de dolor. Aquí hay una advertencia importante de ese sitio:

"Si usa Object Relational Designer para generar sus clases LINQ to SQL, entonces sus clases LINQ to SQL no serán serializables. Para evitar este problema, construí mi LINQ para Clases de SQL a mano. "

Solo los objetos serializables se pueden almacenar en caché con Velocity.

Gracias de nuevo.

+0

Aquí es una gran biblioteca de alguien escribió para serializar LINQ http://69.10.233.10/KB/linq/linqsqlserialization.aspx advertencia justa Sin embargo si se utiliza Let o perezoso cargando las características de Linq esto no puede ser serializado. – dswatik

3

dswatik proporciona un excelente enlace sobre cómo usarlo.

Sugiero que agregue esta funcionalidad en algún lugar de su capa de Repositorio/Servicio para quitar la carga de la aplicación y mantenerse dentro del principio DRY.

1

La respuesta seleccionada es para Velocity CTP1. Aquí está el enlace de MSDN para el último Velocity Programming Guide.

En cuanto a su otra pregunta sobre las decisiones de diseño, la sugerencia de Chad Moran de poner la responsabilidad en la capa de repositorio es excelente. Entonces, me gustaría ver la adición de soporte para el almacenamiento en caché de LINQ utilizando una técnica similar a la descrita aquí: http://petemontgomery.wordpress.com/2008/08/07/caching-the-results-of-linq-queries/

Usted, obviamente, tiene que escribir una aplicación que utiliza la velocidad en lugar de la memoria caché de ASP.NET ... pero en realidad , a menos que tengas estadísticas para demostrar que necesitas algo como Velocity, probablemente puedas quedarte con el caché regular hasta que se convierta en un problema. Si escucha algunas de las charlas que Joel Spolsky ha dado sobre stackoverflow, encontrará que dos cajas (una con iis y la otra con servidor sql) pueden manejar un muy de alto volumen.

Cuestiones relacionadas