c# java architecture domain-driven-design onion-architecture

c# - ¿Cuál es la relación entre DDD y la "Arquitectura de cebolla"?



java architecture (2)

¿Cuál es la relación entre el diseño impulsado por el dominio (DDD) y " The Onion Architecture " de Jeffrey Palermo?


En mi opinión, se complementan entre sí, pero desde perspectivas muy diferentes.

Onion Architecture tiene que ver con hacer que Domain / BusinessLogic sea independiente en cosas ''inferiores'' como acceso de datos, interfaz de usuario, servicios, etc. La arquitectura de cebolla en realidad no le importa cómo se creó el dominio que tiene; es inflexible en cuanto a protegerlo de dependencias externas .

El Diseño Dirigido por Dominio se trata de cómo modelas tu Dominio y lo que llamas tus objetos. Lo que significa que cada clase de dominio debe tener una relación directa con lo que representa en el dominio comercial al que se dirige (es decir, el mundo físico / real). Por lo tanto, un objeto Cliente debe ser nombrado Cliente en el código: debe tener las mismas reglas que un Cliente en el mundo real (o lo más cerca posible).


Si observa la imagen que describe la arquitectura de cebolla en el enlace que proporcionó, la capa de modelo de dominio es en lo que se enfoca DDD.

La cebolla es un patrón arquitectónico para un sistema, mientras que DDD es una forma de diseñar un subconjunto de objetos en el sistema. Los dos pueden existir juntos, por lo que ninguno de los dos es un subconjunto del otro. Si tuviera que usarlos juntos, entonces, como un todo, la parte que está diseñada con DDD sería un subconjunto de todo el sistema.

Para usar una analogía (probablemente mala): la cebolla es un patrón para diseñar una casa, y la DDD es una forma de moler la madera que es parte de la casa.