RPC與REST的異同

2021-10-09 15:46:09 字數 2387 閱讀 4906

層數

名稱說明

1應用層

定義了用於在網路中進行通訊和傳輸資料的介面

2表示層

定義不同的系統中資料的傳輸格式,編碼和解碼規範等

3會話層

管理使用者的會話,控制使用者間邏輯連線的建立和中斷

4傳輸層

管理網路中的端到端的資料傳輸

5網路層

定義網路裝置間如何傳輸資料

6鏈路層

將上面的網路層的資料報封裝成資料幀,便於物理層傳輸

7物理層

傳輸二進位制資料

實際應用過程中,五層協議結構裡面是沒有表示層和會話層的。應該說它們和應用層合併了。我們應該將重點放在應用層和傳輸層這兩個層面,因為rpc主要是基於tcp/ip協議(傳輸層協議),http主要是基於http協議(應用層協議)。

rest即表述性狀態傳遞(representational state transfer,簡稱rest),是一種軟體架構風格。rest通過http協議定義的通用動詞方法(get、put、delete、post) ,以uri對網路資源進行唯一標識,響應端根據請求端的不同需求,通過無狀態通訊,對其請求的資源進行表述。

rest架構的主要原則:

網路上的所有事物都被抽象為資源

每個資源都有乙個唯一的資源識別符號

同乙個資源具有多種表現形式(xml,json等)

對資源的各種操作不會改變資源識別符號

所有的操作都是無狀態的

其中表述性狀態,是指(在某個瞬間狀態的)資源資料的快照,包括資源資料的內容、表述格式(xml、json)等資訊。

其中無狀態通訊,是指服務端(響應端)不儲存任何與特定http請求相關的資源,應用狀態必須由請求方在請求過程中提供。要求在網路通訊過程中,任意乙個web請求必須與其他請求隔離,當請求端提出請求時,請求本身包含了響應端為響應這一請求所需的全部資訊。

rest使用http+uri+xml /json 的技術來實現其api要求的架構風格:http協議和uri用於統一介面和定位資源,文字、二進位製流、xml、json等格式用來作為資源的表述。

remote procedure call,遠端過程呼叫,就是像呼叫本地方法一樣呼叫遠端方法。rpc架構圖:

rpc架構分為三部分:

rpc框架包含4個核心的元件,分別是client ,server,client stub以及server stub,這個stub可以理解為存根

服務端如何確定客戶端要呼叫的函式

在遠端呼叫中,客戶端和服務端分別維護乙個【id->函式】的對應表,id在所有程序中都是唯一確定的。客戶端在做遠端過程呼叫時,附上這個id,服務端通過查表,來確定客戶端需要呼叫的函式,然後執行相應函式的**。

如何進行序列化和反序列化

客戶端和服務端互動時將引數或結果轉化為位元組流在網路中傳輸,那麼資料轉化為位元組流的或者將位元組流轉換成能讀取的固定格式時就需要進行序列化和反序列化,序列化和反序列化的速度也會影響遠端呼叫的效率。

如何進行網路傳輸

多數rpc框架選擇tcp作為傳輸協議,也有部分選擇http。如grpc使用http2。不同的協議各有利弊。tcp更加高效,而http在實際應用中更加的靈活

rpc:所謂的遠端過程呼叫 (面向方法)

rest:所謂的 representational state transfer (面向資源)

rpc 即遠端過程呼叫, 很簡單的概念, 像呼叫本地服務(方法)一樣呼叫伺服器的服務(方法)。通常的實現有 xml-rpc , json-rpc , 通訊方式基本相同, 所不同的只是傳輸資料的格式

rest 的三個要素是 唯一的資源標識, 簡單的方法 (此處的方法是個抽象的概念),一定的表達方式。重要的特性:無狀態

比較項rest

rpc通訊協議

http協議

一般使用tcp協議效能低

高靈活性高低

從使用方面看,http介面只關注服務提供方(服務端),對於客戶端怎麼呼叫,呼叫方式怎樣並不關心,通常情況下,客戶端使用http方式進行呼叫時,只要將內容進行傳輸即可,這樣客戶端在使用時,需要更關注網路方面的傳輸,比較不適用與業務方面的開發;(restful是服務端把方法寫好,客戶端通過http方式呼叫,直接定位到方法上面去。)

而rpc服務則需要客戶端介面與服務端保持一致,服務端提供乙個方法,客戶端通過介面直接發起呼叫,業務開發人員僅需要關注業務方法的呼叫即可,不再關注網路傳輸的細節,在開發上更為高效。(prc是服務端提供好方法給客戶端呼叫。定位到類,然後通過類去呼叫方法。)

RPC與REST的區別

一 rpc rpc 即遠端過程呼叫,很簡單的概念,像呼叫本地服務 方法 一樣呼叫伺服器的服務 方法 通常的實現有 xml rpc json rpc 通訊方式基本相同,所不同的只是傳輸資料的格式.如果你已經習慣於xml繁重的尖括號,你不妨可以嘗試下更加輕型,高效,傳輸效率高的 json.乙個簡單的通訊...

REST 與 RPC 的區別

為什麼寫這篇文章,前段時間一位同學問到這個問題,介紹了個大致,回頭後又去網上自我補充了哈,但是總是感覺不是那麼完美,於是此篇文章便產生了,如果有不到之處歡迎指正。一 rpc 簡介 rpc remote procedure call,rpc 遠端過程呼叫,它是一種通過網路從遠端電腦程式上請求服務,而不...

RPC與REST的差別

一 rpc rpc 即遠端過程呼叫,非常easy的概念,像呼叫本地服務 方法 一樣呼叫server的服務 方法 通常的實現有 xml rpc json rpc 通訊方式基本同樣,所不同的僅僅是資料傳輸的格式.假設你已經習慣於xml繁重的尖括號,你最好還是能夠嘗試下更加輕型,高效,傳輸效率高的 jso...