Domain driven design 每个辖区的有界上下文,具有类似的业务流程,但域语言和实体属性略有差异

Domain driven design 每个辖区的有界上下文,具有类似的业务流程,但域语言和实体属性略有差异,domain-driven-design,domaincontext,Domain Driven Design,Domaincontext,您将如何处理一个共享大部分相同业务逻辑,但在域语言和实体属性方面略有差异的域。这些差异因“地区”而异 一个虚构的例子是用于管理住宅房地产的房地产系统。所使用的语言在州/省之间可能略有不同,在某些州,有关房地产的属性可能会更详细。每个州/省都有一个办事处,负责管理该“地区”的房地产 您会为每个州/省创建单独的有界上下文吗?那么可能会有50多个有界上下文 您是否可以创建一个单一的有界上下文,并通过对象继承或组合处理语言和数据的差异?让我首先说,我认为这里没有灵丹妙药。一如既往,这一切都取决于不同的因

您将如何处理一个共享大部分相同业务逻辑,但在域语言和实体属性方面略有差异的域。这些差异因“地区”而异

一个虚构的例子是用于管理住宅房地产的房地产系统。所使用的语言在州/省之间可能略有不同,在某些州,有关房地产的属性可能会更详细。每个州/省都有一个办事处,负责管理该“地区”的房地产

您会为每个州/省创建单独的有界上下文吗?那么可能会有50多个有界上下文


您是否可以创建一个单一的有界上下文,并通过对象继承或组合处理语言和数据的差异?

让我首先说,我认为这里没有灵丹妙药。一如既往,这一切都取决于不同的因素。这样,我的反应不是一个具体的想法,而是你和你的团队在做出决定的过程中可以考虑的一系列因素

如果我被要求定义一个有界上下文,我会说它是
设置
,其中
单词
具有一定的
含义
内涵
。如果我们同意上面的说法,那么我们会立即尝试为每个区域或
设置
创建一个有界上下文。
也就是说,如果您从所有这些上下文中获得的好处有助于代码库的可理解性。但是,如果您正在创建的上下文非常少,或者您为拥有所有这些上下文付出了沉重的技术维护成本,那么我强烈建议不要使用多个上下文

我不确定,但我觉得在您的情况下,每个上下文中的一个
单词将具有相同的
含义
,只是在每个上下文中使用的
单词将不同。而通常情况下,在不同上下文中使用的相同的
单词具有不同的含义


我希望这一切都是有意义的,它能帮助你解决你的问题。

让我先说一句,我认为这里没有灵丹妙药。一如既往,这一切都取决于不同的因素。这样,我的反应不是一个具体的想法,而是你和你的团队在做出决定的过程中可以考虑的一系列因素

如果我被要求定义一个有界上下文,我会说它是
设置
,其中
单词
具有一定的
含义
内涵
。如果我们同意上面的说法,那么我们会立即尝试为每个区域或
设置
创建一个有界上下文。
也就是说,如果您从所有这些上下文中获得的好处有助于代码库的可理解性。但是,如果您正在创建的上下文非常少,或者您为拥有所有这些上下文付出了沉重的技术维护成本,那么我强烈建议不要使用多个上下文

我不确定,但我觉得在您的情况下,每个上下文中的一个
单词将具有相同的
含义
,只是在每个上下文中使用的
单词将不同。而通常情况下,在不同上下文中使用的相同的
单词具有不同的含义

我希望这一切都是有意义的,它能帮助你解决你的问题。

我联系了DDD领域的一位领导者,我想我会分享他的回答(由我总结)

根据我提供的有限信息和示例,他提出了以下几点:

  • 元数据驱动的设计将更加有效和高效。也就是说,每个“区域”都有元数据来驱动其流和数据
  • 看看推动地区局势的因素
  • 请查看概念以获取想法,但请限制您在实际DCI实现中的尝试,因为它会增加代码的复杂性
我联系了DDD领域的一位领导者,我想我会分享他的回答(由我总结)

根据我提供的有限信息和示例,他提出了以下几点:

  • 元数据驱动的设计将更加有效和高效。也就是说,每个“区域”都有元数据来驱动其流和数据
  • 看看推动地区局势的因素
  • 请查看概念以获取想法,但请限制您在实际DCI实现中的尝试,因为它会增加代码的复杂性

我喜欢您将语言差异描述为“单词将具有相同的含义”的方式。就我而言,这是真的。我猜我的团队要解决的下一个“想法”是“过程”中的差异。整个过程是一样的,但由于每个“区域”的不同,流程会有所偏离。我喜欢你描述语言差异的方式,即“单词将具有相同的含义”。就我而言,这是真的。我猜我的团队要解决的下一个“想法”是“过程”中的差异。整个过程是相同的,但是由于每个“区域”的不同,流程会有所不同。那么,拥有一个通用的基本功能,并为每个州提供一个包含特定部分的独立插件,怎么样?公共语言可以在这里重用。插件可以在不同的级别上实现:在代码级别使用多态性,或者在组件级别为每个插件使用不同的微服务。这取决于你的情况。如果有一个共同的基本功能,每个州都有一个包含特定部分的独立插件,怎么样?公共语言可以在这里重用。插件可以在不同的级别上实现:在代码级别使用多态性,或者在组件级别为每个插件使用不同的微服务。这取决于你的情况。