He estado usando ASP.net MVC durante aproximadamente dos años y todavía estoy aprendiendo la mejor manera de estructurar una aplicación.consejos sobre la arquitectura de aplicaciones asp.net mvc
Quería descartar estas ideas que he reunido y ver si son formas "aceptables" en la comunidad para diseñar aplicaciones MVC.
Aquí está mi diseño básico:
DataAccess Proyecto - Contiene todas las clases de repositorios, los contextos de datos LINQ a SQL, filtros y objetos de negocio personalizadas para repositorios que no sea MS SQL db (que LINQ-to-SQL no crea). Los repositorios generalmente solo tienen CRUD básico para el objeto que están administrando.
Proyecto de servicio - Contiene clases de servicio que realizan la lógica empresarial. Toman órdenes de los Controladores y le dicen a los repositorios qué hacer.
UI Project - Contiene modelos de vista y algunas envolturas sobre cosas como el ConfigurationManager (para pruebas unitarias).
Main MVC Project - Contiene controladores y vistas, junto con javascript y css.
que sí parece esto como una buena manera de estructurar las aplicaciones ASP.NET MVC 2? ¿Alguna otra idea o sugerencia?
¿Se utilizan los modelos de vista para todos los resultados de las vistas y las entradas de las vistas?
Me inclino por el camino de hacer modelos de vista para cada objeto comercial que necesita mostrar datos en la vista y convertirlos en clases básicas con un conjunto de propiedades que son todas cadenas. Esto hace que tratar con las vistas sea bastante fácil. La capa de servicio necesita administrar las propiedades de mapeo del modelo de vista al objeto de negocio. Esta es una fuente de confusión porque la mayoría de los ejemplos que he visto en MVC/MVC2 no usan un modelo de vista a menos que necesite algo como un cuadro combinado.
Si usa la nueva validación del modelo de MVC 2, ¿validaría el objeto viewmodel y no tendría que preocuparse por poner los atributos de validación en los objetos comerciales?
¿Cómo se prueba unitariamente este tipo de validación o no debo probar por unidad que se devuelvan los mensajes de validación?
Gracias!
Suena un poco exagerado. Además, ¿no tiene la intención de usar áreas por proyecto? Además, parece un buen candidato para un Wiki de la comunidad. :) – bzlm
A menos que esté planeando usar sus proyectos individuales en otras aplicaciones, o la aplicación va a ser muy grande, debería estar bien con un solo proyecto. –
@bzlm: Al principio pensé lo mismo sobre áreas, pero las áreas MVC no son lo mismo de lo que él está hablando; sus proyectos son simplemente contenedores arbitrarios para sus niveles de software. –