DDD和数据导出系统

时间:2012-10-08 07:44:07

标签: domain-driven-design

我是DDD的初学者,面对架构方面的一点问题。

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

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

关于导出子系统,实现及其通用接口契约是否属于基础架构层?

2 个答案:

答案 0 :(得分:4)

我通常会采用简单的方法。

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

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

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

e.g。如果报告包含销售数据,那么日期,账单,订单等内容将在域中抽象地构建,而应用程序则涉及使用这些数据生成文档。

答案 1 :(得分:3)

既不是Application也不是Domain层或任何其他'layer'。 DDD不是分层架构。在此主题上搜索洋葱架构或端口和适配器模式。

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

您可能希望更进一步,使应用程序中的所有数据呈现由单独的组件处理。这是CQRS。