- RPC(Remote Procedure Call Protocol),遠程過程調用協議,一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。它是一項廣泛用於支持分布式應用程序(不同組件分布在不 同計算機上的應用程序)的技術。

RPC的概述
-
遠程過程調用(RPC)是一個協議,程序可以使用這個協議請求網絡中另一台計算機上某程序的服務而不需知道網絡細節。(過程調用有時也稱作函數調用,或子例行程序調用。)RPC使用client/server模型。請求程序是client,而服務提供程序則為server。就像一般的本地過程調用一樣,RPC是一個同步操作,直到遠程過程結果返回請求程序才可以掛起。盡管如此,使用輕質進程或線程時,它們共享同一地址空間,是允許多個RPC並發執行的。
當使用RPC的程序語句被編譯成可執行程序時,一個存根將會被包括在編譯的代碼中,它相當於遠程過程代碼的代表。
當程序運行,過程調用發生,存根收到請求並將其轉發給本地計算機中的一個客戶端運行時刻程序。這個客戶端運行時刻程序知道如何訪問遠程計算機及服務器
應用程序,它將向網絡發送請求遠程過程的消息。類似地,服務器也包括一個運行時刻程序及與遠程過程連接的存根程序。結果將以相同方式返回。
有多種RPC的模型與實現。一種較流行的模型與實現是開放軟件基金會(Open Software Foundation)的分布式計算環境(DCE)。電子和電氣工程師協會IEEE在它1991年11月的ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC中定義了RPC。
RPC跨越了網絡通信的開放系統互聯(OSI)模型中的傳輸層與應用層。RPC使得一個包括網絡中分布的多個程序的應用程序的開發變得更容易。
不同的client/server的通信方法還有消息隊列及IBM的高級程序對程序通信(APPC)。
RPC的產生
-
RPC的概念與技術早在1981年由Nelson提出1984年,Birrell和Nelson把其用於支持異構型分布式系統間的通訊…Birrel的RPC模型引入存根進程(stub)作為遠程過程的本地代理,調用RPC運行時庫(RPCruntime)來傳輸網絡中的調用。Stub和RPCruntime屏蔽了網絡調用所涉及的許多細節,特別是,參數的編碼/譯碼及網絡通訊是由stub和RPCruntime完成的因此這一模式被各類RPC所采用由於分布式系統的異構性及分布式計算模式與計算任務的多樣性,RPC作為網絡通訊與委托計算的實現機制,在方法、協議、語義實現上不斷發展,種類繁多,其中SUN公司和開放軟件基金會(OSF)在其分布式產品中所建立和使用的RPC較為典型。
在SUN公司的網絡文件系統NFS及開放網絡計算環境ONC中,RPC是基本實現技術。OSF醞釀和發展的另一個重要的分布式計算軟件環境DCE也是基於RPC的。在這兩個系統中,RPC既是其自身的實現機制,又是提供給用戶設計分布式應用程序的高級工具。由於對分布式計算的廣泛需求,ONC和DCE成為Client/Server模式分布式計算環境的主流產品,而RPC也成為實現分布式計算的事實標准之一。
RPC的結構原理
-
如前所述RPC其實也是一種C/S的編程模式,有點類似C/SSocket編程模式,但要比它更高一層。當我們在建立RPC服務以后,客戶端的調用參數通過底層的RPC傳輸通道,可以是UDP,也可以是TCP(也即TI-RPC—無關性傳輸),並根據傳輸前所提供的目的地址及RPC上層應用程序號轉至相應的RPC Application Porgramme Server,且此時的客戶端處於等待狀態,直至收到應答或TimeOut超時信號。當服務器端獲得了請求消息,則會根據注冊RPC時告訴RPC系統的例程入口地址,執行相應的操作,並將結果返回至客戶端。
當一次RPC調用結束后,相應線程發送相應的信號,客戶端程序才會繼續運行。當然,一台服務主機上可以有多個遠程過程提供服務,那么如何來表示一個唯一存在的遠程過程呢?一個遠程過程是有三個要素來唯一確定的:程序號、版本號和過程號。程序號是用來區別一組相關的並且具有唯一過程號的遠程過程。一個程序可以有一個或幾個不同的版本,而每個版本的程序都包含一系列能被遠程調用的過程,通過版本的引入,使得不同版本下的RPC能同時提供服務。每個版本都包含有許多可供遠程調用的過程,每個過程則有其唯一標示的過程號。
RPC的應用
-
RPC在分布式系統中的系統環境建設和應用程序設計中有着廣泛韻應用,應用包括如下方面:
1.分布式操作系統的
進程間通訊進程間通訊是操作系統必須提供的基本設施之一,分布式操作系統必須提供分布於異構的結點機上進程間的通訊機制,RPC是實現消息傳送模式的分布式進程間通訊的手段之一。
2.構造分布式計算的軟件環境
由於分布式軟件環境本身地理上的分布性它的各個組成成份之問存在大量的交互和通訊,RPC是其基本的實現方法之一。ONC+和DCE兩個流行的分式布計算軟件環境都是使用RPC構造的,其它一些分布式軟件環境也采用了RPC方式。
3.遠程數據庫服務
在分布式數據庫舞統中,數據庫一般駐存在服務器上,客戶機通過遠程數據癢服務功能訪問數據庫服務器,現有的遠程數據庫服務是使用RPC模式的。鍀如,Sybase和Oacle都提供了存儲過程機制,系統與用戶定義的存儲過程存儲在數據摩服務鋸上,用戶在客戶端使用RPC模式調用存儲過程。
4.分布式應用程序設計
RPC機制與RPC工具為分布式應用程序設計提供了手段和方便,用戶可以無需知道網絡結構和協議細節而直接使用RPC工具設計分布式應用程序。
5.分布式程序的調試
RPC可用於分布式程序的調試。使用反RPC使服務器成為客戶並向它的客戶進程發出RPC,可以調試分布式程序。例如.在服務器上運行一個遠端調試程序,它不斷接收客戶端的RPC,當遇到一個調試程序斷點時,它向客戶機發回一個RPC,通知斷點已經到達,這也是RPC用於進程通訊的例子。