【发布时间】:2018-12-11 07:03:36
【问题描述】:
我们尝试将我们的领域拆分为有界上下文,以实现模块化应用程序设计/架构。
我们进行了一次启发性的 EventSorming 会议,这对我们识别有界上下文及其聚合有很大帮助。研讨会结束后,每个参与者都同意我们确定的有界上下文。
尽管如此,我们仍然感到不舒服,因为我们担心我们的有限上下文仍然太大。 EventStomring 专注于领域事件/流程,这是我们用来识别有界上下文的主要构建块。
我们还确定了诸如“合同”之类的聚合。每个合同几乎都遵循相同的流程,但这些合同包含的数据量可能会有很大差异。有非常简单的合同类型和包含大量附加数据和附件的合同类型。
仅仅因为聚合的数据更复杂而声明另一个有界上下文是否有意义?
这两种方法都有其缺点:
- 在一个有界上下文中实现所有合约类型可能会导致代码中出现大量 if 语句以处理不同的数据。
- 仅因为某些数据不同,提取新的有界上下文可能会导致大量重复代码。
任何建议/最佳实践如何处理?
【问题讨论】:
-
不同类型的合同是否由不同的运营团队处理?如果是,他们是否使用不同的词汇来描述他们的工作?
-
不一定。问题是我们的软件只是充当这些合同的“代理”。合同由第三方制定。目前,我们试图将所有这些不同的合约映射到一个结构(模型)来统治它们,这似乎不是一个好主意。 ;-) 因此我们想要拆分事物,但我们不确定拆分应该走多远。
标签: domain-driven-design aggregate bounded-contexts domain-events