如果我使用DDD开发应用程序,那么基础架构和行为组件在哪里?例如,用户管理,用户特定配置,权限,应用程序菜单等
这些组件实际上与我的域已满足的业务需求无关,但它们仍然是我的应用程序的必需元素。他们中的许多人也需要坚持不懈。
答案 0 :(得分:1)
在项目中使用非域组件以及域是非常正常的 - 毕竟不是所有内容都是面向业务域的。它们所属的实际取决于您构建解决方案的方式。在大多数情况下,我倾向于遵循Onion Architecture,因此我的所有逻辑都由 Application Services 提供,无论它是域还是非域。
答案 1 :(得分:1)
如果您发现您的用例很少需要来自您的核心域加入特定于应用程序的信息,您可以将其拆分为单独的数据库。通过Application Service层访问此信息,因为该层可以满足您的应用程序需求。如果这包括用户配置文件持久性等,那很好。
但是您还记得,如果您遇到基础架构故障并且想要使用某些事务日志或数据库备份进行回滚,则可能需要对所有持久数据进行回滚支持。那么这些域共享数据库就更容易了。利弊 - 总是妥协......
如果我知道这个应用程序与它的环境有轻微的交互,我会把它放在一个数据库中,让应用程序服务层与客户端进行交互。
如果我知道会有多个应用程序/客户端,我可能会考虑拆分数据库,以便将Webb应用程序用户细节存储在单独的数据库中。很难说,因为我没有对所有要求进行概述。
/马格努斯