前言
领域驱动设计(Domain-driven design,DDD)是一种为复杂需求开发软件的方法,它将软件的实现与不断发展的核心业务概念模型紧密地结合在一起。
领域是一个知识的范畴。它指的是我们的软件所要模拟的业务知识。领域驱动设计的中心是领域模型,它对一个领域的流程和规则有着深刻的理解。洋葱架构实现了这一概念,并极大地改善了代码的品质,降低了复杂性,并且支持不断发展的企业系统。
为什么要用洋葱架构?
领域实体是核心和中心部分。洋葱架构是建立在一个领域模型上的,其中各层是通过接口连接的。其背后的思想是,在领域实体和业务规则构成架构的核心部分时,尽可能将外部依赖性保持在外。
-
它提供了灵活、可持续和可移植的架构。
-
各层之间没有紧密的耦合,并且有关注点的分离。
-
由于所有的代码都依赖于更深的层或者中心,所以提供了更好的可维护性。
-
提高了整体代码的可测试性,因为单元测试可以为单独的层创建,而不会影响到其他的模块。
-
框架/技术可以很容易地改变而不影响核心领域。例如,RabbitMQ 可以被 ActiveMQ 取代,SQL 可以被 MongoDB 取代。
原则
洋葱架构是由多个同心层构成,它们相互连接,并朝向代表领域的核心。它是基于控制反转(Inversion of Control,IoC)的原则。该架构并不关注底层