洋葱架构的 DDD 限界上下文

DDD Bounded Contexts with Onion Architecture

我有以下 Onion Architecture 框架。

使用 Domain Driven Development 可以识别 Bounded Contexts。互联网上的大多数文献都指出每个 Bounded Context 需要抽象到自己的项目或命名空间中。

  1. 那么我的方法是否不正确,因为我的所有 Domain Models 都在一个项目中,而我所有的 Domain Services 都在另一个项目中?在不同的命名空间或项目中没有不同的限界上下文真的很重要吗?
  2. 如果你有一个 Model A,我的 Bounded Context A 使用了它,但是 Bounded Context BBounded Context C 等也需要使用完全相同的 Model A , 你允许他们使用完全相同的模型,还是为每个 Bounded Context 创建一个新模型?

我是 DDD 的新手,如果这个问题是个愚蠢的问题,我深表歉意。如果我提出问题并得到很好的解释作为答案,我会发现自己理解得更好。

任何帮助将不胜感激。

Is my approach then incorrect for having all my Domain Models in one project and all my Domain Services in another project? Does it really matter not having different bounded context's in different namespaces or projects?

  1. 不同的命名空间是一个概念性的 一个实用的解决方案,否则当两个相邻的概念在不同的子域中使用相同的名称时,您可能会发生实体名称冲突.

    不同 projects/solutions 更像是一种组织选择。如果单独的团队在 BC 上工作,事情会变得更容易一些,并且单独的二进制文件意味着 BC 可以更独立地部署。

If you have a Model A which is used my Bounded Context A, but Bounded Context B, Bounded Context C, etc also needs to use the exact same Model A, Do you allow them to use that exact same model, or do you create a new model for each Bounded Context?

  1. 这需要更多的领域分析才能说明,但限界上下文的全部意义在于能够从完全不同的角度查看事物。在极少数情况下

    • 3 个不同的 BC 中使用了完全相同的实体
    • 你看不到他们在未来以自己的方式发展
    • 该实体似乎不自然地属于给定的 BC

那么您可能想要使用共享内核模式。否则,只需复制每个 BC 中的实体并让它们过自己的生活,或者从其他 BC 中找到该实体的真实 BC 和 link 到其 ID。