Hay una gran diferencia entre la capa de aplicación y la capa de presentación desde un punto de vista DDD.
Aunque DDD se centra en cómo modelar el dominio utilizando los bloques de construcción DDD y conceptos tales como contextos delimitados, lenguaje ubicuo y demás, sigue siendo vital identificar y separar claramente las diversas capas en su aplicación.
La arquitectura juega un papel importante en la implementación de una aplicación DDD exitosa. Una arquitectura famosa que ganó mucha expectación últimamente es la arquitectura de cebolla:
En este diseño, la capa de IU / Presentación y la capa de aplicación están claramente separadas. Fusionar los 2 juntos introduce un acoplamiento estrecho entre 2 capas que tienen claras preocupaciones y responsabilidades separadas.
La capa Presentación solo debe contener la lógica de presentación. Evite las IU inteligentes que saben demasiado. Esto alberga principalmente los Controladores y vistas del MVC, además de CSS, JS, plantillas, formularios y todo lo relacionado con los objetos de respuesta y solicitud.
Las acciones emitidas a través de la presentación se delegan a la capa de aplicación a través de comandos. La capa de aplicación contiene la lógica de la aplicación. Normalmente se asigna a un caso de uso. Contiene LO que el sistema debe hacer para satisfacer un caso de uso. Un servicio de aplicación típico le pedirá a un repositorio que devuelva un agregado y luego invocará una acción sobre ese agregado.
Eche un vistazo al proyecto de muestra del IDDD de Vaughn Vernon