RPC與RMI的區別

2022-10-11 01:51:13 字數 1487 閱讀 5755

一:rpc 遠端過程呼叫

rpc(remote procedure call protocol)遠端過程呼叫協議,通過網路從遠端計算機上請求呼叫某種服務。

一次rpc呼叫的過程大概有10步:

1.執行客戶端呼叫語句,傳送引數

2.呼叫本地系統傳送網路訊息

3.訊息傳送到遠端主機

4.伺服器得到訊息並取得引數 

5.根據呼叫請求以及引數執行遠端過程(服務)

6.執行過程完畢,將結果返回伺服器控制代碼

7.伺服器控制代碼返回結果,呼叫遠端主機的系統網路服務傳送結果

8.訊息傳回本地主機 

9.客戶端控制代碼由本地主機的網路服務接收訊息

10.客戶端接收到呼叫語句返回的結果資料

二:rmi 遠端方法呼叫

rmi:遠端方法呼叫(remote method invocation)。能夠讓在客戶端j**a虛擬機器上的物件像呼叫本地物件一樣呼叫服務端j**a 虛擬機器中的物件上的方法。

rmi遠端呼叫步驟:

1,客戶呼叫客戶端輔助物件stub上的方法

2,客戶端輔助物件stub打包呼叫資訊(變數,方法名),通過網路傳送給服務端輔助物件skeleton

3,服務端輔助物件skeleton將客戶端輔助物件傳送來的資訊解包,找出真正被呼叫的方法以及該方法所在物件

4,呼叫真正服務物件上的真正方法,並將結果返回給服務端輔助物件skeleton

5,服務端輔助物件將結果打包,傳送給客戶端輔助物件stub

6,客戶端輔助物件將返回值解包,返回給呼叫者

7,客戶獲得返回值

三:rpc與rmi的區別

1:方法呼叫方式不同:

rmi中是通過在客戶端的stub物件作為遠端介面進行遠端方法的呼叫每個遠端方法都具有方法簽名。如果乙個方法在伺服器上執行,但是沒有相匹配的簽名被新增到這個遠端介面(stub)上,那麼這個新方法就不能被rmi客戶方所呼叫

rpc中是通過網路服務協議向遠端主機傳送請求,請求包含了乙個引數集和乙個文字值,通常形成「classname.methodname(引數集)」的形式。rpc遠端主機就去搜尋與之相匹配的類和方法,找到後就執行方法並把結果編碼,通過網路協議發回。

2:適用語言範圍不同:

rmi只用於j**a;

rpc是網路服務協議,與作業系統和語言無關。

3:呼叫結果的返回形式不同:

j**a是物件導向的,所以rmi的呼叫結果可以是物件型別或者基本資料型別;

rmi的結果統一由外部資料表示 (external data representation, xdr) 語言表示,這種語言抽象了位元組序類和資料型別結構之間的差異。

RPC和RMI遠端呼叫

遠端呼叫使得呼叫遠端伺服器的物件 方法的方式就和呼叫本地物件 方法的方式差不多,因為我們通過網路程式設計把這些都隱藏起來了。遠端呼叫是分布式系統的基礎。遠端呼叫一般分為兩種,遠端過程呼叫 rpc 和遠端方法呼叫 rmi rpc屬於函式級別的遠端呼叫,其多是通過http傳輸資料,資料形式有xml js...

RPC與REST的區別

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

REST 與 RPC 的區別

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