RPC 和Rest

RPC

RPC 遠程方法調用(Remote Procedure Call)就是像調用本地方法一樣調用遠程方法。

RPC框架要做到的最基本的三件事:

1、服務端如何確定客户端要調用的函數;

在遠程調用中,客户端和服務端分別維護一個【ID->函數】的對應表, ID在所有進程中都是唯一確定的。客户端在做遠程過程調用時,附上這個ID,服務端通過查表,來確定客户端需要調用的函數,然後執行相應函數的代碼。

2、如何進行序列化和反序列化;

客户端和服務端交互時將參數或結果轉化為字節流在網絡中傳輸,那麼數據轉化為字節流的或者將字節流轉換成能讀取的固定格式時就需要進行序列化和反序列化,序列化和反序列化的速度也會影響遠程調用的效率。

3、如何進行網絡傳輸(選擇何種網絡協議);

多數RPC框架選擇TCP作為傳輸協議,也有部分選擇HTTP。如gRPC使用HTTP2。不同的協議各有利弊。TCP更加高效,而HTTP在實際應用中更加的靈活。

REST

REST是一種架構風格,指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。REST規範把所有內容都視為資源,網絡上一切皆資源。

REST並沒有創造新的技術,組件或服務,只是使用Web的現有特徵和能力。 可以完全通過HTTP協議實現,使用 HTTP 協議處理數據通信。REST架構對資源的操作包括獲取、創建、修改和刪除資源的操作正好對應HTTP協議提供的GET、POST、PUT和DELETE方法。

REST與RPC比較

Windows RPC回調_Windows RPC回調


 

Windows RPC回調_REST_02

建議

REST調用及測試都很方便,RPC就顯得有點繁瑣,但是RPC的效率是毋庸置疑的,所以建議在多系統之間的內部調用採用RPC。對外提供的服務,Rest更加合適。