CQRS - 是否允许从写入端调用读取端?

2023-12-19

我开始阅读有关 CQRS 的内容,但我有点困惑。

是否允许在写入端调用读取端来获取附加信息?

http://cqrs.nu/Faq/command-handlers http://cqrs.nu/Faq/command-handlers在这里他们说这是不允许的,但在 cqrs 旅程代码中我发现他们调用了一个服务“IPricingService”,该服务在内部使用 DAO 服务类。

那么我必须做什么才能在我的聚合根中获取更多信息?


CQRS Journey 不应被视为一本手册。这只是一些团队奋力争取 CQRS 的故事,并且遇到了仅使用 Microsoft 堆栈的所有限制。本质上,您不应该在命令处理程序或域逻辑中使用读取模型。但是您可以从客户端查询读取模型,以获取命令所需的数据并验证命令。

由于我对此答案有一些反对票,因此我需要指出,我所写的是该模式中的既定实践。读端都不会访问写端,写端也不会从读端获取数据。

然而,“客户”的定义可能是一个讨论的话题。例如,我不相信面向公众的 JS 浏览器应用程序是一个适当的“客户端”。相反,我会使用 REST API 层作为 CQRS 中的“客户端”,而 Web 应用程序将只是该客户端的 UI 层。在这种情况下,REST API 服务调用处理将是合法的读取方读取器,因为它需要验证 UI 层发送的所有内容以防止伪造并验证某些业务规则。当这项工作完成后,命令就会形成并发送到写入端。验证和其他一切都是同步的,命令处理是异步的。

