【问题标题】:DDD: User defined infrastructure configurationsDDD:用户定义的基础架构配置
【发布时间】:2022-01-05 20:01:54
【问题描述】:

我正在开发一个应用程序,并正在迁移到具有以下层的 DDD(更具体地说是 Onion 架构): 演示文稿(分为 GUI 和 CLI)、基础架构、应用程序、域

域实体在 CLI 或 GUI 中呈现给用户,用户可以设置一系列不同的配置,这些配置保存在 JSON 文件中。一些配置用于持久性配置,例如是使用 JSON 文件还是数据库来使用本地文件存储。对于本地存储,用户可以在磁盘上设置默认保存位置。

在向用户展示实体时,如果将特定实体保存到磁盘,我还需要显示 JSON 文件的保存位置。

由于域中不应包含持久性主题,我想知道如何处理这些配置并将有关保存位置的信息从基础设施层传递到表示层。我的理解是应用层应该很薄,只包含服务,也不应该有任何关于持久性的细节。

是否可以在应用层中创建一个基础设施层和表示层都可以使用的配置模型?

【问题讨论】:

    标签: configuration domain-driven-design


    【解决方案1】:

    当然可以这样做(如果您碰巧计划利用某个框架,您会想要选择一个不强制执行此类限制的框架)。

    DDD 通常建议不要这样做,因为在大多数情况下,此类问题与您要解决的问题无关。但在这种情况下,持久性似乎是您在域中建模的东西。

    实际上,拥有一个带有自己的洋葱的持久性有界上下文并让其他有界上下文使用它(例如在它们的基础设施层中)可能是最有用的。

    【讨论】:

    • 为了强化这一点,DDD 是为了确保您的域之外的东西不会污染它,但是如果您的域是关于持久性、加密、安全性等的,那么这些东西会很自然地得到在域中建模。所以基本上,你很可能会在域中对持久性配置进行建模,但这些配置的持久性可能会被抽象掉,因为域并不关心它是如何完成的。
    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 2016-08-06
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多