Arquitectura DDD en una aplicación web MVC

7

Estoy armando una aplicación web que usa DDD, pero me estoy esforzando por colocar el modelo DDD del libro de texto en una aplicación MVC del mundo real.

Actualmente tengo estas capas:

Controladores > ViewModelsBuilders > Servicios de dominio > Agregados, API remotos y repositorios

  • Controladores
    Los resultados de la acción necesitan un modelo de vista
  • ViewModelsBuilder
    Estos construyen el modelo de vista necesario a partir de un conjunto de Servicios de Dominio.
  • Servicios de dominio
    Estos son el punto de entrada a mi dominio y usan agregados (para lógica de dominio compleja) que pasan datos de las API remotas y los repositorios.
  • Agregados y entidades
    Todos estos están limitados al alcance del ensamblaje y contienen la lógica de negocios

Preguntas:

  1. ¿Es esta la estructura correcta? ¿Deben ser los servicios de dominio o los constructores de modelos de vista que reúnen todo?
  2. ¿Los objetos devueltos por los Servicios de Dominio deben ser simples DTO o las entidades reales, ocultando los métodos con niveles de acceso?
  3. ¿Deben los servicios de dominio ser el controlador de acceso o los constructores del modelo de vista deben acceder a la raíz agregada, a los repositorios, etc.?
pregunta John 09.06.2015 - 21:20

1 respuesta

5

El enfoque que he usado en el pasado que se puede aplicar en MVC & Los proyectos WebAPI siguen:

  • Punto final (controladores, ApiController) devuelve ViewModels (DTOs)
  • Capa de negocios / Capa de aplicación / Servicio de dominio: devolver datos de la aplicación
  • Capa de acceso a datos - Patrón de repositorio: devuelve entidades de modelo de base de datos

Cada capa es responsable de sus propios datos.

    
respondido por el Haroon 21.06.2015 - 23:50

Lea otras preguntas en las etiquetas