RPC(Remote Procedure Call,遠端程序呼叫)是建立在Socket之上的,出於一種類比的願望,在一台機器上啟動並執行主程式,可以調用另一台機器上準備好的子程式,就像LPC(本地程序呼叫). 越底層,代碼越複雜、靈活性越高、效率越高;越上層,抽象封裝的越好、代碼越簡單、效率越差。Socket和RPC的區別再次說明了這點。 ——————下面轉自:http://johnyan.hostzi.com/phpbb3/viewtopic.php?t=1305—————— 不論是程式員在編寫基於C/S(用戶端伺服器)的程式時,還是網路工程師在處理RPC問題時,他們問的最多的就是RPC和Socket有什麼區別和聯絡? RPC(Remote Procedure Call,遠端程序呼叫)是建立在Socket之上的,出於一種類比的願望,在一台機器上啟動並執行主程式,可以調用另一台機器上準備好的子程式,就像LPC(本地程序呼叫).RPC帶來了開發C/S程式的簡單可靠的手段,它通過一種叫XDR的資料表達方法描述資料,程式員書寫虛擬碼,然後由rpcgen程式翻譯為真正的可編譯的C語言原始碼,再編譯成真正的Client端和Server端程式。 RPC作為普遍的C/S開發方法,開發效率高效,可靠.但RPC方法的基本原則是--以模組調用的簡單性忽略通訊的具體細節,以便程式員不用關心C/S之間的通訊協議,集中精力對付實現過程.這就決定了 RPC產生的通訊包不可能對每種應用都有最恰當的處理辦法,與Socket方法相比,傳輸相同的有效資料,RPC佔用更多的網路頻寬. RPC是在Socket的基礎上實現的,它比socket需要更多的網路和系統資源.另外,在對程式最佳化時,程式員雖然可以直接修改由rpcgen產生的令人費解的來源程式,但對於追求程式設計高效率的RPC而言,獲得的簡單性則被大大削弱. RPC與是Socket的類比 兩個老闆手下各有一個負責接通MSN的秘書.這兩個秘書就是基於RPC協議建立的會話層通訊.老本不需要知道怎麼使用MSN,只要告訴秘書,秘書就會通過MSN與對方建立會話請求和響應.而基於Socket的通訊,老闆需要會使用MSN,這樣儘管老闆需要事先培訓一下MSN的簡單使用常識,但若與對方通訊時,無需經過秘書,效率更高. |