DDD
(Domain Driven Design)
DDD为设计模型思想:
就是把一个复杂的软件应用系统的其中各个部分进行很好的拆解和封装,以达到高内聚低耦合的效果。
DDD分层架构各层职能:
展现层:
展现层负责向用户显示信息和解释用户指令。
应用层:
应用层是很薄的一层,主要面向用户用例操作,协调和指挥领域对象来完成业务逻辑。应用层也是与其他系统的应用层进行交互的必要渠道。应用层服务尽量简单,它不包含业务规则或知识,只为下一层的领域对象协调任务,使它们互相协作。应用层还可进行安全认证、权限校验、分布式和持久化事务控制或向外部应用发送基于事件的消息等。
领域层:
领域层是软件的核心所在,它实现全部业务逻辑并且通过各种校验手段保证业务正确性。它包含业务所涉及的领域对象(实体、值对象)、领域服务以及它们之间的关系。它负责表达业务概念、业务状态以及业务规则,具体表现形式就是领域模型。
基础层:
基础层为各层提供通用的技术能力,包括:为应用层传递消息、提供 API 管理,为领域层提供数据库持久化机制等。它还能通过技术框架来支持各层之间的交互。
CQRS 设计模型
将数据库操作与数据库查询进行分割
1.单个数据库分为命令模块和查询模块
2.双数据库是分为读和写,命令端使用针对写操作优化的数据库,查询端使用针对读取操作优化的数据库。
3.事件源CQRS:将实体发生的每一个状态作为快照来存储,实体并不是以标准化数据的形式保存,而是遇到时间的时间戳来保存它们的变更。当命令端系统完成数据更新操作后,会通过领域事件的方式通知查询系统,查询系统在接受到事件之后更新自己的数据源,所有的查询操作都通过查询系统暴露的接口完成。