2014-09-01 99 views
0

说我有一个对象,对于两个不同的应用程序,大部分都有必要的属性等,因为这两个应用程序都需要使用它们。有可能10%的属性不能在一个应用中使用。将该对象(以及聚合/有界上下文作为共享内核?)共享还是复制存储的属性和数据更好?一个应用程序用于最终用户/活动,另一个应用程序用于管理用户/活动。DDD实体在两个应用程序之间共享

回答

3

一个实体通常不在BC之间共享。你可能有另一个BC在玩。你应该有一个BC,这个实体的记录系统。所有其他BC应该是下游,并且只包含数据的标识和相关位。通常,人们会使用事件驱动的体系结构来通知相关系统所涉实体状态的任何相关变化。

这也可能是你试图分裂一个单一的BC。也许关注事物的BC方面而不是技术/应用方面。

希望帮助:)

2

我们最近开发了涉及使用了很多常见的实体的几个模块的应用程序。当我们开发它们时,我们将这些公共实体移动到一个名为common-domain的项目中,然后让所有相关模块使用它。事实证明,这是一场灾难。

尽管我们最初发现了几个常见的属性,但我们发现我们如何为某些模块设计它们,而这些模块如何用于其他模块。改变共同域中的实体以适应一个模块的需要有时会破坏它们为其他模块工作的方式。我们没有使用测试驱动的方法,并找到了由此产生的错误。

从这个错误中学习,我们应该已经认识并确定了有界的上下文,并且在有界上下文中确定了实体及其相关属性。 “共同”实体应该根据有限上下文定义,以及该上下文所需的任何共享。一些属性一定会很常见,但由于它们是分开的有界上下文,所以它们必须在每个有界上下文的实体中声明。

我会进一步提及一个项目可以共享的地方。有界上下文中的每个实体都有自己的存储库。 “共同”实体可能共享相同的底层数据库表。每个BC的实体库都有责任检索相关列以返回适当的实体实例。

相关问题