La correcta definición y diseño de negocios, de dominio y de la vista de los modelos en un MVC aplicación en capas

StackOverflow https://stackoverflow.com/questions/9374746

Pregunta

Tengo una ASP.NET MVC3 en C# y la maquinilla de Afeitar.La arquitectura de la aplicación se divide en la Capa de Acceso a Datos (EF clases + Repositorio), Capa de Servicio, el Controlador, el Viewmodel y a la Vista.

Mi aplicación es un tablero de instrumentos, tiene que mostrar estadísticas acerca de los productos mediante el uso de gráficos.

Asumir que tengo Product y ProductCategory tablas y en un gráfico que tiene que mostrar el porcentaje de se vende Products por ProductCategory por Mes.En el eje de las x que tengo los meses, en el eje de las ordenadas el porcentaje ProductPerCategory/ProductTotal y por eso tengo tantas líneas como ProductCategories.

En este caso mi Modelo De Dominio es hecho por Product y ProductCategory los objetos en el EF.Mi repositorio da a estos los objetos de dominio a su capa superior (Capa de Servicio).

Mi Modelo De Negocio es hecha por el ProductGraph objeto y mi Capa De Servicio le da a este objeto de negocio a su capa superior (Controlador).

Mi controlador de tomar este ProductGraphobjeto y asignar a la Modelo De Vista ProductGraphViewModel para que se muestre en la vista.

Es esta distinción entre los modelos correcta?Es allí cualquier déficit o mal enfoque en la definición de los objetos que pasa entre las capas?

¿Fue útil?

Solución

Responderé a tu pregunta haciendo algunas propias.

  1. ¿Cuál es su distinción entre "modelo de dominio" y "modelo de negocio"? ¿Cada uno da más/menos valor que el otro? Sin saber más, asumiría que son lo mismo.

  2. ¿Qué beneficio da su capa de servicio? Las personas (incluido yo mismo) a menudo han caído en la trampa de "capa de servicio", cuando en realidad solo envuelve sus métodos de repositorio. Terminas filtrando detalles de Orm a consumir capas, derrotando el punto de tu abstracción en primer lugar.

Podría ayudar si nos da un código de flujo de ejemplo entre las capas.

Y sí, @Sweaver2112 es perfecto sobre el uso de DI. Configuración simple, beneficio máximo.

Otros consejos

Bueno, tienes los pulgares de mi laico, esto parece bastante estándar. Algunas otras cosas a considerar son: 1) ¿Está su capa de Dal/Servicio entrelazada? y 2) ¿Está utilizando la inyección de dependencia (pasando estas interfaces a la instanciación del controlador)? De esa manera, puede cambiar las implementaciones o burlarse de las pruebas unitarias fácilmente.

Este entrada en el blog podría ser de interés.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top