领域驱动设计(DDD)VS面向数据表设计

  • 目录

    概念介绍

    领域驱动设计(DDD)

    面向数据表设计

    领域驱动设计优点

    设计承接分层架构对比


  • 概念介绍

    • 领域驱动设计是一种设计思想,在落地时主要使用四层架构承接
    • 面向数据表设计,一般使用三层架构承接,但是也可以使用四层架构承接
  • 领域驱动设计(DDD)

    • DDD 是一种在面向高度复杂的软件系统时,关于如何去建模的方法论。
    • DDD解决了什么问题?
      • DDD解决了对复杂应用建模的问题,通过DDD提高架构和代码的可理解性,从而降低维护成本。
    • 适用场景
      • DDD 适用于复杂业务建模以及业务场景不确定的任务 。
      • 对于业务场景确定或者,业务场景简单的系统,面向数据库设计更适合。
    • 承接DDD设计的分层架构
      • 四层架构
          • User Interface(用户接口层)
            • 职责:
              • 负责向用户显示信息、解释用户命令。这里的用户可以是真正的用户、自动化测试程序、批处理脚本等。
          • Application Layer(应用层)
            • 主要负责:
              • 负责对领域服务、其他应用服务的封装、编排、组合。
            • 主要特点:
              • 这一层都很薄,主要是服务的组合与编排。
            • 特别注意:
              • 不要将领域层的逻辑放在应用层中实现,否则很容易导致应用层、领域层的边界混乱,最终导致DDD的四层架构变成三层架构。
          • Domain Layer(领域层)
            • 主要职能:
              • 实现领域对象或者聚合自身的原子业务逻辑,关注领域模型的能力,不太关注外部用户操作或者流程方面的控制。
            • 主要包括:
              • 领域服务、值对象、实体、聚合、聚合根等。
          • Infrastructure Layer(基础设施层)
            • 主要职能:
              • 为其他各层提供通用的技术和技术服务。
            • 主要包括:
              • 封装消息中间件、网关、缓存、文件服务、数据库等。
            • 主要作用
              • 封装基础资源的服务,实现应用层、领域层、基础层解耦,降低对外部资源依赖。例如:如果没有此层,当消息中间件、缓存变化时,将会大面积修改业务逻辑。
      • 六边形模型
      • 洋葱模型
  • 面向数据表设计

    • 传统开发,以设计数据表为中心。
    • 在面向数据表设计中,系统的开发主要集中于数据表的设计,包括字段的设计以及表关系的设计。
      • 数据集中存储在不同的数据表中,数据表的设计需要符合各种范式和标准。
    • 业务逻辑通过一系列针对这些数据表的增删改查来实现。
    • 适用场景
    • 承接面向数据表设计的分层架构
      • 三层架构
        • User Interface layer(表示层, UI) 接受对用户的请求并返回数据,将结果呈现给用户。
        • Business Logic Layer(业务逻辑层, BLL) 主要负责接受表现层的请求,进行各种业务逻辑运算,然后通过数据访问层完成数据的操作。
        • Data Access Layer(数据访问层, DAL) 主要负责数据的查询、持久化等操作,关注数据一致性、准确性,不关注业务逻辑
      • 四层架构
        • 可以使用四层架构承接面向数据表设计,将三层架构中的service层进行拆分
  • 领域驱动设计优点

    • 快速响应需求变化
    • 例子
      • 场景
        • 业务新增需求变化
      • 领域驱动设计的处理流程
        • 分析需求
        • 产出需求对应的领域事件,命令
        • 领域建模,产出领域对象
        • 优点
          • 快速定位新增需求对应的领域对象,映射到对应的数据模型
      • 面向数据表设计的处理流程
        • 分析需求
        • 分析需要新增的字段
        • 确认数据表的变化
          • 具体在哪个表格新增字段
        • 编写代码,操作数据表格,完成业务
        • 缺点
          • 无法确认应在哪张表新增字段
  • 设计承接分层架构对比

    • 三层架构vs四层架构
      • 区别:
        • 三层架构:
          • 三层架构的业务处理都放在Service层,所有的Service对象都处在同一个逻辑层级,Service对象即负责领域内逻辑,又负责领域间协调(此处的领域泛指业务边界)。Service层的内部是一张网。
        • 四层架构:
          • 四层架构将领域间协调和领域内逻辑处理分开成两层,分别用application Service和domin service处理,这样使得整个业务处理层(application service + domain service )变成了一个树形结构。
        • 在所有的数据结构中,树形结构是在能够承载比较多信息量的同时,逻辑结构最简单的数据结构。

你可能感兴趣的:(架构,系统架构,架构)