更新:鉴于下面的一些分歧,我想指出Udi 2009 年的文章 http://udidahan.com/2009/12/09/clarified-cqrs/一般谈论 CQRS,特别是命令和验证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CQRS - 是否允许从写入端调用读取端? 的相关文章

  • 【转载】DDD中的 CQRS模式

    转载自 xff1a DDD 中的那些模式 CQRS 知乎 DDD 作为一种系统分析的方法论 xff0c 最大的问题是如何在项目中实践 而在实践过程中必然会面临许多的问题 xff0c 模式 是系统架构领域中一种常见的手段 xff0c 能够帮助
  • Akka 持久化查询事件流和 CQRS

    我正在尝试在我的 ES CQRS 架构中实现读取端 假设我有一个这样执着的演员 object UserWrite sealed trait UserEvent sealed trait State case object Uninitial
  • 没有使用 SimpleInjector APIv3 注册类型 ICommandHandler

    我一直在使用 SimpleInjector 并尝试正确注册所有命令处理程序 这是我的代码 CQRS cs public interface ICommand public interface ICommandDispatcher void
  • NEventStore 重播事件的问题

    我们正在使用 CQRS ES ES 是 NEventStore 以前称为 JOliver EventStore 我们在不同的命令中有 2 个聚合 第二个 AR 的投影取决于读取模型中第一个 AR 投影写入的数据 问题是 当我们运行软件时 一
  • CQRS - 是否允许从写入端调用读取端?

    我开始阅读有关 CQRS 的内容 但我有点困惑 是否允许在写入端调用读取端来获取附加信息 http cqrs nu Faq command handlers http cqrs nu Faq command handlers在这里他们说这是
  • 与旧系统的 CQRS

    我希望将一个具有清晰域模型的相对较新的基于 Web 的应用程序转换为更多 CQRS 风格的系统 我的新应用程序本质上是对现有旧系统的增强替代 我的组织中的现有系统共享一组通用数据库 这些数据库由整个公司孤岛中存在的无数应用程序 通过混沌方法
  • 微服务创建实体实现

    这是我概述的问题的后续问题here https stackoverflow com q 56622485 8586803 网关充当应用程序的入口点 来自客户端的每个请求都会发送到该应用程序 然后 网关将请求分配给负责的微服务 并处理身份验证
  • 订阅类别流,事件永远不会出现在订阅客户端中

    第一次使用获取事件存储 http geteventstore com阅读文档后 我遇到了一个问题 事件永远不会出现在我的订阅客户端上 由于我错过了一个配置步骤 这是可能的 拥有这个控制台应用程序客户端 public class EventS
  • DDD 和 CQRS:从单个命令处理程序使用多个存储库?

    简单电子商店的典型示例 假设用户将一些商品添加到购物篮并单击 结账 发出 创建订单 命令 现在 在实际创建状态为 预计付款 的订单记录以及数据库中相应的订单行之前 我们必须检查用户选择的商品是否仍然可用 也许某些商品在用户将其添加到购物篮时
  • 一笔交易中的多个聚合/存储库

    我有一个支付系统 如下所示 可以通过多张礼券进行支付 礼券随购买一起发放 客户可以使用此礼券进行日后购买 当通过礼券进行付款时 GiftCoupon 表中的UsedForPaymentID 列需要使用该PaymentID 进行更新 对于礼券
  • 使用 void/Task 响应注册 MediatR 管道

    我的命令 public class Command IRequest 我的处理程序 public class CommandHandler IAsyncRequestHandler
  • 使用 MediatR 时可以让一个处理程序调用另一个处理程序吗?

    或者这被认为是不好的做法还是什么 我有一个通知触发 4 5 个处理程序 这些处理程序依次调用数据库来检索数据 每个这些调用也可以单独调用 因此它们本身就是请求 处理程序 Thanks Jimmy Bogard mediatr 的作者 说你应
  • 使用 CQRS 和事件溯源时的唯一性验证

    我正在尝试使用事件源来实现我自己的 CQRS 基础设施 以更好地学习它 作为一个示例项目 我正在实现一个博客引擎 我知道它可能不是一个完美的选择 但我只想做一些真实的事情 我现在遇到的问题是验证 每个帖子都有一个shortUrl 以及sho
  • 在 DDD/CQRS 中,ReadModel 是否应该充当 ViewModel,如果不是,那么映射的责任在哪里?

    假设读取模型ProductCatalogueItem由聚合 写入模型构建 与写入模型分开存储 并包含每个可供销售的产品 并具有以下属性 basics product code name price number of available s
  • DDD 中哪一层应该包含查询

    我有一个简单的 DDD 服务 带有文章聚合根 我使用 MediatR 和 CQRS 来分离命令和查询 在 DDD 域中不应依赖于应用程序和基础设施层 我有一个存储库 IArticleRepository 用于从文章数据库中组合一些数据 我有
  • 使用 CQRS 的读取端实现方法

    我已经转移到积极使用 CQRS 事件源的项目 乍一看它是按照所有这些书籍和博客来实现的 但最后我意识到实现中到底有什么问题 Here is CQRS architecture 这张照片最初是我从here http cre8ivethough
  • CQRS 对于我的域是否正确?

    我正在对一个档案进行建模 它是视频点播系统的一部分 将存档想象成 Windows 资源管理器 其中多个用户可以创建文件夹 上传视频 重组文件夹等 有业务规则 权限 确定是否允许用户执行任务 即重命名文件夹 移动文件夹 查看文件夹等 我已将每
  • 命令调度程序和中介器设计模式有什么区别?

    最近 我了解了命令调度程序模式 它可以帮助将命令与我们基于域驱动设计方法和 CQRS 模式的项目中的命令处理程序解耦 不管怎样 我把它与中介者设计模式混淆了 罗伯特 哈维已经回答了 https softwareengineering sta
  • CQRS - 读取端的事件重播

    我读过几篇关于 CQRS 的博客 它们都解释说 在写入端 事件会持久保存在事件存储中 并且根据请求 事件将被检索并聚合重播 我的问题是为什么读取端不需要聚合事件重播 因为您的读取端不使用聚合 读取端实现为投影 它根据聚合发出的事件流计算当前
  • 如何在 CQRS 中处理基于集合的一致性验证?

    我有一个相当简单的域模型 涉及一系列Facility聚合根 鉴于我使用 CQRS 和事件总线来处理从域引发的事件 您如何处理集合的验证 例如 假设我有以下需求 Facility必须有一个唯一的名称 由于我在查询端使用最终一致的数据库 因此在

