遠程過程調用RPC簡介

產生動因:

1、開發基於SOCKET的網絡軟件非常複雜(如:FTP、TELNET),2、位於不同機器上的軟件互操作困難(如:連接管理、異構)。從而導致RPC(Remote Procedure Calling )的產生。

工作原理:

以對某銀行帳戶的一個存款過程爲例:

 

RPC1調用過程:

RPC2 

如上圖所示,共分爲如下幾步:

1)客戶按本地調用的方式直接調用本地的客戶指代,客戶指代具有與服務器相同的過程接口

2)客戶指代 將客戶的調用請求進行加工、打包向底層通信機制(如套接字)發出請求消息,客戶指代不進行任何邏輯處理,只是一箇中介

3)客戶端通過底層的通信機制將消息傳送給服務器端的底層通信機制

4)服務器 需要部分地解析消息,找出客戶希望調用的服務器程序

5)服務器指代對消息進行解析,從中獲得調用者的參數,然後調用服務器程序

6)服務器程序執行相應的過程

7)服務器程序將結果返回給服務器指代

8)服務器指代將結果打包,向底層通信機制發出應答消息

9)服務器端通信機制將消息傳送給客戶端通信機制

10)客戶端節點上也可能有多個調出點,通信機制需要部分地解析返回的消息,找出消息應該返回給哪個客戶程序,並將消息發送給對應的客戶指代

11)客戶指代從消息中解析結果,返回給客戶程序

其中,客戶端指代(Stub)的主要工作包括:

1)建立客戶與服務器之間的連接

2)將客戶的高層調用語句打包爲一條底層的請求消息

這一過程在RPC中被稱爲編排(marshal)

3)等待服務器返回應答消息

4)將來自服務器底層的應答消息解析爲可以返回的數據

這一過程在RPC中被稱爲還原(unmarshal)

5)將返回值傳送給客戶程序

需要特別處理:編碼、字節序等問題

服務器端的指代除了需要進行編排、還原外,還需要區分客戶所請求的過程名,然後將客戶的請求分派(dispatch)給正確的過程。

“指代” 目前主要被用於專門代表客戶端的代理程序,而服務器端則由新的機制予以支持。

在CORBA中專門分離出了對象適配器(OA:Object Adaptor),在EJB中發展出了構件容器,用於在運行過程中專門管理構件的各種狀態。此時的服務器端不僅負責請求分派,還負責向底層機制的註冊(以方便請求的定位),以及過程的激活(以加強系統的靈活性)等等功能。

 

基於RPC的開發過程:

RPC3

1、定義並編譯接口

2、編寫實現具體服務功能的代碼

3、編譯、連接,產生可執行的服務器程序

4、編寫客戶端代碼

5、編譯、連接,產生客戶程序

6、運行服務器端程序

7、運行客戶端程序

 

主要實例:

SUN公司等提出的ONC(Open Network Computing)RPC,主要由SUN予以實現。

OSF(Open Software Foundation)RPC影響最大,主要由DCE(Distributed Computing Environment)實現,DCE是OSF提出的分佈計算體系結構。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章