我是DDD的初学者,在架构方面遇到了一些小问题。
我们的系统必须能够以各种格式(Excel、Word、PDF和其他更奇特的格式)导出业务数据。
在您看来,哪一层必须负责检索源数据、以目标格式导出它们以及为用户准备最终结果的整个过程?我混淆了域和应用程序的职责。
对于导出子系统,实现和它们的公共接口契约是否应该属于基础设施层?
发布于 2012-10-08 15:59:31
在可能的情况下,我通常采用简单的方法。
域代码实现了域的语言--名词、动词等。
应用程序代码使用这种语言创建诗歌。
因此,在您的示例中,输出的结构是应用程序关注的问题,而应用程序将讨论的位的结构(因为您没有提到它)将是域关注的问题。
例如,如果报告由销售数据组成,那么日期、账单、订单等内容将在域中抽象地构建,而应用程序将使用这些内容来生成文档。
发布于 2012-10-08 18:50:38
既不是应用程序层,也不是域层,也不是任何其他“层”。DDD不是分层架构。搜索洋葱架构或端口和适配器模式,以了解有关此主题的更多信息。
现在来看看你的问题的核心。您面临的问题是一个单独的有界上下文,应该转到系统的一个单独组件。让我们称其为报告。由于它只是一个表示问题,没有领域逻辑- DDD不适合它。只需制作一些SQL视图,使用NHibernate、LINQ2SQL、EF甚至纯DataReaders读取它们,然后使用生成器模式构建Word/任何文档。没有聚合、存储库、服务或任何其他DDD构建块。
您可能希望更进一步,使应用程序中的所有数据表示都由一个单独的组件处理。这是CQRS。
https://stackoverflow.com/questions/12777333
复制相似问题