DDD:用户定义的基础设施配置
DDD: User defined infrastructure configurations
我正在开发一个应用程序,并且正在转向具有以下层的 DDD(更具体地说是洋葱架构):
演示(分为 GUI 和 CLI)、基础设施、应用程序、域
域实体在 CLI 或 GUI 中呈现给用户,用户可以设置一系列不同的配置,这些配置保存在 JSON 文件中。一些配置用于持久性配置,例如是使用 JSON 文件还是数据库来使用本地文件存储。对于本地存储,用户可以在磁盘上设置默认保存位置。
向用户展示实体时,我还需要显示特定实体的 JSON 文件的保存位置(如果它已保存到磁盘)。
由于域中不应包含持久性主题,我想知道如何处理这些配置并将有关保存位置的信息从基础结构层传递到表示层。我的理解是Application Layer应该很薄,只包含服务,也不应该有任何关于持久化的细节。
是否可以在应用层创建一个基础结构层和表示层都可以使用的配置模型?
当然可以这样做(如果您碰巧打算利用一个框架,您会希望选择一个不强制执行此类限制的框架)。
DDD 通常建议不要这样做,因为在大多数情况下,这样的担忧与您要解决的问题无关。但在这种情况下,持久性似乎是您在域中建模的东西。
事实上,拥有一个带有自己的洋葱的持久性有界上下文并让其他有界上下文使用它(例如在它们的基础设施层中)可能是最有用的。
我正在开发一个应用程序,并且正在转向具有以下层的 DDD(更具体地说是洋葱架构):
演示(分为 GUI 和 CLI)、基础设施、应用程序、域
域实体在 CLI 或 GUI 中呈现给用户,用户可以设置一系列不同的配置,这些配置保存在 JSON 文件中。一些配置用于持久性配置,例如是使用 JSON 文件还是数据库来使用本地文件存储。对于本地存储,用户可以在磁盘上设置默认保存位置。
向用户展示实体时,我还需要显示特定实体的 JSON 文件的保存位置(如果它已保存到磁盘)。
由于域中不应包含持久性主题,我想知道如何处理这些配置并将有关保存位置的信息从基础结构层传递到表示层。我的理解是Application Layer应该很薄,只包含服务,也不应该有任何关于持久化的细节。
是否可以在应用层创建一个基础结构层和表示层都可以使用的配置模型?
当然可以这样做(如果您碰巧打算利用一个框架,您会希望选择一个不强制执行此类限制的框架)。
DDD 通常建议不要这样做,因为在大多数情况下,这样的担忧与您要解决的问题无关。但在这种情况下,持久性似乎是您在域中建模的东西。
事实上,拥有一个带有自己的洋葱的持久性有界上下文并让其他有界上下文使用它(例如在它们的基础设施层中)可能是最有用的。