gpt4 book ai didi

c# - 应该在哪个项目中使用事件溯源实时读取 DDD 中的模型(投影)?

转载 作者:行者123 更新时间:2023-12-04 02:47:24 25 4
gpt4 key购买 nike

在典型的 DDD 架构中,我们有 3 个项目:

域名 - 没有引用

申请 - 它引用了域项目

基础设施 - 它引用了域项目

(+ Web/UI 项目)

领域模型当然存在于领域项目中。但是在哪个项目中应该为读取数据库实时读取模型(投影),例如 MongoDb?

最佳答案

简短的回答,应用服务(应用层)和存储库(基础设施层)都知道 READ 模型。域层对底层持久性和加载机制保持透明。

长答案,确切的使用机制取决于您如何使用读取模型。您可以使用它们来构建域层中使用的对象,或者更常见的是,仅作为对 API 查询的响应。

第一种情况:使用读取模型作为域层中的对象

应用程序服务将 READ 模型从存储库加载到域实体中。将 READ 模型正确填充到域实体中是存储库的责任。存储库还负责将域实体转换为 WRITE 模型以持久保存在主数据库中。

当您进入领域模型时,对象已经在存储库的帮助下加载到内存中。所以领域层甚至不知道 READ 模型和 WRITE 模型;它只处理域实体。

第二种情况:使用读取模型存储对 API 查询的预构建响应

此场景是 READ 模型的更典型用法。通常,同一个实体/聚合有多个读取模型,因为它们是为特定 API 请求定制的。

在这种情况下,我们甚至不接触域层。应用服务接受请求,使用 READ 模型存储库加载对象,并向应用服务器返回响应。

关于c# - 应该在哪个项目中使用事件溯源实时读取 DDD 中的模型(投影)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56774811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com