DDD四层架构
1、用户接口层:负责用户显示信息和接受用户的指令,包含:用户、程序、自动化测试、批处理等
2、应用层:理论上不应该有业务规则或逻辑,主要面向用例和流程相关的操作,由于领域层之上,所以包含了多个聚合,可以协调多个聚合服务和领域对象完成服务编排和组合。负责处理业务用例的执行顺序和结果的拼装,例如:安全认证,权限校验,事务控制,发送或者订阅领域事件
3、领域层:领域层主要体现领域模型的业务能力,用来表达业务概念,业务状态和业务规则。
4、基础层:贯穿所有层,采用依赖倒置设计为其他层提供通用的技术和基础服务,包括:工具,驱动,消息中间件,网关,文件,数据库持久化。
原则
每层只能与其下方的层发生耦合
微服务架构的演进
以聚合为基础单元,完成领域模型和微服务的架构演进,聚合可以作为一个整体,在不同的领域模型之间重组或拆分,或者直接把一个聚合独立为一个微服务。
架构模型分类
1、整洁架构
最外用户层 -> 应用服务层 -> 领域服务层 -> 领域模型
2、六边形架构
通过接口与外部进行交互的
最外层用户 -> 适配器 -> 应用层 ->领域服务层
3、与DDD四层架构比较
原则都是高内聚,低耦合。
3.1大致上都分了两层
- 领域层实现面向领域模型,实现领域模型的核心业务逻辑,属于原子模型,需要保持领域模型和业务逻辑的稳定,对外提供稳定的相对细颗粒度的领域服务。
- 应用层实现面向用户的相关用例和流程。对外提供粗粒度的API服务。对前台应用和领域层进行适配,接受前台请求,可随时做出响应和调整。
3.2合理分层的优势
- 不要把领域无关的逻辑放在领域层实现,保证领域层的纯洁稳定
- 也不要把领域层的逻辑放在应用层,会导致应用层过于庞大,最终导致领域模型失焦
- 若不能保证上述两点,则可引入防腐层,进行新老系统的适配和转换,过渡完成后,废弃防腐层代码
- 通过分层的方式来控制需求的变化从外到里对系统的影响,收到的需求的影响会越来越小,面对用户端可以快速在应用层调整,对服务和聚合进行组合和编排达到快速适配的效果。