作为高层次的设计维度,面向领域的策略设计同样涉及系统的体系架构。关于架构体系结构,各种架构风格和模式同样适用于领域驱动设计,但领域驱动设计在设计思想上有其独特的考虑,本节将针对领域驱动设计特有的架构风格展开讨论,包括架构的分层、事件驱动以及架构风格的组合。
1. 架构分层
(1)领域驱动设计核心组件
设计架构分层的前提是明确系统的核心组件,分层体现的就是对这些核心组件的层次和调用关系的梳理。在领域驱动设计中,一般认为存在以下四大组件:
领域组件。代表对整个领域驱动设计的核心,包含对领域、子域、界限上下文等策略设计相关内容,也包含后续所要阐述的所有技术设计组件。领域组件代表抽象模型,并不包含具体实现细节和技术。
基础设施(Infrastructure)组件。这里的基础设施组件范围比较广泛,即可以包括通用的工具类服务,也包括数据持久化等具体的技术实现方式。领域组件中的部分抽象接口需要通过基础设施提供的服务得以实现,所以基础设施组件对领域组件存在依赖关系。
应用组件(Application)。应用组件面向用户接口组件,是系统对领域组件的一种简单封装,通常作为一种门户(Facade)或网关(Gateway)对外提供统一访问入口,在用户接口和领域之间起到衔接作用。同时,因为基础设施组件是对领域组件部分抽象接口的具体实现,所以应用组件也会使用基础设施组件的服务完成具体操作。
用户接口(User Interface)组件。用户接口处于系统的顶层,直接面向前端应用,调用应用组件提供的应用级别入口完成用户操作。
显然,对领域驱动相关的核心组件划分以及各