DDD领域建模与架构设计
2021-11-10 09:40:32 171 举报
AI智能生成
领域驱动设计(DDD)是一种软件开发方法,它关注于核心领域和领域逻辑的实现。在DDD中,领域模型是一个重要的概念,它是一个反映业务规则和业务知识的模型。架构设计则是指将领域模型转化为可执行的软件系统的过程。 在DDD中,领域专家、开发人员和利益相关者共同参与领域模型的创建和维护。通过不断地与领域专家交流,开发人员可以更好地理解业务需求,并将这些需求转化为可执行的软件系统。 总之,DDD领域建模与架构设计是一种关注于核心领域和领域逻辑实现的软件开发方法。它强调与领域专家合作,以创建一个反映业务规则和业务知识的领域模型,并将其转化为可执行的软件系统。
作者其他创作
大纲/内容
简化设计
降低维护成本
提高软件交付速度
DDD有什么作用?
软件核心复杂性应对之道
新项目该不该用DDD?
DDD适用于什么场景?
为解决场景下的问题而形成的一套模型,然后使用这套模型来解决业务问题
谁(实体)使用什么(输入)做了什么(命令、动作)产生了什么(输出)影响了什么(事件)
四个关注点事件:某个动作的结果属性:事件的输入、输出命令:某个动作实体:命令的触发者
事件风暴
使用4种颜色(对象)用于问题分析建模时标型(Moment-Interval)对象:具有可追溯性的记录运营或管理数据的时刻或时段对象,用粉红色表示;PPT(Party/Place/Thing)对象:代表参与到流程中的参与方/地点/物,用绿色表示;角色(Role)对象:在时标型对象与 PPT 对象(通常是参与方)之间参与的角色,用黄色表示;描述(Description)对象:对 PPT 对象的一种补充描述,用蓝色表示。
分析的五个步骤找到溯源事件确定时标型对象找到周围的PPT对象找到角色补全描述对象
四色建模法
领域发现
描绘需求或问题本身不断梳理业务提炼出核心的领域模型
第一步:统一语言,梳理业务
如何识别聚合与聚合根?一个Bounded Context(限界上下文)可能包含多个聚合,每个聚合都有一个根实体,叫做聚合根;
如何进行关联?聚合根到聚合根:通过ID关联聚合根到其内部的实体:直接对象引用;聚合根到值对象:直接对象引用;
聚合的几个设计原则:聚合是用来封装真正的不变性,而不是简单的将对象组合在一起聚合应尽量设计的小,尽可能小的拆分,可以避免重构,重新拆分聚合之间的关联通过ID,而不是对象引用聚合内强一致性,聚合之间最终一致性应用层实现跨聚合的调用,避免跨聚合的领域服务调用和数据表关联。
第二步:识别聚合、聚合根
第三步:划分限界上下文
领域建模
方案一:数据冗余以空间换时间方案二:数据补填结合Wrapper设计模式,一般在Dao层实现数据聚合
跨库关联查询解决方案
CQRS(Command Query Responsibility Segregation)命令查询职责分离
事件到底如何影响一个领域对象的状态的呢?
事件是只会增加不会修改
一个事件就是表示一个事实,事实是不能被磨灭或修改的
Event Sourcing事件溯源通过事件来管理领域对象的生命周期,事件即领域对象已发生的事实,只增不改
一种支持读写分离的演化
CQRS与Event Sourcing
领域驱动架构
整洁架构核心思想:通过适配器层解耦业务层与技术框架层代码
整洁架构
六边形架构是微服务设计的基础
六边形架构
融合了DDD、整洁架构、CQRS……曾在高水准的平台生产代码中应用,其中一个是拥有数千家遍布全球的网上商店的 SaaS 电子商务平台,另一个是已经在两个国家上线的市场,拥有可以每月处理超过两千万条消息的消息总线。
清晰架构
架构设计
领域发现常用的两种方法:事件风暴四色建模法领域建模的三个步骤:第一步:统一语言,梳理业务第二步:识别聚合、聚合根第三步:划分限界上下文
跨库关联查询常用的两种解决方案:数据冗余数据补填CQRS与EventSourcing:命令查询职责分离通过事件来管理领域对象的生命周期,事件即领域对象已发生的事实,只增不改领域驱动架构:关注领域模型,围绕业务领域展开整洁架构:通过适配器层解耦业务层与技术框架层代码六边形架构:微服务设计的基础清晰架构:融合了DDD、整洁架构、CQRS……
回顾
公众号:架构师修行录,关注回复【DDD】送你一份领域建模的实际案例
致谢
DDD领域建模与架构设计
0 条评论
下一页