文章出處

Websocket Application Messaging Protocol 協議:https://github.com/wamp-proto/wamp-proto 

1. 基礎檔案

引入:

WAMP協議是一種建立在Websocket之上可以進行publish&subscribe和rpc的通信協議。它實現了類似ZeroMQ中的pub&sub通信模式,同時將這種模式用于傳統的rpc通信,較好地解耦了通信端點之間的直接聯系。

基礎概念:

broker:pub&sub通信模式中的中間件。

dealer:rpc中caller&callee通信的中間件。

router:router其實就是broker和dealer的結合體。

realm:realm為router中的一個活動空間,client之間通信以realm為活動區間。

client:通信實體,消息發布者/訂閱者,接口調用者/實現者。

peer:client或者router。

role:peer所扮演的角色。

topic:pub&sub主題,使用uri格式表達。

procedure:rpc的接口地址,同樣使用uri格式來表達。

通信模型:

(specification的這幅圖說明了一切)

5361433.png

https://github.com/Code-Sharp/WampSharp 實現了 The WebSocket ProtocolThe WebSocket Application Messaging Protocol (WAMP) 協議。

特性:

  • 支持WebSocket RFC6455和WAMP V1/v2
  • 很好的符合標準
  • 高性能異步設計
  • 易于使用的API
Client端

Components 的概念,就是組件,是RPC 的調用和被調用方,也可以是 PubSub的發布和訂閱方,四種角色都是組件,在這個前提下寫應用code。

RPC模型

3個角色 Caller, Callee, Dealer

  • Caller(調用者) 使用url和參數調用遠程接口, Callee拿到參數去執行,然后返回結果
  • Callee 首先會注冊調用到 DealerCaller的調用首先到 Dealer, Dealer 會把 Caller 的調用路由到對應的 Callee,然后把Callee的結果,返回給Caller.
  • CallerCallee 會跑應用代碼,Dealer 會做RPC的通用路由。

RPC模型主要有個兩個步驟,注冊程序,調用程序。

現在問題是,我寫好了RPC的程序,怎么注冊到router里面呢?是在WampSharp中自動生成,還是要手動改配置文件等?

其實都不是,都是由 Components自己去注冊,其他Componets來自己使用。具體的操作類似 Callee程序連接 crossbar, 然后注冊自己能給別人提供的API,然后Caller 連接 Router crossbario 調用程序,如果 Callee 掉線了,那么 Caller 也就無法調用了。

PubSub 模型

有3個角色 Publisher, Subscriber, Broker

Publiser(發布者)提供 url和對應的 payload, Subscribers 訂閱者可以接收到發布者的信息。Broker就是提供發布和訂閱的場所。跟我們大多數的消息隊列中提供的發布訂閱模式類似.

總結:

WAMP引入的router可以使得后端接口無縫更新,另外realm使得后端接口只暴露功能子集給前端。pub&sub也可以很方便地進行消息多播。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()