-
目录 概念介绍 领域驱动设计(DDD) 面向数据表设计 领域驱动设计优点 设计承接分层架构对比
-
概念介绍
- 领域驱动设计是一种设计思想,在落地时主要使用四层架构承接
- 面向数据表设计,一般使用三层架构承接,但是也可以使用四层架构承接
-
领域驱动设计(DDD)
- DDD 是一种在面向高度复杂的软件系统时,关于如何去建模的方法论。
- DDD解决了什么问题?
- DDD解决了对复杂应用建模的问题,通过DDD提高架构和代码的可理解性,从而降低维护成本。
- 适用场景
- DDD 适用于复杂业务建模以及业务场景不确定的任务 。
- 对于业务场景确定或者,业务场景简单的系统,面向数据库设计更适合。
-
面向数据表设计
- 在面向数据表设计中,系统的开发主要集中于数据表的设计,包括字段的设计以及表关系的设计。
- 数据集中存储在不同的数据表中,数据表的设计需要符合各种范式和标准。
- 业务逻辑通过一系列针对这些数据表的增删改查来实现。
- 承接面向数据表设计的分层架构
- 三层架构
- User Interface layer(表示层, UI) 接受对用户的请求并返回数据,将结果呈现给用户。
- Business Logic Layer(业务逻辑层, BLL) 主要负责接受表现层的请求,进行各种业务逻辑运算,然后通过数据访问层完成数据的操作。
- Data Access Layer(数据访问层, DAL) 主要负责数据的查询、持久化等操作,关注数据一致性、准确性,不关注业务逻辑
- 四层架构
- User Interface(用户接口层)
- 职责:
- 负责向用户显示信息、解释用户命令。这里的用户可以是真正的用户、自动化测试程序、批处理脚本等。
- Application Layer(应用层)
- 特别注意:
- 不要将领域层的逻辑放在应用层中实现,否则很容易导致应用层、领域层的边界混乱,最终导致DDD的四层架构变成三层架构。
- Domain Layer(领域层)
- 主要职能:
- 实现领域对象或者聚合自身的原子业务逻辑,关注领域模型的能力,不太关注外部用户操作或者流程方面的控制。
- Infrastructure Layer(基础设施层)
- 主要作用
- 封装基础资源的服务,实现应用层、领域层、基础层解耦,降低对外部资源依赖。例如:如果没有此层,当消息中间件、缓存变化时,将会大面积修改业务逻辑。
-
领域驱动设计优点
- 例子
- 领域驱动设计的处理流程
- 优点
- 快速定位新增需求对应的领域对象,映射到对应的数据模型
-
设计承接分层架构对比
- 三层架构vs四层架构
- 区别:
- 三层架构:
- 三层架构的业务处理都放在Service层,所有的Service对象都处在同一个逻辑层级,Service对象即负责领域内逻辑,又负责领域间协调(此处的领域泛指业务边界)。Service层的内部是一张网。
- 四层架构:
- 四层架构将领域间协调和领域内逻辑处理分开成两层,分别用application Service和domin service处理,这样使得整个业务处理层(application service + domain service )变成了一个树形结构。
- 在所有的数据结构中,树形结构是在能够承载比较多信息量的同时,逻辑结构最简单的数据结构。
|