靈魂-放水

          為學日益,為道日損。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
          (RPC:Remote Procedure Call protocol)

            遠程過程調用(RPC)是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC 協議假定某些傳輸協議的存在,如 TCP 或 UDP,為通信程序之間攜帶信息數據。在 OSI 網絡通信模型中,RPC 跨越了傳輸層和應用層。RPC 使得開發包括網絡分布式多程序在內的應用程序更加容易。

            RPC 采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息的到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用過程接收答復信息,獲得進程結果,然后調用執行繼續進行。

            目前,有多種 RPC 模式和執行。最初由 Sun 公司提出。IETF ONC 憲章重新修訂了 Sun 版本,使得 ONC PRC 協議成為 IETF 標準協議。現在使用最普遍的模式和執行是開放式軟件基礎的分布式計算環境(DCE)。


          協議結構

            遠程過程調用(RPC)信息協議由兩個不同結構組成:調用信息和答復信息。信息流程如下所示:

          遠程過程調用流程

          RPC:遠程過程調用流程

            RPC 調用信息:每條遠程過程調用信息包括以下無符號整數字段,以獨立識別遠程過程:
          • 程序號(Program number)
          • 程序版本號(Program version number)
          • 過程號(Procedure number)

            RPC 調用信息主體形式如下:

            struct?call_body?{

             unsigned?int?rpcvers;

             unsigned?int?prog;

             unsigned?int?vers;

             unsigned?int?proc;

             opaque_auth?cred;

             opaque_auth?verf;

             1?parameter

             2?parameter?.?.?.?

            };

            RPC 答復信息:RPC 協議的答復信息的改變取決于網絡服務器對調用信息是接收還是拒絕。答復信息請求包括區別以下情形的各種信息:
          • RPC 成功執行調用信息。.
          • RPC 的遠程實現不是協議第二版,返回 RPC 支持的最低和最高版本號。
          • 在遠程系統中,遠程程序不可用。
          • 遠程程序不支持被請求的版本號。返回遠程程序所支持的最低和最高版本號。
          • 請求的過程號不存在。通常是呼叫方協議或程序差錯。

            RPC答復信息形式如下:

            enum?reply_stat?stat?{?

            MSG_ACCEPTED?=?0,

            MSG_DENIED???=?1

            };
          -----------------------------------------------------------------------------------------
          進程間通信(IPC)是在多任務操作系統或聯網的計算機之間運行的程序和進程所用的通
          信技術。有兩種類型的進程間通信(IPC)。

          □本地過程調用(LPC)LPC用在多任務操作系統中,使得同時運行的任務能互相會話。
          這些任務共享內存空間使任務同步和互相發送信息。

          □遠程過程調用(RPC)RPC類似于LPC,只是在網上工作。RPC開始是出現在Sun微系統公
          司和HP公司的運行UNIX操作系統的計算機中。

          通過IPC和RPC,程序能利用其它程序或計算機處理的進程。客戶機/服務器模式計算把
          遠程過程調用與其它技術如消息傳遞一道,作為系統間通信的一種機制。客戶機執行自
          己的任務,但靠服務器提供后端文件服務。RPC為客戶機提供向后端服務器申請服務的通
          信機制,如圖R-4所示。如果你把客戶機/服務器應用程序想作是一個分離的程序,服
          務器能運行數據訪問部分,因為它離數據最近,客戶機能運行數據表示和與用戶交互的
          前端部分。這樣,遠程過程調用可看作是把分割的程序通過網絡重組的部件。LPC有時也
          稱耦合(Coupling)機制。

          用這種方式分割程序,當用戶要訪問數據時就無需每次拷貝整個數據庫或它的大部分程
          序到用戶系統。其實,服務器只處理請求,甚至只執行一些數據計算,把得出的結果再
          發送給用戶。因為當數據存放在一個地方時,數據庫同步很容易實現,所以多個用戶可
          同時訪問相同的數據。

          分布式計算環境是由一個通信系統——網絡連接的計算機集群。很容易把這個網絡看成
          一個計算平臺,若是對等方式,其中任何一臺計算機都能成為客戶機或服務器。一些處
          理任務可被分成獨立運行程序在不同的網絡計算機上并行處理,而獨立的程序被交給最
          適合這個任務的計算機處理。這種策略可利用計算機空閑資源,提高網絡的效益。一個
          典型的企業網包括許多運行著不同操作系統的異構計算機系統。

          隨著企業網的產生,開發商必須編制可在各種計算機和網絡通信協議中都能運行的程序
          。現在人們正努力使得遠程過程調用獨立,這意味著開發商就不用考慮底層的網絡和網
          絡上數據傳輸所用的協議,下面介紹RPC在開放式軟件基金(OSF)的分布式計算環境(
          DCC)中實現的相關方法。RPC工作于多種分布式計算環境。

          SunSoft的開放網絡計算(ONC)的遠過程調用/外部數據表示(RPC/XDR)協議被廣泛
          采用。在三百一十萬個運行網絡文件系統(NFS)的系統中,有二百八十萬個使用ONCRP
          C庫,并在分布式應用中作為客戶機或服務器。ONCRPC被IBM的所有操作系統所支持(除
          了OS/400)。UNIX系統實驗室把RPC/XDR當作是UNIX?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運行時設施提供把客戶機請求傳送給服務器和在網上發送和接收響應的功能。DCERP
          C運行時設施也和網絡上其它DCE服務相互作用,這些DCE服務有命名、安全和定時服務。
          運行時設施有下列特征:

          □可在多種網絡上運行。開發者無需為每個網絡編寫特定的應用程序。

          □提供客戶機或服務器或網絡上的故障恢復。它支持文件系統、數據庫和其它傳輸可變
          長數據的服務。

          □提供獨立于任何一個目錄服務的基于名字定位服務器的方法。

          □提供安全工具的接口,以防RPC通信遭受破壞。安全服務保證機密信息的保密性和提供
          鑒別來保護通信完備性。

          □支持網上并發或并行處理的多線程調度,于是一個應用程序就能同時執行多個操作

          □提供多供應商提供的系統環境的可移植性和相互操作性

          posted on 2006-11-03 19:25 放水老倌 閱讀(1296) 評論(0)  編輯  收藏 所屬分類: 標準

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 苗栗市| 平凉市| 定兴县| 辉南县| 班玛县| 任丘市| 贵阳市| 武隆县| 安吉县| 汪清县| 阿鲁科尔沁旗| 云浮市| 巢湖市| 南投县| 崇仁县| 凤翔县| 虹口区| 文昌市| 涞源县| 莲花县| 红原县| 凤翔县| 民勤县| 开原市| 浙江省| 佛教| 同江市| 华蓥市| 禄丰县| 昂仁县| 长宁县| 思南县| 高州市| 湘潭县| 卢氏县| 瑞昌市| 成安县| 千阳县| 屏南县| 赤峰市| 循化|