Remote Procedure Call
21 Nov 2022rpc
什麼是 RPC (remote procedure call) ?
跨越了 OSI 模型中的傳輸層與應用層的遠程調用方式,在 client-server 的概念下,使雙方可以向調用本地服務一樣調用遠程服務。
簡單整理幾種常見的RPC
SOAP
- 全名: Simple Object Access Protocol
- 雖然名字有 sample,但其實有點麻煩,需要建立 XML 檔案來與其他電腦溝通或呼叫
- 依賴於標準協議如 HTTP、SMTP,但這些協議所有作業系統都支援
REST
- 全名:Representational State Transfer
- 和 SOAP 一樣,依賴標準協議 HTTP 來和其他服務溝通,然而在資料格式上比較彈性,可以使用JSON
JSON-RPC
- 使用 JSON 格式
- 格式相對 REST 與 SOAP 自由
GRPC
- 和 REST 與 SOAP 相同,使用 HTTP 作為傳輸層的協議
- 不像 REST 有定義好的 GET 和 PUT 等,開發者可以定義任何類型的 function call
- 調用遠程的服務對 client 和 server 來說都像是在本地調用,避免了遠程調用產生的編碼複雜性。這個能力使 GRPC 在需要大量遠程調用的環境很流行
- 跑得快
GraphQL
- 做得像 Query Language 一樣
- 可以清楚定義想取得的資料,精準拿取想要的資料
Thrift
- 可以跨語言使用