01
介紹
Go 語言標準庫 net/rpc 默認採用 encoding/gob 包編解碼傳輸數據,gob 編解碼方式僅適用於 Go 應用,如果需要跨語言遠程調用,可以指定支持跨語言的其他編解碼方式,比如 protobuf,或使用 net/rpc 的子包 net/rpc/jsonrpc,它支持JSON-RPC 1.0,通過 json 格式傳輸數據。
02
Go 語言 net/rpc/jsonrpc 標準庫
jsonrpc 是基於 TCP 協議,不支持 HTTP 協議。jsonrpc 採用 JSON 編解碼傳輸數據,而不是採用 gob 編解碼方式。其他方面和 net/rpc 一樣,可以通過閱讀「Go 使用標準庫 net/rpc 包」了解相關內容。
03
net/rpc/jsonrpc 怎麼使用?
通過一個簡單的示例,我們演示 Go 語言標準庫 net/rpc/jsonrpc 的使用方法。
RPC 方法:
服務提供方定義一個可導出的 User 對象和一個符合 RPC 方法定義規則的 Register 方法。
服務提供方:
服務提供方註冊 user 對象,創建基於 TCP 協議的運行在單個連接上的 JOSN-RPC 伺服器。
服務調用方:
服務提供方註冊 user 對象後,服務調用方就可以調用 user 對象的 user.Register 方法。調用方法之前,先連接一個指定網絡協議和地址的 JSON-RPC 服務,返回一個新創建的客戶端。然後,使用客戶端調用 user.Register 方法,傳遞參數,等待返回結果。
04
總結
本文先介紹了 Go 語言標準庫 net/rpc/jsonrpc 的編解碼方式和功能。即使用 json 編解碼傳輸數據,提供跨語言遠程調用的功能。然後,通過一個簡單示例來演示了 net/rpc/jsonrpc 的使用方法。
推薦閱讀:
Go 使用標準庫 net/rpc 包