如何将模型和boundedContext映射到codebase DDD?

2024-03-28 16:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

模型和有界上下文在概念上是:

型号:

A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.

有界上下文:

The setting in which a word or statement appears that determines its meaning.

但我不得不问:

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

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

提前谢谢。你知道吗

注意:请随意用框架、Django、Axon……等来陈述您的答案


Tags: andofto代码模型概念that关系
2条回答

Is the relationship between the two is containment relationship, i.e. Bounded-Context has one or more models?

我想你可以这样说,但是有界上下文(BC)只有一个模型,对象的命名是根据BC的泛在语言(UL)来命名的。你知道吗

模型和BCs都属于解空间。你知道吗

在问题空间中有域和子域。你知道吗

在解决方案空间中有BCs(理想情况下与子域相关的比例为1:1)。你为子域建模,每个子域模型都有一个BC。你知道吗

但例如,您可以只使用一个模型对整个域进行建模,这样您就可以在整个域的解决方案空间中只使用一个BC。在本例中,一个BC与多个子域相关。这个BC将是一个单片应用程序。你知道吗

另一个例子是,当您将子域拆分为几个“部分”并对每个“部分”进行建模时,就会出现与许多bc相关的子域。所以你会有很多子域的模型。这样,在解空间中就有许多用于子域的bc,即许多用于解决子域问题的应用程序。你知道吗

当根据UL术语进行的划分是模糊的时,子域和bc之间出现1:N或N:1关系的情况。你知道吗

As I understand DDD concepts should be identifiable (to some degree) through the codebase, this is clear for Aggregate, Entities, Event, Commands...etc, but how Models and Bounded-Context are mapped into the codebase? for example is a models just a set of one or more aggregates, or something else? is Bounded-context a namespace or something else?

BC是一个软件系统,一个自治的应用程序。模型是BC的源代码。但是在DDD中存在另一个概念:模块,一组内聚的域对象。它比BCs更薄。你知道吗

因此,从宽到小:

解决方案>;业务连续性>;模块>;聚合>;实体和价值对象

This is based on my understanding of course... opinions may vary.

  1. 模型不是代码中的一件事,但如果做得好,它就是代码。它是您从业务的知识危机中得出的,并尝试用代码捕获。为整个企业想出一种模式通常是件蠢事。所以你有一个上下文模型是有效的。。。你知道吗
  2. 有界上下文是模型有效的上下文。这是有价值的几个原因。它允许我们管理模型的范围和复杂性。模型只有在帮助我们解决业务问题时才有用。要做到这一点,我们需要能够保持某种形式的它在我们的头脑中,这样我们才能理解。这就是语言的来源。语言、聚合等对该上下文有效。我想举个例子。电子商务结账中的产品不同于从仓库中挑选的产品。他们可能有一些共同的概念,但有些是不相关的跨上下文。它们之间的关系应该在上下文映射中捕捉。你知道吗

相关问题 更多 >