首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将模型和有界上下文映射到代码基DDD中?

如何将模型和有界上下文映射到代码基DDD中?
EN

Stack Overflow用户
提问于 2019-12-05 13:59:02
回答 2查看 410关注 0票数 0

模型和有界上下文的概念如下:

模型:

一种抽象系统,它描述领域的选定方面,并可用于解决与该领域相关的问题。

Bounded-Context:

一个单词或语句出现的决定其意义的设置。

但我不得不问:

  1. 是两种包含关系的关系,即有界上下文有一个或多个模型?
  2. 据我理解,DDD概念应该通过代码库来识别(在某种程度上),这对于聚合、实体、事件、Commands...etc来说是明确的,但是模型和有界上下文是如何映射到代码库中的呢?例如,一个模型只是一个或多个聚合的集合,还是其他什么?有界上下文是命名空间还是其他东西?

提前谢谢。

注:可以自由地用一些框架( Django,Axon..etc )来说明您的答案。

EN

回答 2

Stack Overflow用户

发布于 2019-12-11 09:34:43

是两者之间的关系是包容关系,即有界上下文有一个或多个模型?

我想您可以这样说,但是有界上下文( BC )只有一个模型,对象是根据BC的无处不在的语言(UL)命名的。

模型和BCs都属于解空间。

在问题空间中,有域和子域。

在解决方案空间中,您有BCs (理想情况下,1:1与子域相关)。您为一个子域建模,并且对每个子域模型都有一个BC。

但是,例如,您可以只使用一个模型来建模整个域,以便整个域的解决方案空间中只有一个BC。在本例中,您有一个BC与多个子域相关。这个BC将是一个单一的应用程序。

另一个例子,一个与多个BCs相关的子域,发生在您将子域拆分成多个“部件”,并对每个“部分”进行建模时。因此,您将有许多子域的模型。这样,在解决方案空间中,您有许多用于子域的BCs,即解决子域问题的许多应用程序。

这些1:N或N:1的子域与BCs之间的关系发生在UL术语的划分是模糊的情况下。

正如我所理解的,DDD概念应该可以通过代码库来识别(在某种程度上),这对于聚合、实体、事件、Commands...etc来说是很清楚的,但是模型和有界上下文是如何映射到代码库中的呢?例如,一个模型只是一个或多个聚合的集合,还是其他什么?有界上下文是名称空间还是其他东西?

BC是一个软件系统,一个自主的应用程序。一个模型是BC的源代码。但是在DDD中存在着另一个概念:模块,一组内聚的域对象。这是一个比BCs更薄的部门。

所以,从宽到小:

解决方案-> BC ->模块->聚合->实体和值对象

票数 2
EN

Stack Overflow用户

发布于 2019-12-05 21:29:01

这是基于我的理解当然..。意见可能各不相同。

  1. 模型在您的代码中不是一回事,但是如果做得好,它就是代码。这就是你从企业的知识危机中得出的,并试图在代码中捕捉到的。想出一个整体的模式通常是个愚蠢的差事。因此,您有一个模型在.
  2. 中有效的上下文--有界上下文是模型有效的上下文。这是有价值的,有几个原因。它允许我们管理模型的范围和复杂性。一个模型仅仅是有用的,因为它能帮助我们解决商业问题。要做到这一点,我们需要能够将某种形式的信息保留在脑海中,这样我们才能理解。这就是语言的来源。语言、集合等对该上下文是有效的。这里我想举个例子。eCommerce结帐中的产品不同于从仓库中挑选的产品。它们可能有一些共同的概念,但有些与上下文无关。应该在上下文映射中捕获它们之间的关系。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59196817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档