當我有點困惑在使用域中的事件來構建模型讀取系統中的流動。特別是,我們如何處理用戶期望數據(及其視圖)在完成命令時發生更改的事實,但是由於我們的系統體系結構(非阻塞調用發佈事件),實際數據庫可能不會在頁面重新加載?在查看顯示的變化使用CQRS和DDD與域事件與ServiceBus
我希望用活動和服務總線CQRS更內嵌移動我們的一個系統的設計。
比方說,我的流轉這樣:
用戶點擊查看按鈕執行從他們的帳戶刪除付款方式的任務。
控制器調用PaymentMethodRemovalService並將其傳遞給accountId & paymentMethodId。
控制器採用AccountRepository檢索帳戶,並呼籲account.RemovePaymentMethod(ID)
帳戶驗證可能出現的操作和發佈事件PaymentMethodRemovedMessage(帳戶,paymentMethodId)
由於事件發佈是異步的,我們現在必須從服務器返回並返回控制器視圖 - ,但我們的實際數據尚未更新!
處理程序,IHandle < PaymentMethodRemovedMessage>,聽到該事件,並從DB
所以消除了實際行,什麼是一個人做的?
我可以簡單地說,刪除顯示付款方式的div。這可能適用於AJAX場景,但如果我使用Post-Redirect-Get來支持非JavaScript客戶端,該怎麼辦?然後,我會在我更新之前觸發我的Get並從事物的Query側讀取數據。
難道我只是顯示一個通知說,他們的要求刪除付款方式已提交? (這似乎不友好,對於提交訂單是有意義的,但不適用於改變地址)。
有沒有辦法調和實現變化解耦異步事件和展示反映其電流變化的用戶數據?
編輯:我的問題是非常相似CQRS, DDD synching reporting database我不得不說,考慮到那裏,也提到了這裏的答案,有一點異味,以它的 - 爭論的UI顯示的更新這是帶外與可以這麼說,讀數據庫。我希望有更清潔的東西。