栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

领域驱动设计核心概念

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

领域驱动设计核心概念

DDD特点
  • 使用充血领域对象,将数据和行为封装在一起,并与现实世界中的业务对象相映射,更加符合OO编程理念。
  • 更容易抽象、分治业务,解决复杂问题。
  • 相对的,如果逻辑简单,比如取数聚合,使用DDD的成本大于收益。
3种架构层次
  • 架构设计分为:
    • 业务架构——根据业务需求设计业务模块及其关系
    • 系统架构——设计系统和子系统的模块
    • 技术架构——决定采用的技术及框架
  • DDD:聚焦业务架构,制定可演进的到系统架构的映射方案。
  • 微服务:
    • 设计可复用的和业务一致的系统架构。
    • 追求系统模块之间充分解耦,可以自由地选择合适的技术架构,去中心化地治理技术和数据。
战略模型

宏观上划分和集成限界上下文

领域
  • 领域包含了问题域和解系统,可以映射为N个限界上下文。
限界上下文
  • 划分:限界上下文应该从需求出发,按领域划分,遵循高内聚低耦合原则。
  • 梳理关系:U上游,D下游。
    • 合作关系(Partnership):两个上下文紧密合作的关系,一荣俱荣,一损俱损。
    • 共享内核(Shared Kernel):两个上下文依赖部分共享的模型。
    • 客户方-供应方开发(Customer-Supplier Development):上下文之间有组织的上下游依赖。
    • 遵奉者(Conformist):下游上下文只能盲目依赖上游上下文。
    • 防腐层(Anticorruption Layer):一个上下文通过一些适配和转换与另一个上下文交互。
    • 开放主机服务(Open Host Service):定义一种协议来让其他上下文来对本上下文进行访问。
    • 发布语言(Published Language):通常与OHS一起使用,用于定义开放主机的协议。
    • 大泥球(Big Ball of Mud):混杂在一起的上下文关系,边界不清晰。
    • 另谋他路(SeparateWay):两个完全没有任何联系的上下文。
  • 不同限界上下文中的相同概念需要分别建模。
    • 如创作上线文中的图书、物流上下文中的图书侧重点不同。
架构
  • 通常六边形架构,领域模型位于核心。
战术模型

具体使用建模工具来细化限界上下文

实体 Entity
  • 当一个对象由其标识(而不是属性)区分时,这种对象称为实体。如:人。
  • 包含数据和行为。
  • 建议将属性的验证放到实体中。
值对象 Value Object
  • 当一个对象用于对事务进行描述而没有唯一标识时,它被称作值对象。如:颜色信息。
  • 具有不变性、相等性(可度量领域中的某个东西、可进行比较)和可替换性。
  • 需要保证值对象创建后就不能被修改。
聚合 Aggregate
  • 一组相关对象的集合,作为一个整体被外界访问,集合的根节点是聚合根。
  • 设计聚合的原则:
    • 边界内的内容具有一致性:一个事务只修改一个聚合。如果难以实现考虑剥离聚合达到最终一致。
    • 设计小聚合:大部分的聚合都可以只包含根实体,而无需包含其他实体。即使一定要包含,可以考虑将其创建为值对象。
    • 通过唯一标识来引用其他聚合或实体。
    • 边界外使用最终一致性。
领域服务
  • 一些重要的跨实体的领域行为或操作,可以归类为领域服务。它既不是实体,也不是值对象的范畴。
    • 执行一个显著的业务过程,如下单。
    • 对领域对象转换。
    • 输入多个领域对象,输出计算结果。
  • 微服务中,一切领域逻辑(如通过聚合根暴露的业务逻辑)均需要通过领域服务对外暴露。
领域事件
  • 作用:消除两阶段提交,支持聚合内一致性原则,维护聚合间的一致性。
模块
  • 一种控制限界上下文的手段,一般尽量用一个模块来表示一个领域的限界上下文。
适配层
  • 防腐层:一个上下文通过适配器和另一个上下文交互。
  • 资源库:对领域的存储和访问进行统一管理。
参考
  • 领域驱动设计在互联网业务开发中的实践
  • 实现领域驱动设计
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号