有界上下文的大小

8
我开始学习DDD的原则,目前正试图掌握有界上下文的概念。特别是,你如何决定它有多大(或小)呢?是的,我知道,根据Vaughn Vernon的说法,尽可能小,必要时尽可能大。
假设我要建模一个博客。然后我可以说涉及到3个有界上下文:1)首页(显示最新文章,不显示评论)2)讨论(单篇文章包括评论)3)文章编辑器(我在其中撰写文章)。
但是,这感觉不对(通用语言对于所有上下文都是相同的),似乎我是从前端的角度出发,仍在以视图模型或其他东西的术语思考。
请问有人可以指点我正确的方向吗?

1
我不是该话题的专家,但我认为你是正确的。像文章和评论这样的词总是具有相同的含义,因此它是一个单一的有界上下文,这并不是很复杂,它只是简单的 CRUD。 - inf3rno
3
在这种情况下,这可能不值得,但是行为和概念会导致业务上下文。例如,您的博客可能具有管理上下文,允许超级管理员禁止帐户并执行其他管理任务。这些并不真正属于博客的核心领域,可能需要创建一个新的业务上下文。 - plalx
@plalx 好观点,立刻让我想起了弗农书中的例子。 - Thorsten Westheider
3个回答

4
博客不是使用多个有界上下文的好例子。它并没有足够大的软件示例来证明它们的定义。DDD和BC真正针对的是大型/复杂的企业软件系统。
就像你所说,这三个示例中的聚合始终具有相同的含义。
我在之前的答案中给出了有界上下文的示例,希望能解释什么时候使用它们:Bounded Contexts and Aggregate Roots

1
我正在初步涉足编程,并且在构建网站的过程中,我想为什么不尝试应用DDD来进行实验呢。我非常清楚这可能有些过度设计,但如果通过这样做我可以获得一些DDD方面的经验,那我并不介意。 - Thorsten Westheider

2

尝试从不同的角度来看待您整个域名,作为文章的编辑者,您可能会使用像创建草稿、发布文章这样的句子,作为读者,您将阅读文章并对其进行评论。在建立域语言的同时,您还将识别实体及其行为,其中一些实体只会出现在一个角度中,有些则会在两个角度中出现,但您将通过其行为来区分它们。您的域语言向您展示了每个角度的边界,您可以将其作为有界上下文实现。


是的,那就是我们的想法。在撰写文章时,评论并没有任何意义,而在编辑器中添加图片也类似,因为它在前台页面上没有任何意义。 - Thorsten Westheider
我实际上为Composition BC想出了这些操作:UpdateTitle,UpdateContent,Publish和Retract。相比之下,我为Discussions BC得到了AddComment。 - Thorsten Westheider

2
到目前为止我读到的最好的子域实例是以下内容。
只需查看实际公司!参与业务流程的每个部门都可以拥有自己的子域。在理想的情况下,每个子域都在您的实现中具有自己的有界上下文。您应该问自己公司是否需要一个新部门来做这件事?它真的那么大吗?
有界上下文必须足够大,以描述公司的一个部门。一个典型的例子是网店,其中您有购物核心领域和发票、交付和存储子域。拥有多租户和多个方面(如之前的答案所述)是不够的。带有作者和几个读者的博客不需要多个部门,因此您可以使用单个有界上下文解决此问题。如果您认为有中等大小结构的有界上下文中可能有多个模块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接