幾種 系統內溝通 的方式
用 ros 的名詞:topic, service, actionlib
1. topic 方式,有兩個習慣模式
eventbus: event listen/event raise
topic: publish/subscribe
兩者極為相似,也常常被當成一樣的東西。依我的定義,其中不同的地方是:
topic 在系統中,幾乎只有單程,沒有去與回的對應。接收方不需要與發送方互動時使用。也可不理會重覆傳送的問題。
eventbus 在系統中,有可能會存在著事件去與回的處理,每次事件會在乎重覆傳送的判定問題。
但因為這兩種也都可以用簡單程式方式解決掉彼此的差異,所以視為一樣也沒有什麼問題。
2. service 方式
也就是 http 採用的模式,也就是 request/response。必定由 client 發起 request,由 server 送回 response。
3. actionlib 方式
由 client 設定 goal,server 定期或定時回報 progress ,當最後結束的時候回傳 result 的模式。在進行的過程中,還可以 cancel 中斷執行以及查看 status。
這種模式也可由前兩種組合, request/response + event 來做到。流程稍有不同。
client 送出 request,server 回應 response 是否執行,然後由 server 發送 event 來通知 client 進度與結果。
沒有留言:
張貼留言