複製鏈接
請複製以下鏈接發送給好友

遠程過程調用

鎖定
RPC是遠程過程調用(Remote Procedure Call)的縮寫形式。SAP系統RPC調用的原理其實很簡單,有一些類似於三層構架的C/S系統,第三方的客户程序通過接口調用SAP內部的標準或自定義函數,獲得函數返回的數據進行處理後顯示或打印。
中文名
遠程過程調用
外文名
Remote Procedure Call
縮寫形式
RPC
作    用
對數據進行處理後顯示或打印

目錄

遠程過程調用簡介

進程間通信(IPC)是在多任務操作系統或聯網的計算機之間運行的程序和進程所用的通信技術。有兩種類型的進程間通信(IPC)。
RPC調用的模型 RPC調用的模型
本地過程調用(LPC)LPC用在多任務操作系統中,使得同時運行的任務能互相會話。這些任務共享內存空間使任務同步和互相發送信息。遠程過程調用(RPC)RPC類似於LPC,只是在網上工作。RPC開始是出現在Sun微系統公司和HP公司的運行UNⅨ操作系統的計算機中。

遠程過程調用產生

RPC的概念與技術早在1981年由Nelson提出。1984年,Birrell和Nelson把其用於支持異構型分佈式系統間的通訊。Birrell的RPC 模型引入存根進程( stub) 作為遠程的本地代理,調用RPC運行時庫來傳輸網絡中的調用。Stub和RPC runtime屏蔽了網絡調用所涉及的許多細節,特別是,參數的編碼/譯碼及網絡通訊是由stub和RPC runtime完成的,因此這一模式被各類RPC所採用。由於分佈式系統的異構性及分佈式計算模式與計算任務的多樣性,RPC作為網絡通訊與委託計算的實現機制,在方法、協議、語義、實現上不斷髮展,種類繁多,其中SUN公司和開放軟件基金會在其分佈式產品中所建立和實用的RPC較為典型。 [1] 
在SUN公司的網絡文件系統NFS及開放網絡計算環境ONC中,RPC是基本實現技術。OSF醖釀和發展的另一個重要的分佈式計算軟件環境DCE也是基於RPC的。在這兩個系統中,RPC既是其自身的實現機制,又是提供給用户設計分佈式應用程序的高級工具。由於對分佈式計算的廣泛需求,ONC和DCE成為Client/Server模式分佈式計算環境的主流產品,而RPC也成為實現分佈式計算的事實標準之一。 [1] 

遠程過程調用原理

