与应用程序行为相关的组件在哪里适合DDD ?



如果我正在使用DDD开发应用程序,那么基础设施和行为组件应该放在哪里?例如,用户管理,用户特定配置,权限,应用程序菜单等。

这些组件实际上与我的领域所满足的业务需求无关,但它们仍然是我的应用程序的必需元素。其中许多还需要持久性。

将非域组件与项目中的域一起使用是很正常的-毕竟并非所有内容都是面向业务域的。它们的归属实际上取决于你如何构建你的解决方案。在大多数情况下,我倾向于遵循洋葱架构,所以我的所有逻辑都是由Application Services提供的,不管它是面向域的还是面向非域的。

如果您发现您的用例很少需要来自与应用程序特定的核心域的信息,那么您可能可以将其拆分为单独的数据库。通过应用程序服务层访问这些信息,因为这一层是用来满足您的应用程序需求的。如果这包括用户配置文件持久化等,那也没问题。

但是您要记住,如果您遇到基础设施故障,并且您想要回滚一些事务日志或数据库备份,您可能希望回滚所有持久化的数据。这样这些域共享一个数据库就容易多了。利弊——总是妥协……

如果我知道这个应用程序将与它的环境有轻微的交互,我会把它放在一个数据库中,让应用程序服务层与客户端交互。

如果我知道会有几个应用程序/客户端,我可能会考虑拆分数据库,以便Webb应用程序的用户细节存储在单独的数据库中。很难说,因为我对所有的需求都没有全面的了解。

/Magnus

最新更新