在DDD中编写几个有界上下文

时间:2014-05-09 23:32:48

标签: oop domain-driven-design

我们正在开发一个全面的域模型,包含跨越多个团队的7个(!)模型/有界上下文。我们还没有决定每个BC是否完全与其他BC断开连接(由上面的一层编排)或者是否要通过域事件进行通信。

正在开发的应用程序用于所有目的的SWT / Swing单线程应用程序,因此不需要在不同的BC之间进行奇特的分布式mumbo jumbo。

然而,一个很大的问题仍然存在:如何整合所有不同的模型?它应该是应用层来承担任务吗?如果是,并且由于在某些(希望很少)情况下,布线和顺序最终变得复杂,应用层是不是错误的地方呢?

例如,考虑使用组装非常复杂的合成创建人(AssembleHumanoid)的情况。我们有关于循环系统,骨骼结构,神经系统,通气系统,协调,免疫和心理系统以及传感器系统的有限背景(大声笑,这只是你想象的所有组成)。 p>

在应用层中连接所有内容感觉有点不对劲。显而易见的解决方案似乎是为编排事务创建第二个域层。我已经抬起头了,但Vernon的实施领域驱动设计没有直接触及这个问题(虽然他接近@ p531,“编写多个有界上下文”)。

您对此事有何看法?

1 个答案:

答案 0 :(得分:3)

我现在正在解决与你相同的问题。我在我的项目中的角色是建筑师,我们已经确定了5个BC。但我们是一个团队,并打算在一个大型应用程序中开发BC。所以我们的BC是一个更大的保险申请中的模块,每个BC都说自己无处不在的语言(条约,再保险,安全,医疗风险评估,溢价)。 但我已经给了很多想法,我想我们会通过域事件向其他BC发送更新。我们的客户端是一个MVC站点,它将使用我们的服务层。但我的意图是应用程序层具有这种粒度,因此它将设法为客户端执行主要任务,而不让客户端MVC项目与其他BC进行协调。

我们在BC之间使用了一些共享内核,但没有用于通信。我们使用DDD集成模式,我们通过Value Objects引用其他BC。我们还有像工厂一样的som BC,例如,安全BC正在为其他BC创建不同的用户角色。

但是当涉及到实际需要执行其他BC的某些最终任务的用例时,域事件就会被拯救。