Estoy a punto de comenzar a desarrollar una aplicación ASP.Net MVC de tamaño mediano. Estoy tratando de obtener el diseño correcto. Tengo la intención de tener las siguientes capas:ASP.NET MVC: ¿Qué pasa donde?
- capa de interfaz de usuario (MVC)
- servicio de capa
- capa de repositorio de capa
- de acceso a datos
Me va a utilizar la unidad como mi contenedor COI y EF4.1 Code First para acceso a datos.
La aplicación se dividirá en varios conjuntos. Tengo un problema de decidir qué asambleas necesitaré y dónde colocar el siguiente:
- Entidades/objetos de dominio, por ejemplo, Cliente, Factura
- DTOs v.g. CustomerDTO, InvoiceDTO
- Interfaces de servicio, p. ICustomerService
- Interfaces de repositorio, p. ICustomerRepository
- Servicios (clases de implementación de la interfaz de servicio) p. CustomerService
- Repositorios (clases de implementación del servicio de depósito) p. CustomerRepository
- ViewModels, p. CustomerViewModel
- enumeraciones
Mi pregunta es: ¿Cómo se suele dividir la suya y por qué?
Editar: provocado por la respuesta de @ TheHurt.
¿Cómo serían las referencias entre los conjuntos, es decir, qué ensamblaje estaría haciendo referencia a cuál?
¿Necesita DTOs? ¿Por qué no puedes usar las POCOs de EFCF? – TheHurt
@TheHurt: no necesito DTO para todas las entidades, pero para algunos, lo que necesitan las vistas es muy diferente de lo que realmente se guarda en la base de datos. – Ben
Creo que las DTO siguen siendo útiles ya que a veces solo quieres pasar un puñado de propiedades. No me gusta pasar entidades que solo tengan un par de propiedades configuradas (y todo lo demás está configurado por defecto()) ya que puede ser un poco peligroso. –