我一直在阅读有关 DDD 和有界上下文的信息,但我认为我的想法是错误的。起初,我喜欢子域和限界上下文的想法,我是这样理解的:有一个软件要开发,但是一次攻击太多了,所以我们把它分成逻辑部分,一次开发。我们解决的另一个问题是普遍存在的语言的歧义。
这使我将有界上下文视为基本上只是我对与应用程序的某些特定部分相关的代码进行分组和绑定的文件夹。我认为这段代码是由类似的东西组成的
- 该有界上下文的域模型,包括存储库和服务的抽象
- 有界上下文的基础设施层、存储库的实现等
当然,域模型和基础设施在有界上下文中正确分离。
然而,进一步阅读,似乎每个有界上下文本身就是一个完整的应用程序。例如,有时似乎每个有界上下文都有自己的应用程序层。
这让我很困惑,因为有时我不想最终开发大量的应用程序,我只是开发一个。应用程序的限界上下文划分应该是构建一个应用程序,而不是很多应用程序需要集成。
我似乎在@MikeSW 说OP 提出的两种方法都有效的地方提出了这个问题。我要问的是第三种结构:
<bc 1>
|_ domain
|_ infrastructure
<bc 2>
|_ domain
|_ infrastructure
|_ application
|_ presentation
至少对于我所看到的所有应用程序来说,这更有意义。我想要一个应用程序,而不是几个具有多个演示文稿的应用程序,但我仍然希望能够打破诸如“限制无处不在的语言”之类的领域和利益。
那么,有界上下文是一个完整的应用程序吗?还是可以像我理解的那样使用有界上下文并感觉更有用?我的方法有什么问题吗?