當前位置:首頁 > 通用術語 > 什麼是遠端程序呼叫 (RPC)?概念、運作方式

什麼是遠端程序呼叫 (RPC)?概念、運作方式

2025-08-26通用術語164

遠端程序呼叫 (RPC) 是由 Sun Microsystems 開發並由開放軟體基金會 (OSF) 擴展的訊息傳遞程式設計技術,可讓應用程式執行程式並與網路上遠端電腦上的服務互動。

遠端程序呼叫

遠端程序呼叫 (RPC) 是在 Microsoft Windows Server 平台上啟用用戶端/伺服器處理的偏好方法,Microsoft 的 RPC 功能實作與其他實作相容,例如 IBM AIX、HP-UX 及 Sun Solaris 作業系統的實作。

遠端程序呼叫 (RPC) 與本機程序呼叫 (LPC)

您可以使用 RPC 在位於網路上不同電腦上的分散式應用程式元件之間傳遞訊息。雖然本機程序呼叫 (LPC) 提供一種機制,可讓位於單一電腦上的應用程式的不同部分彼此通訊,但 RPC 牽涉到不同電腦之間的通訊。RPC 實際上會使用各種其他進程間通訊 (IPC) 機制,例如具名管道、郵件插槽、Windows 通訊端和 NetBIOS,在不同電腦上的 RPC 用戶端與 RPC 伺服器元件之間建立連線。

遠端程序呼叫的運作方式

遠端程序呼叫類似於函式呼叫。就像函式呼叫一樣,當進行 RPC 時,呼叫引數會傳遞至遠端程式,而呼叫端會等候從遠端程式傳回回應。上圖顯示了在兩個網路系統之間的 RPC 呼叫期間發生的活動流程。用戶端會進行程序呼叫,將要求傳送至伺服器並等待。執行緒會封鎖處理,直到收到回覆或逾時為止。當要求到達時,伺服器會呼叫執行所要求服務的分派常式,並將回覆傳送至用戶端。RPC 呼叫完成之後,用戶端程式會繼續。RPC 專門支援網路應用程式。

遠端程序由程式號碼、版本號碼及程序號碼唯一識別。程式號碼會識別一組相關的遠端程序,每一個程序都有唯一的程序號碼。程式可以包含一或多個版本。每個版本都包含一組程序,這些程序可從遠端呼叫。版本號碼可讓 RPC 通訊協定的多個版本同時可用。每個版本都包含許多可以遠端呼叫的程序。每個程序都有一個程序編號。

遠端程序呼叫的層數

RPC介面可以看作是分為三層。

最高層:最高層對運行的操作系統、機器和網絡完全透明。最好將此級別視為使用 RPC 的一種方式,而不是作為 RPC 的一部分。編寫 RPC 常式的程序員應該(幾乎)始終通過完全隱藏網絡的簡單 C 前端將此層提供給其他人。

為了說明,在此層次上,程式可以簡單地呼叫 rnusers(),這是一個 C 常式,可傳回遠端機器上的使用者數目。使用者沒有明確意識到使用 RPC – 他們只是呼叫一個過程,就像他們呼叫 malloc() 一樣。

中間層:中間層確實是「RPC 本身」。在這裡,使用者不需要考慮有關套接字、UNIX 系統或其他低階實作機制的詳細資訊。它們只是對其他機器上的常式進行遠端程序呼叫。這裡的賣點是簡單。正是這一層讓 RPC 能夠通過「hello world」測試——簡單的事情應該很簡單。中間層常式用於大部分應用程式。

RPC 呼叫是使用系統常式 registerrpc () 、 callrpc () 及 svc_run () 來進行。其中前兩個是最基本的: registerrpc() 取得唯一的系統範圍程序識別碼,而 callrpc() 實際上執行遠端程序呼叫。在中間層次,對 rnusers () 的呼叫是透過這兩個常式來實作。

不幸的是,中間層由於其不靈活(簡單性)而很少用於嚴肅的程式設計。它不允許逾時規格或傳輸選擇。它不允許 UNIX 進程控制或發生錯誤時的靈活性。它不支援多種類型的通話驗證。程式設計師很少需要所有這些類型的控制,但通常需要其中一兩個。

最低層:最低層確實允許這些細節由程式設計師控制,因此,這通常是必要的。在此層級編寫的程式也是最有效率的,但這很少是真正的問題,因為 RPC 用戶端和伺服器很少產生繁重的網路負載。

雖然本文檔僅討論 C 的接口,但可以從任何語言進行遠程過程調用。雖然本檔討論 RPC 用來在不同電腦上的進程之間通訊,但它同樣適用於同一部電腦上不同進程之間的通訊。

“什麼是遠端程序呼叫 (RPC)?概念、運作方式” 的相關文章

什麼是RAID?概念、RAID 範例

什麼是RAID?概念、RAID 範例

RAID 是一種使用資料備援在磁碟子系統上實作容錯的技術。什麼是 RAID?RAID 代表獨立磁碟冗餘陣列,是一種透過使用軟體或使用單獨的硬體 RAID 儲存單元使用資料冗餘在磁碟子系統上實現容錯的技術。RAID 範例資料會以數種方式之一分散到磁碟機、稱為 RAID 層級、視所需的備援和效能層級而定...

什麼是G.Lite?概念、怎麼運作的

什麼是G.Lite?概念、怎麼運作的

G.Lite 是非對稱數字用戶線 (ADSL) 的變體,旨在家庭互聯網訪問。繼續閱讀以獲取詳細信息。什麼是 G.Lite?G.Lite 是非對稱數字用戶線 (ADSL) 的變體,旨在家庭互聯網訪問。G.Lite 的下行速率通常高達 1.5 Mbps,上行速率高達 384 Kbps,具體取決於實施。G...

什麼是global.asa?概念、怎麼運作的

什麼是global.asa?概念、怎麼運作的

網絡百科全書中global.asa文件的定義。什麼是 global.asa?Global.asa 是在 Microsoft Internet Information Server 或 Internet Information Services 上執行的 Active Server Page...

什麼是Deamon ?概念、運作方式

什麼是Deamon ?概念、運作方式

Deamon 是一個與 UNIX 操作系統關聯的程序,它在後台運行並在沒有用戶煽動的情況下執行某些任務。什麼是 Deamon ?與 UNIX 作業系統相關聯的程式,在背景執行,無需使用者指示即可執行某些作業。常駐程式的範例是 telnet 常駐程式,它在背景持續執行,等待來自&n...

什麼是服務品質 (QoS)?概念、運作方式

什麼是服務品質 (QoS)?概念、運作方式

網路百科全書中服務品質 (QoS) 的定義。什麼是服務品質 (QoS)?一般來說,QoS 是具有可預測延遲和資料遺失的任何網路技術。更具體地說,是允許為通過網路傳輸的不同流量流定義絕對或相對效能要求的任何機制。換句話說,服務品質 (QoS) 網路可以保證特定路徑、連線或流量類型的一定輸送量。這使得確...

什麼是Apple 開放式運輸(Apple Open Transport)?概念、運作方式

什麼是Apple 開放式運輸(Apple Open Transport)?概念、運作方式

網路百科全書中蘋果開放傳輸的定義。什麼是 Apple Open Transport?Apple Open Transport 是一種 Apple 網路技術,用於傳輸獨立網路,是 Macintosh 作業系統網路和通訊子系統的一部分。Apple Open Transport 的設計目的是讓你在 Mac...