在DDD中,我想知道什麼時候應該使用域名事件?是否有適合使用域名事件的情況推薦?是否只在最終一致可接受的情況下?何時使用域名事件?
比方說,在一個包含Product,Order,OrderLine的在線商店示例中,一個Order包含多個OrderLine。一個OrderLine與產品有1對1的關係,當我創建一個訂單時,同時我需要扣除產品中的可用金額。有2種方式,我知道:
在OrderService(應用服務):
- 創建一個新的訂單,插入數據庫
- 因爲,爲了各個訂單,獲得產品相關聯OrderLine,請致電Product.UpdateQuantity()
- 將所有產品保存到數據庫
- 注意:對我來說,應用程序服務看起來像這裏的大部分工作(創建訂單,獲取產品,更新p roduct),這是可以接受的嗎?
在OrderService:
- 創建一個新的訂單,插入數據庫
- 生成事件OrderCreated
- 事件處理程序觸發,調用Product.UpdateQuantity()
- 注意:產品數量不保證立即更新
在現實生活中,哪種方式更受青睞? 而在這兩種情況下,如何處理產品數量的併發更新?如果數量與用戶看結賬屏幕的時間不一致,通知用戶失敗?
非常感謝
「現實生活」和DDD屬於同一句話嗎?當我閱讀時,我喜歡那本書,但感覺就像是其中的一個想法。 – duffymo
哈哈,我沒有機會看到現實生活中的DDD應用程序,所以我不能說它們是否相互排斥,但即使它不是,我想有很多概念,我可以從中學習 –