DDD概念

作者: 寻找无名的特质 | 来源:发表于2022-10-04 06:01 被阅读0次

    问题空间
    定义:真实世界
    利用核心子领域、通用子领域、支撑子领域来分解问题空间
    问题空间:价值需求+业务需求(业务功能、业务实现)
    6w模型
    业务价值
    who(利益相关者)
    why(业务愿景,业务价值)
    where(业务范围)
    业务需求
    when(业务流程)
    what(业务功能)
    how(业务实现)
    如何进行业务需求分析?
    1.用例分析
    用例是有层次的,不同粒度的用例体现了不同的业务价值
    2.用户故事(invest原则)
    invest原则
    1.independent:独立的
    2.negotiable: 可协商的
    3.valuable:有价值的
    4.estimable:可估算的
    5.small:小的
    6.Testtable:可测试的
    3.业务服务
    4.prd文档
    业务服务
    编号(标记业务服务的唯一编号)+名称(动词短语)+描述(角色+服务功能+服务价值)+触发事件(触发该业务服务的具体事件)+基本流程+基本流程+替代流程+验收标准(业务规则)
    业务服务对标6w模型
    why: 业务价值
    what:业务功能
    how:业务实现
    who:角色
    when:服务间的协作
    where:限界上下文

    解空间
    定义:使用软件世界构建的解空间
    围绕着领域这一核心开展业务系统的战略设计与战术设计

    同构系统
    定义:两个复杂结构可以相互映射,每个结构的每一部分在另一个结构都有一个相应的部分
    分类
    1.概念层次的同构系统
    2.设计层次的同构系统
    3.管理层次的同构系统

    系统上下文
    定义:定义目标系统解空间的边界,边界范围外的系统是伴生系统

    限界上下文
    定义:是知识语境的界定,是业务能力的纵向切分。
    将领域知识封装成了领域对象,每个领域对象扮演了不同的角色,执行不同活动,共同对外公开内聚的业务能力
    不同领域模型在不同语境下扮演不同的角色,执行不同的业务活动,提供完整的业务能力
    限界上下文的四个特征
    1.最小完备(完整性)
    限界上下文需要的必备的领域知识,必须分配给它、
    2.自我履行
    基于边界内基础设施的基础,输出完整的业务能力
    3.稳定空间
    隔离外界变化对内部领域层的影响(解决:引入抽象)
    4.独立进化
    变化:领域模型的修改和更新
    避免内部的变化影响外边(封装)
    边界上下文的注意事项
    1.跨BC(boundary content: 边界上下文)共用使用一个相同的领域概念(领域概念对应一个对象),但只使用了部分属性,各自BC关系的属性应放在各自的数据库中我,ID需要保持一致
    业务流程 --》业务场景 ---》业务服务 --》业务主体 --》限界上下文
    限界上下文的识别
    1.正交原则
    定义:多个事务中一个发生变化,不会影响到其他事务,那么这些事务就是正交的

    上下文映射
    上下文映射模式
    1.通信集成模式
    防腐层:ACL(anti corruption layer), 下游对抗上游的变化
    开放主机服务: OHS(open host service), 上游给下游的不变承诺
    发布语言: PL(published language), 两个限界上下文之间的模型转换的公共语言(消息契约模型)
    共享内核:暴露领域模型
    2.团队协作模式
    尊奉者模式:对上游模型具有强依赖性

    消息契约--》消息数据
    定义:是服务契约向客户端传递的消息数据
    服务契约:基于OpenAPI规范的微服务接口描述,是微服务运行和治理的基础
    消息契约的类型
    1.请求消息
    2.响应消息
    3.事件消息
    消息契约定义于外部网关层
    领域事件:领域模型发布的事件,用于聚合之间的协作
    应用事件:应用服务发布的事件,穿越限界上下文边界
    事件的定义
    1.减少对领域模型的依赖,保证中立性
    2.事件的内容主要包含聚合id+事件属性的最小集
    3.支持版本管理
    4.有事件id,有创建时间戳
    5.事件是不变对象

    六边形架构(端口与适配器)
    ui层 --》业务逻辑层 --》数据层(部分业务逻辑层依赖UI层,所有业务逻辑依赖数据层)

    系统分层架构

    领域模型的设计实现
    领域模型的特征
    1.运用统一语言来表达概念
    2.领域业务知识
    3.对领域业务知识进行提炼和抽象

    统一语言
    DTO: 消息契约对象(贫血模型)
    VO:视图对象,为ui提供数据,是消息契约模型中的一种
    BO: 业务对象,在业务逻辑层封装业务逻辑
    DO:领域对象,领域层的业务对象(领域模型对象、领域服务)
    PO: 持久化对象
    DAO:数据访问对象
    领域模型对象:实体、值对象、领域服务、领域事件
    领域模型必须是富领域模型
    远程服务、应用服务接口返回参数和返回值遵循DTO的消息契约模型
    实体、值对象为持久化对象PO
    模型驱动设计

    相关文章

      网友评论

          本文标题:DDD概念

          本文链接:https://www.haomeiwen.com/subject/lrjerrtx.html