在DDD中,我想知道何时应该使用域名事件?是否有适合使用域名事件的情况推荐?是否仅适用于最终一致可接受的情况?
假设在Product,Order,OrderLine的在线商店示例中,一个Order包含多个OrderLine。一个OrderLine与Product有一对一的关系,当我创建订单时,我需要扣除Product中可用的金额。我知道有两种方法:
在OrderService(应用程序服务)中:
在OrderService中:
在现实生活中,哪种方式更受欢迎? 在这两种情况下,如何处理产品数量的并发更新?如果数量与用户看到结帐屏幕的时间不一致,请通知用户失败?
非常感谢
答案 0 :(得分:0)
我认为您的决定需要围绕工作单位和ACID。
如果此服务拥有数据库并且代表用户访问此信息的唯一界面,则该方法需要是由服务作为一个事务管理的单个工作单元。
我不明白您提供的两个示例之间的区别。
当我在亚马逊上订购商品时,我希望我的订单的产品数量能够立即更新并与我所说的一致。我不知道他们的库存系统是否“稍后赶上”或者它是否成为我交易的一部分。我不希望我的订单失败,因为他们的库存系统有问题。我可以看到他们可能有哪些机制使我的订单持久且持久,并让库存系统稍后赶上(可能是一个队列)。但这是服务可能不需要知道的细节。