遠程過程調(diào)用(RPC)是一個協(xié)議,程序可以使用這個協(xié)議請求網(wǎng)絡中另一臺計算機上某程序的服務而不需知道網(wǎng)絡細節(jié)。(過程調(diào)用有時也稱作函數(shù)調(diào)用,或子例行程序調(diào)用。)RPC使用client/server模型。請求程序是client,而服務提供程序則為server。就像一般的本地過程調(diào)用一樣,RPC是一個同步操作,直到遠程過程結果返回請求程序才可以掛起。盡管如此,使用輕質(zhì)進程或線程時,它們共享同一地址空間,是允許多個RPC并發(fā)執(zhí)行的。
當使用RPC的程序語句被編譯成可執(zhí)行程序時,一個存根將會被包括在編譯的代碼中,它相當于遠程過程代碼的代表。
當程序運行,過程調(diào)用發(fā)生,存根收到請求并將其轉(zhuǎn)發(fā)給本地計算機中的一個客戶端運行時刻程序。這個客戶端運行時刻程序知道如何訪問遠程計算機及服務器應用程序,它將向網(wǎng)絡發(fā)送請求遠程過程的消息。類似地,服務器也包括一個運行時刻程序及與遠程過程連接的存根程序。結果將以相同方式返回。
有多種RPC的模型與實現(xiàn)。一種較流行的模型與實現(xiàn)是開放軟件基金會(Open Software FoundaTION)的分布式計算環(huán)境(DCE)。電子和電氣工程師協(xié)會IEEE在它1991年11月的ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC中定義了RPC。
RPC跨越了網(wǎng)絡通信的開放系統(tǒng)互聯(lián)(OSI)模型中的傳輸層與應用層。RPC使得一個包括網(wǎng)絡中分布的多個程序的應用程序的開發(fā)變得更容易。
不同的client/server的通信方法還有消息隊列及IBM的高級程序?qū)Τ绦蛲ㄐ牛ˋPPC)。