随机推荐

  • 如何清除文本文件内容c#

    我想要用这种方法清除文本文件内容 private void writeTextFile string filePath string text if File Exists filePath File Create filePath Clo
  • Promise es6 和 superagent

    我正在尝试将 es6 Promise 与 superagent 一起使用 我正在尝试调用一个包含超级代理请求的函数 Request post buildReq then res gt if res ok process res 这是包装 s
  • NHibernate 中的刷新

    这个问题有点愚蠢 但我仍然不明白处理冲洗的最佳方法 我正在迁移现有的代码库 其中包含很多如下代码 private void btnSave Click SaveForm ReloadList private void SaveForm va
  • 识别 C# 中的操作系统详细信息

    如何在 WPF 应用程序中使用 C 代码获取操作系统详细信息 The 环境 http msdn microsoft com en us library system environment aspx类提供特性 http msdn micro
  • 使用 Maven 执行 Ant 任务

    我正在尝试使用 Maven 执行一些使用 Ant 任务编写的测试 我生成了将任务导入 Maven 所需的文件 但无法执行它们 我的 POM 是这样定义的
  • 由于权限不足导致代码签名无效

    我试图在我的物理设备上运行一个应用程序 它开始在我的设备上构建 然后由于 无效的代码签名 不充分的权利或其配置文件尚未受到用户的明确信任 而崩溃 我已将我的 iPhone 和 Xcode 更新到最新版本 尝试清理构建并将运行方案构建配置编辑
  • 如何在不重新压缩 JPEG 的情况下删除 EXIF 数据? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我想从 JPEG 文件中删除 EXIF 信息 包括缩略图 元数据 相机信息 一切 但我不想重新压缩它 因为重新压缩 JPEG 会降低质
  • 请求 - 无法处理两个具有相同名称、不同域的 cookie

    我正在编写一个 Python 2 7 脚本 使用请求自动访问一个网站 该网站设置两个具有相同名称但不同域的 cookie 例如名称 mycookie 域 www example com 和 subdomain example com 我的客
  • 使用 python/PIL 的图像轮廓

    我有一张苹果的彩色照片 如何用 python PIL 只显示它的轮廓 内部白色 背景黑色 像这样的东西应该有效 from PIL import Image ImageFilter image Image open your image pn
  • user_pseudo_id 的计数与 Firebase 仪表板中显示的数字不同

    我正在使用 Firebase 并希望通过 BigQuery 计算每日活跃用户数 但数字与仪表板中显示的数字不同 我尝试了以下查询 SELECT count distinct user pseudo id as dau FROM xxxx e
  • 是否有不同类型的 NULL?

    这来自
  • 如何将 Java Pojo 转换为 Nashorn Json?

    我有一个 Java 对象 我想将其转换为 json 对象并传递给 Nashorn javascript 引擎 谷歌搜索这个问题的答案是非常困难的 有人可以告诉我该怎么做吗 我试过这个 ObjectMapper mapper new Obje
  • javascript正则表达式删除括号中的尾随数字

    我如何替换 追加something 22 字符串到something 使用某种匹配某物的表达式不是常量 它总是不同的 但部分 整数 总是相同的 干杯 EDIT 我发现这有点令人困惑 对我来说也是如此 这就是我的意思 我有一个字符串 一个词
  • 如何在 Android UI 中设置布局背景

    我是 Android 编程新手 我有一个带有一些的用户界面TextView and Button控制 如何在这些组件后面设置背景 我们称之为background png 在您的父布局元素中 例如线性布局或其他 只需添加android bac
  • 解释如何在 Rails 中利用 order 子句

    我很难理解这一部分是如何从这个网站关于 Rails SQL 注入 http rails sqli org resources works 在 ORDER BY 子句中利用 SQL 注入很棘手 但 CASE 语句可用于测试其他字段 将排序列切
  • 使用 Azure Active Directory 访问 Azure Function 时,Blazor 客户端出现 CORS 错误

    我已经尝试部署 Blazor PWA 两天了 到目前为止没有任何成功 如果有人知道我做错了什么 我将非常感激 你好 我可以自己解决大部分问题 但现在使用 AAD 遇到了 CORS 问题 这是我的项目设置 Blazor WebAssembly
  • 查找无序字谜对子串的数量

    我正在尝试解决以下问题 https www hackerrank com challenges sherlock and anagrams https www hackerrank com challenges sherlock and a
  • Web 应用程序编译错误 - ASP.NET 参考

    我当前的 Web 应用程序在本地和实时运行良好 我当前正在使用 Visual Studio 选项 添加 Web 部署项目 编译我的 Web 应用程序 以便所有后面的代码都编译到 DLL 中 有一个特定的构建错误我无法摆脱 错误 50 命名空
  • 为了清晰起见,重构嵌套 IF 语句[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想重构这个繁琐的方法以使其更具可读性 它有太多我喜欢的嵌套 IF 你会如何重构这个 public static void HandleUplo
  • CQRS - 是否允许从写入端调用读取端?

    我开始阅读有关 CQRS 的内容 但我有点困惑 是否允许在写入端调用读取端来获取附加信息 http cqrs nu Faq command handlers http cqrs nu Faq command handlers在这里他们说这是