gpt4 book ai didi

cqrs - CQRS 中的验证和错误修复

转载 作者:行者123 更新时间:2023-12-04 15:27:26 36 4
gpt4 key购买 nike

我了解了 CQRS 的一般概念,但是当涉及到超越示例代码和幻灯片以处理现实世界问题时,我有一些问题。

  • 验证
    当您需要对涉及检查数据库值的命令进行验证时,您会怎么做?
    注册一项服务,我必须输入一个唯一的电子邮件地址。我听到的一个论点是,用户不太可能输入重复的电子邮件地址,因此只需在处理命令时处理它并向他们发送一封电子邮件,说“对不起”,或者可能建议他们重置密码。因此,此过程避免了为了验证而使用 readmodel。但是如何处理命令处理程序中的重复情况?你怎么知道 THEN 是重复的?检查读取模型?您不妨一开始就使用它以获得更好的可用性。
  • 功能更改/修复错误
    当您需要更改命令的工作方式或修复错误时会发生什么?在 append-only 哲学中,我如何处理所有旧命令和命令处理程序?我不能将它们重命名为 _legacy 并将它们隐藏起来,否则我的事件反序列化将不起作用。有什么优雅的解决方案来处理这个问题?

  • 谢谢

    最佳答案

  • http://codebetter.com/blogs/gregyoung/archive/2010/08/12/eventual-consistency-and-set-validation.aspx以及关于这个主题的各种讨论的 cqrs 邮件列表。
  • cqrs 邮件列表中也讨论了事件版本控制(不需要与事件版本控制具有相同意义的命令版本控制)。重播事件以获取聚合的当前状态,而不是命令。通过这种方式,您的功能可以发展。没有办法改变过去,但有办法改变现在/ future 。在奇怪的情况下,您必须以不同的方式开始跟踪状态,提供明确的命令。对于事件的新属性,只需像为新数据库列提供默认值即可。如果这些新值基于已经存在的状态,则建模一个显式命令以预先计算它们。优点是您可以异步执行此操作,而数据库升级也迫使您更改代码。最好在 cqrs 邮件列表中询问如何工作。
    一个警告 !不要太轻率地处理事件溯源。你可以只用 CQRS。我看到人们在大部分时间 CQRS 都可以使用时切换到 CQRS+ES。

  • 因此,请访问 groups.google.com/group/dddcqrs 并获得帮助。另一个有用的资源是 cqrsinfo.com

    关于cqrs - CQRS 中的验证和错误修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840878/

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