DDD领域驱动设计(领域,子域,界限上下文)

       

       

领域与具体开发技术无关。就是软件系统要解决的实际问题相关的所有东西的集合。比如电子商城卖书,那么如何进货,如何决定优惠规则,如何安排物流,如何管理客户级别,如何分析销售数据等等,这直接与业务相关的所有东西都归属于“领域”。DDD就是说你得先把领域中涉及到的数据、流程、商业规则等都弄明白了,然后以面向对象的观点为其建立一个模型(领域模型),再选用合适的软件技术去实现这个模型。

       问题空间是核心域和其他子域的组合。解决方案空间包括一个或者多个限界上下文,即一组特定的软件模型。这是因为限界上下文本身就是一个特定的解决方案。
       领域可再划分为多个子领域,即子域。每个子域对应一个更小的问题域或业务范围。比如酒店行业,一开始的酒店核心系统是单体架构,后来业务发展,开始转型中台,引入微服务。微服务架构就需划分业务领域边界,建立领域模型,并实现微服务落地。可根据业务关联度及流程边界将酒店领域细分为:预订,入住,退房,客房服务,点餐等领域事件。

        网上预订,入住,退房。是酒店领域一定要有的功能,这就是核心子域
        客房服务,点餐等不影响主要功能的就是支撑子领域
在预订这个限界上下文内可以建立预订的领域模型,领域模型最后映射到系统就是预订微服务。
不同行业的业务模型可能不同,但领域建模过程类似,核心思想都是将问题域逐步分解,降低业务理解和系统实现的复杂度。

领域可细分为不同子域,子域可根据自身重要性和功能属性划分为三类子域:

1 核心域
决定产品和公司核心竞争力的子域,是业务成功的主要因素和公司的核心竞争力。

2 通用域
没有太多个性化需求,同时被多个子域使用的通用功能子域。比如认证、权限等,无企业特点限制,无需太多定制化。

3 支撑域
既不包含决定产品和公司核心竞争力的功能,也不包含通用功能的子域,但又是必需的支撑域。支撑域具有企业特性,但不具通用性,例如数据代码类的数据字典等系统。

领域的核心思想是将问题域逐级细分,降低业务理解和系统实现的复杂度。
通过领域细分,逐步缩小微服务需要解决的问题域,构建合适的领域模型,映射成系统就是微服务。

4 界限上下文

        界限上下文就是边界的意思。通过从业务边界到工作边界再到应用边界这三个层次抽丝剥茧,分别以不同的视角、不同的角色协作来运用对应的设计原则,会是一个可行的识别限界上下文的过程方法。

        两个限界上下文之间的关系是有方向的,领域驱动设计使用两个专门的术语来表述它们:“上游(Upstream)”和“下游(Downstream)”,在上下文映射图中,以 U 代表上游,D 代表下游,理解它们之间的关系,正如理解该术语隐喻的河流,自然是上游产生的变化会影响到下游,反之则不然。故而从上游到下游的关系方向,代表了影响产生的作用力,影响作用力的方向与程序员惯常理解的依赖方向恰恰相反,上游影响了下游,意味着下游依赖于上游。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值