通過IPC和RPC,程序能利用其它程序或計算機處理的進程。客户機/服務器模式計算把遠程過程調用與其它技術(如消息傳遞)一道,作為系統間通信的一種機制。客户機執行自己的任務,但靠服務器提供後端文件服務。RPC為客户機提供向後端服務器申請服務的通信機制。如果你把客户機/服務器應用程序想作是一個分離的程序,服務器能運行數據訪問部分,因為它離數據最近,客户機能運行數據表示和與用户交互的前端部分。這樣,遠程過程調用可看作是把分割的程序通過網絡重組的部件。LPC有時也稱耦合(Coupling)機制。
用這種方式分割程序,當用户要訪問數據時就無需每次拷貝整個數據庫或它的大部分程序到用户系統。其實,服務器只處理請求,甚至只執行一些數據計算,把得出的結果再發送給用户。因為當數據存放在一個地方時,數據庫同步很容易實現,所以多個用户可同時訪問相同的數據。
分佈式計算環境是由一個通信系統——網絡連接的計算機集羣。很容易把這個網絡看成一個計算平台,若是對等方式,其中任何一台計算機都能成為客户機或服務器。一些處理任務可被分成獨立運行程序在不同的網絡計算機上並行處理,而獨立的程序被交給最適合這個任務的計算機處理。這種策略可利用計算機空閒資源,提高網絡的效益。一個典型的企業網包括許多運行着不同操作系統的異構計算機系統。
隨着企業網的產生,開發商必須編制可在各種計算機和網絡通信協議中都能運行的程序。現在人們正努力使得遠程過程調用獨立,這意味着開發商就不用考慮底層的網絡和網絡上數據傳輸所用的協議,下面介紹RPC在開放式軟件基金(OSF)的分佈式計算環境(DCC)中實現的相關方法。RPC工作於多種分佈式計算環境。
SunSoft的開放網絡計算(ONC)的遠過程調用/外部數據表示(RPC/XDR)協議被廣泛採用。在三百一十萬個運行網絡文件系統(NFS)的系統中,有二百八十萬個使用ONCRPC庫,並在分佈式應用中作為客户機或服務器。ONCRPC被IBM的所有操作系統所支持(除了OS/400)。UNⅨ系統實驗室把RPC/XDR當作是UNⅨ System V Release 4的一個標準部分。Novell支持下一代ONC+傳輸自立遠程過程調用(TI-RPC)技術.TI-RPC 使用運輸層接口(TLI)實現傳輸自立。TLI提供了一種訪問面向連接或非連接傳輸服務的通用方法(這在“STERAMS環境”中有所敍述)。
Open Software Foundation(OSF)RPC 開放軟件基金會(OSF)的RPC
RPC工具提供了一種編程語言和編譯器,它們使用可看作是本地過程的可運行於客户機和服務器上的模塊開發分佈式應用程序。運行時設施(run-timefacility)使得分佈式應用程序能在多機種異構系統上運行,這樣使得底層體系結構和運輸協議對於應用程序是透明的。
程序員用接口定義語言(IDL)建立接口定義(interface definition)。IDL是程序員用來設計遠程運行的過程的工具。IDL編譯器把IDL接口定義轉換成與客户機和服務器相連的佔位程序(stub)。客户機上的佔位程序可加入到服務器的過程,而服務器上的佔位程序也可加入到客户機過程。位於客户機服務器的RPC運行時設施與佔位程序合作,來提供RPC操作。
異構環境中使用RPC的一個問題在於,不同的機器有不同的數據表示,OSFRPC通過具有調用機器的基本數據表示的特徵調用來解決這個問題。當收到調用時,若根據特徵知道兩台機器數據表示不同的話,接收器就進行數據轉換。
RPC運行時設施提供把客户機請求傳送給服務器和在網上發送和接收響應的功能。DCERPC運行時設施也和網絡上其它DCE服務相互作用,這些DCE服務有命名、安全和定時服務。運行時設施有下列特徵:
可在多種網絡上運行。開發者無需為每個網絡編寫特定的應用程序。
提供客户機或服務器或網絡上的故障恢復。它支持文件系統、數據庫和其它傳輸可變長數據的服務。
提供獨立於任何一個目錄服務的基於名字定位服務器的方法。
提供安全工具的接口,以防RPC通信遭受破壞。安全服務保證機密信息的保密性和提供鑑別來保護通信完備性。
支持網上併發或並行處理的多線程調度,於是一個應用程序就能同時執行多個操作
提供多供應商提供的系統環境的可移植性和相互操作性。
有幾種RPC模式。一個很流行的模式是開放軟件基金會的分佈式計算環境(DCE)。1991年11月,美國電氣和電子工程師協會在它的ISO遠程過程調用規範(ISO/IEC CD 11578 N6561, ISO/IEC)中定義了遠程過程調用。
遠程過程調用(RPC)跨越了開放系統互連(OSI)網絡通信模型中的傳輸層和應用層。遠程過程調用使得開發應用程序更容易。
客户端/服務器通信的替代方法包括信息隊列和IBM的高級程序間通信(APPC)。 [2] 

遠程過程調用應用

RPC在分佈式系統中的系統環境建設和應用程序設計中有着廣泛的應用,應用包括如下方面: [1] 
1、分佈式操作系統的進程間通訊
進程間通訊是操作系統必須提供的基本設施之一,分佈式操作系統必須提供分佈於異構的結點機上進程間的通訊機制,RPC是實現消息傳送模式的分佈式進程間通訊的手段之一。
2、構造分佈式計算的軟件環境
由於分佈式軟件環境本身地理上的分佈性, 它的各個組成成份之間存在大量的交互和通訊,R P C 是其基本的實現方法之一。ONC+和DCE兩個流行的分式布計算軟件環境都是使用RPC構造的,其它一些分佈式軟件環境也採用了RPC方式。
3、遠程數據庫服務
分佈式數據庫系統中,數據庫一般駐存在服務器上,客户機通過遠程數據庫服務功能訪問數據庫服務器,現有的遠程數據庫服務是使用RPC模式的。例如,SybaseOracle都提供了存儲過程機制,系統與用户定義的存儲過程存儲在數據庫服務器上,用户在客户端使用RPC模式調用存儲過程。
RPC機制與RPC工具為分佈式應用程序設計提供了手段和方便, 用户可以無需知道網絡結構和協議細節而直接使用RPC工具設計分佈式應用程序。
5、分佈式程序的調試
RPC可用於分佈式程序的調試。使用反向RPC使服務器成為客户並向它的客户進程發出RPC,可以調試分佈式程序。例如,在服務器上運行一個遠端調試程序,它不斷接收客户端的RPC,當遇到一個調試程序斷點時,它向客户機發回一個RPC,通知斷點已經到達,這也是RPC用於進程通訊的例子。
參考資料
  • 1.    朱浩,徐麗,吳泉源. 遠程過程調用的實現、應用與問題[J]. 計算機工程與科學,1995,(03):18-25.
  • 2.    遠程過程調用  .TechTarget SOA[引用日期2015-05-28]