0
A
回答
4
您通常会验证一个命令,而不是一个事件作为一个事件应是一种无法改变
在回答问题时,通常要看是什么过程的业务成本。例如,在你的例子中,订购已售罄物品的业务的成本是多少?可能很少 - 一封电子邮件称该商品缺货,估计需要多长时间。
在这种情况下,您可以对数据使用最终一致的读取模型,您可以在此处查询读取模型/缓存的库存水平,但接受某些订单可能会处理缺货的情况。
如果你有更严格的限制,那么你就必须执行它们,最好通过重塑你的集合体,或有交易和/或阻塞订购过程。
1
什么是验证它使用另一种模式的事件的选项?
A domain event
从业务的角度来看是一个重要的事情。这是过去发生的事情,所以不能改变。 在OO中,它通常表示为Value Object
,也就是说,一个不可变的对象,其中有趣的部分是它们的属性。
通常,这些Domain Events
是从Aggregate Root
(DDD专业术语)的操作中产生的。 Aggregate Root
的客户端是Application Service
(aka用例)。 Application Service
收到一个Command
对象并基于此,执行Aggregate Root
中的操作。
的验证可能在于原始验证,对象的验证和/或组成的对象的验证。然后负责执行此验证的对象应该是本身和/或具有验证中的特定目标的一些对象。
当增加一个购物车项目到购物车,应该有一个检查 如果该项目是不卖了没有
按照您的示例对象woulb是:
- 命令:
AddItemToShoppingCartCommand
。保存关于要添加的项目的信息,以及例如购物车标识符。 - 应用服务:
AddItemToShoppingCartService
。 - 总根:
ShoppingCartInventory
。我故意在名称中使用Inventory
以明确表示此Aggregate Root
满足不变量“...如果该项目尚未售罄。“
注:在我看来,它检查在Aggregate Root
库存不变,使得总太大我的建议是放宽这个不变的拥抱最终一致性,如果这一点。‘售罄’这是没有正常发生
相关问题
- 1. 使用其他手机验证插件进行电话验证
- 2. 使用证书或其他身份验证对web服务进行验证
- 3. Rails 3.2 - 基于其他模型标准进行验证
- 4. Grails Spring Security - 使用其他属性进行身份验证
- 5. 使用NancyFX进行模型验证
- 6. Codeigniter:使用JQuery验证空间和符号进行验证
- 7. CakePHP:在其他模型/在app_model.php访问模型验证银行编号
- 8. 使用StringLength验证属性进行模型验证
- 9. 使用jQuery验证插件进行数据类型验证
- 10. 使用验证服务进行验证
- 11. 查看某个型号的详细信息时,如何验证其他型号?
- 12. 如何使用Rails使用其他REST身份验证服务进行设计
- 13. 凡在验证其他车型
- 14. DataGrid行验证基于其他行
- 15. 验证行与其他行在cakephp
- 16. 使用JavaScript进行验证
- 17. 使用AJAX进行验证
- 18. 使用AWK进行验证
- 19. 使用LDAP进行验证
- 20. 使用GPG进行验证
- 21. 使用bindin进行验证
- 22. 使用jsoup进行验证
- 23. 使用jquery进行验证
- 24. 使用IDataErrorInfo进行验证
- 25. 使用Jquery进行验证?
- 26. 使用doctype进行验证
- 27. CakePHP使用其他模型验证和/或保存表单验证?
- 28. 使用ConfigurationValidator或其他验证程序验证Uri
- 29. 无其他验证的验证摘要
- 30. 使用AFNetworking进行SSL证书验证
事件采购意义上的事件无法验证,它们已经发生。 – guillaume31