2018年12月24日 星期一

[心得]幾種 系統內溝通 的方式

幾種 系統內溝通 的方式

用 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 進度與結果。

沒有留言:

張貼留言