DDD战略设计相关核心概念梳理与理解.docx
《DDD战略设计相关核心概念梳理与理解.docx》由会员分享,可在线阅读,更多相关《DDD战略设计相关核心概念梳理与理解.docx(8页珍藏版)》请在优知文库上搜索。
1、DDD核心概念梳理DDD是什么,DDD的英文全称是Domain-DrivenDesign,翻译过来就是领域驱动设计。这种设计一般是用在微服务的系统中,当我们聊微服务的时候,争论最多的就是如何进行微服务的拆分,这也是最让人产生争议的地方。当我们聊微服务也必然会会聊到中台,中台又是什么呢?中台中台从2015年提出,就已经被我们熟知,但是每个人对中台的认识可能都千差万别,有没有一个大家都比较认可的定义呢?将通用的可复用的业务能力沉淀到中台业务模型,实现企业级能力复用。因此中台面临的首要问题就是中台领域模型的重构。而中台落地时,依然会面临微服务设计和拆分的问题。微服务:中台落地时需要用微服务进行支撑。
2、中台:复用业务,实现企业级能力复用。DDD:对中台进行领域建模,实现适合企业发展的中台。DDD可以说是微服务和中台的产品经理。我们去写业务功能时,是面向领域的,而不是面向数据库表来实现代码的。二、DDD是什么?DDD的核心思想:是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。DDD是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂性,并围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。战略设计:主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,限界上下文可以作为微服务设计的参考边界。战
3、术设计:则从技术视角出发,侧重于领域模型的技术实现,完成软件开发和落地,包括:聚合根、实体、值对象、领域服务、应用服务和资源库等代码逻辑的设计和实现。三、DDD架构分层首先我们来看下架构分层的原理图:第三方工R基础服务用户接口层用户接口层主要包含用户界面、Web服务。用户接口层负责向用户显示信息和解释用户指令。这里的用户可能是:用户、程序、自动化测试和批处理脚本等等。应用层应用层不应该有业务逻辑。它是很薄的一层,理论上不应该有业务规则或逻辑,主要面向用例和流程相关的操作。应用服务是在应用层的,它负责服务的组合、编排和转发,负责处理业务用例的执行顺序以及结果的拼装,以粗粒度的服务通过API网关向
4、前端发布。还有,应用服务还可以进行安全认证、权限校验、事务控制、发送或订阅领域事件等。领域层领域层主要实现企业的核心业务逻辑,和之前的三层架构的Service层很像。领域层当中又包含聚合,聚合里面就带有聚合根、实体、值对象、领域服务等领域模型中的领域对象。领域模型的业务逻辑主要通过实体和领域服务来实现,采用充血模型来时先所有与之相关的业务功能。充血模型后面会解释。当单一实体(或值对象)不能实现时,领域服务就来进行聚合多个实体(或值对象),来实现复杂的业务逻辑。基础层基础层为其他各层提供通用的技术和基础服务,包括数据库服务、消息中间件、对象存储、缓存服务等。它是封装了所有的基础服务,当切换基础组
5、件时,只用稍微修改下基础服务就可以了。比如之前用的对象文件存储组件是阿里的,现在想换成腾讯的了,稍微改下基础服务,切换成腾讯的就可以了,不用去改业务逻辑代码。这个就是采用了依赖倒置的原则,通过解耦来保持独立的核心业务逻辑。传统三层架构转DDD四层架构传统的三层架构就是controller-service-model这种模型,我们的思维习惯就是基于数据库的表来开发业务功能。这种分层架构给开发人员带来了便利,但是如果有其他人过来看你的代码,他会很难从业务角度去理解,因为这些代码都是为操作数据库的表而写。有了DDD之后,代码是面向业务功能的,而不是面向数据库表的。DDD分层架构将业务逻辑层的服务拆分
6、到了应用层和领域层。应用层快速响应前端的变化,领域层实现领域模型的能力。三层架构数据访问采用DAO方式;DDD分层架构的数据库等基础资源访问,采用了仓储(RePOSitory)设计模式,通过依赖倒置实现各层对基础资源的解耦。四、DDD中各种ObjeCt数据持久化对象(PersistentObject,PO),与数据库结构一一映射,它是数据持久化过程中的数据载体。领域对象(DomainObject,DC),微服务运行时核心业务对象的载体,DO一般包括实体或值对象。数据传输对象(DataTransferObject,DTO),用于前端应用与微服务应用层或者微服务之间的数据组装和传输,是应用之间数据
7、传输的载体。视图对象(ViewObject,V0),用于封装展示层指定页面或组件的数据。微服务基础层的主要数据对象是P0。在设计时,我们需要先建立DO和PO的映射关系。大多数情况下Do和Po是一一对应的。但也有DO和Po多对多的情况。在Do和Po数据转换时,需要进行数据重组。对于DO对象较多复杂的数据转换操作,你可以在聚合用工厂模式来实现。当Do数据需要持久化时,先将DO转换为PO对象,由仓储实现服务完成数据库持久化操作。当Do需要构建和数据初始化时,仓储实现服务先从数据库获取PO对象,将PO转换为DO后,完成Do数据构建和初始化。领域层主要是Do对象。Do是实体和值对象的数据和业务行为载体,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DDD 战略 设计 相关 核心 概念 梳理 理解
