【发布时间】:2019-09-25 16:21:24
【问题描述】:
我尝试使用 CQRS 方法来实现 DDD 服务。我没有使用事件溯源。 所以我有 3 层:应用程序、基础架构和域。很多人说可以绕过域进行查询,没关系。例如,假设由于性能问题,这对我来说是必要的。
在对持久性无知之后,我在基础架构中实现了存储库。正如我在 DDD 和书籍的所有实现中看到的那样,基础设施不应该依赖于应用层。
那么我需要从存储库返回什么?如果 DTO(读取模型,查看模型,实际上没关系)是应用程序关注的问题。将它们放置在基础设施层上会形成从应用程序到基础设施的循环依赖,反之亦然。但是实现查询逻辑(如果我使用 Orm 通过编写原始 SQL 进行查询)是一种不好的方法,因为为此我们在 Infrastructure 中创建了存储库(这就是 https://github.com/dotnet-architecture/eShopOnContainers 的方式)。
另一种方法是从存储库加载聚合,然后将它们转换为 DTO,但由于我的虚构问题,这是不可能的。那么如何以正确的方式处理呢? (这就是https://github.com/JasonGT/NorthwindTraders/的方式)
【问题讨论】:
标签: architecture dependencies domain-driven-design cqrs