RPC與REST的區別

2021-07-14 04:45:58 字數 1642 閱讀 2711

**:

一:rpc 

rpc 即遠端過程呼叫, 很簡單的概念, 像呼叫本地服務(方法)一樣呼叫伺服器的服務(方法). 

通常的實現有 xml-rpc , json-rpc , 通訊方式基本相同, 所不同的只是傳輸資料的格式. 

(如果你已經習慣於xml繁重的尖括號,你不妨可以嘗試下更加輕型,高效,傳輸效率高的 json.) 

乙個簡單的通訊過程通常為: 

request

<?xml version="1.0"?>

member.get_username_by_idmethodname>

1i4>

value>

param>

params>

methodcall>

response

<?xml version="1.0"?>

zhu taostring>

value>

param>

params>

methodresponse>

向伺服器傳送乙個過程呼叫的方法及其引數, 得到伺服器返回的方法執行的結果.

2:rest 

rest 不是一種協議,它是一種架構, 一種 web service 能夠如果滿足 rest 的幾個條件, 通常就稱這個系統是 restful 的.

這裡提到的條件包括:

c/s結構 (這是internet服務的乙個基本特徵) 

無狀態 (很熟悉吧,呵呵) 

可以cache (想起了瀏覽器?) 

分層系統 (想起了無數的架構?) 

統一的介面 (如果這是可能的,程式設計師有福了, :d) 

code on demand(可選, 其實是一種擴充套件性的要求) 

看了這幾個特徵後,你想起了什麼?

你可能會破口而出: http.

我答: you got it!

http是www的最核心的協議, 它將簡單的分布於世界各個角落的資源都統一起來, 統一的位址, 簡單的方法, 和一定數量的表達方式.(你可能對這三點描述很模糊,請go ahead).

rest 的三個要素是 唯一的資源標識, 簡單的方法 (此處的方法是個抽象的概念), 一定的表達方式.

rest 是以 資源 為中心, 名詞即資源的位址, 動詞即施加於名詞上的一些有限操作, 表達是對各種資源形態的抽象.

以http為例, 名詞即為uri(統一資源標識), 動詞包括post, get, put, delete等(還有其它不常用的2個,所以 整個動詞集合是有限的), 資源的形態(如text, html, image, pdf等)

三:rpc與rest的區別 

如果你想只記住一點,那麼就請記住 rpc是以動詞為中心的, rest是以名詞為中心的, 此處的 動詞指的是一些方法, 名詞是指資源.

你會發現,以動詞為中心,意味著,當你要需要加入新功能時,你必須要新增更多的動詞, 這時候伺服器端需要實現 相應的動詞(方法), 客戶端需要知道這個新的動詞並進行呼叫.

至於其它的區別,如對實現語言的依賴, 耦合性等,這些都是上面提到的這個根本區別所衍生的.

讓我們回到引入部分的2個問題. 當你每天使用http衝浪時,你都在使用 rest 與遠端的伺服器進行親密接觸. 當你使用gtalk和同事朋友溝通時,你則是在享受著 rpc 的便利.

REST 與 RPC 的區別

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

RPC與REST的區別

rpc是以動詞為中心的,rest是以名詞為中心的,此處的 動詞指的是一些方法,名詞是指資源.你會發現,以動詞為中心,意味著,當你要需要加入新功能時,你必須要新增更多的動詞,這時候伺服器端需要實現 相應的動詞 方法 客戶端需要知道這個新的動詞並進行呼叫.至於其它的區別,如對實現語言的依賴,耦合性等,這...

遠端呼叫RPC與Rest區別

一 rest與rpc概念 什麼是rest rest是一種架構風格,指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程式或設計就是 restful。rest規範把所有內容都視為資源,網路上一切皆資源。rest並沒有創造新的技術,元件或服務,只是使用web的現有特徵和能力。可以完全通過http...