DDD和数据导出系统

Jo *_*ria 5 domain-driven-design

我是 DDD 的初学者,在架构方面遇到了一个小问题。

我们的系统必须能够以各种格式(Excel、Word、PDF 和其他更奇特的格式)导出业务数据。

在您看来,哪一层必须负责检索源数据、以目标格式导出它们并准备最终结果给用户的整个过程?我在域和应用程序职责之间感到困惑。

关于导出子系统,实现和它们的通用接口契约是否应该属于基础设施层?

Pre*_*gha 5

我通常在可能的情况下采用简单的方法。

域代码实现了域的语言 - 名词、动词等。

应用程序代码使用这种语言创作诗歌。

因此,在您的示例中,输出的构造是应用程序关注的问题,而应用程序将要讨论的位的构造(因为您没有提及它)将是域关注的问题。

例如,如果报告包含销售数据,那么日期、账单、订单等内容将在域中抽象构建,而应用程序将关注使用这些数据生成文档。


Bar*_*low 5

既不是应用层也不是领域层或任何其他“层”。DDD 不是分层架构。搜索有关此主题的 mor 的洋葱架构或端口和适配器模式。

现在到你问题的核心。您面临的问题是一个单独的有界上下文,应该转到系统的一个单独组件。让我们称之为报告。由于这只是一个表示问题,没有域逻辑 - DDD 不适合它。只需创建一些 SQL 视图,使用 NHibernate、LINQ2SQL、EF 甚至普通 DataReader 读取它们,然后使用 Builder 模式构建 Word/任何文档。没有聚合、存储库、服务或任何其他 DDD 构建块。

您可能希望更进一步,让应用程序中的所有数据表示都由单独的组件处理。那就是CQRS。