當我們必須將推送更新功能添加到基於CQRS的系統時,似乎有意義讓「讀取」模型負責管理這些推送消息。當使用長輪詢和服務器事件時(大多數是單向的),這很有意義CQRS和WebSockets
但WebSockets是雙向持久通道。這是一個已經建立的連接,可用於獲取推送更新和發送命令。問題是WebSocket連接由於減少了延遲和狀態而變得非常方便,因爲很多事情都像自動完成搜索框一樣。乍一看,從技術角度來看,當已經有一個可用的通道就緒並準備就緒時,使用另一個端點(即:HTTP POST接收器)是沒有道理的。
哪裏可以找到啓用WebSocket端點的正確位置?
閱讀模式:是有道理的推送更新客戶端和像自動完成搜索框解答問題,但如果它接受「寫」,那就已經閱讀並在同一個地方更新模型試。
更新模型:接受客戶端輸入是有意義的。將推送更新發送到客戶端是有道理的,因爲它們是由其他客戶端輸入觸發的。但是對於搜索自動完成搜索等請求響應的東西是沒有意義的。
那麼你在那個項目中提到你是如何結束髮送命令的?通過不同的渠道? – vtortola 2015-02-12 00:27:58
我們通過WebSocket發送它們作爲基本的RPC。套接字上的一個自定義協議允許多個命令,查詢和可觀察的查詢一次執行。 – 2015-02-12 02:03:50
好的,你在哪裏放置了端點?在閱讀模型或更新模型中? – vtortola 2015-02-12 15:50:28