【问题标题】:Where do application behavior related componenets fit in with DDD?与应用程序行为相关的组件在哪里适合 DDD?
【发布时间】:2011-11-14 02:28:45
【问题描述】:

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

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

【问题讨论】:

  • 我会告诉你他们不属于哪里:域。

标签: domain-driven-design


【解决方案1】:

在您的项目中同时拥有非域组件和域是很正常的——毕竟并非所有东西都是面向业务域的。它们所属的位置实际上取决于您如何构建解决方案。在大多数情况下,我倾向于关注Onion Architecture,所以我的所有逻辑都由Application Services 提供,无论它是面向领域的还是非面向领域的。

【讨论】:

  • 我是否可以正确假设这些应用程序基础结构组件虽然通过与域相关组件相同的应用程序服务访问,但不遵循 DDD 原则?至于是由聚合根、实体和值对象构成的吗?
  • 是的,这正是我的意思。当然,这些实际上是业务领域问题的情况除外 - 但这种情况非常罕见。
【解决方案2】:

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

但您记得,如果您遇到基础设施故障并且想要回滚某些事务日志或数据库备份,您可能希望回滚所有持久数据。因此,让这些域共享一个数据库会更容易。利弊 - 总是妥协...

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

如果我知道会有多个应用程序/客户端,我可能会考虑拆分数据库,以便将 Webb 应用程序用户详细信息存储在单独的数据库中。很难说,因为我不了解所有要求。

/马格纳斯

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2011-06-06
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多