RPC簡述


在某種意義上,WebService、REST均是RPC的實現,那么RPC的發展過程如何呢?本文參考了wikipedia,對RPC做一下簡要摘記。

RPC(RemoteProcedureCall),是進程間通信(IPC,Inter-Process Communication)的一種技術,一般指不同機器上的進程間通信。在采用C等古老語言編程的時候,RPC被稱作了對S端的“子程序”的調用,所以稱“過程調用”。在OOP出現后,RPC也可以稱為遠程方法調用(RemoteMethodInvocation),或者遠程調用(RemoteInvocation)。

RPC過程可以是同步的,也可以是異步的。同步方式:C端向S端發送請求,阻塞等待;S端執行一段子程序,發送響應;C端繼續執行;異步方式,比如XHTTP調用。

 

RPC的調用過程(Stub這個術語應該是借鑒了JavaRMI):

  1. Client向ClientStub發送請求(Call)。
  2. ClientStub對請求參數進行封包(也叫Marshalling),發出系統調用,OS向S端發送消息。
  3. S端接收到消息后,把封包消息傳遞給ServerStub。ServerStub解包(UnMarshalling)。
  4. ServerStub調用S端的子程序。處理完畢后,以同樣的方式向C端發送結果。

注:ServerStub又叫Skeleton。

 

什么是Stub?

Stub是一段代碼,用來轉換RPC過程中傳遞的參數。處理內容包括不同OS之間的大小端問題。另外,Client端一般叫Stub,Server端一般叫Skeleton。

生產方式:1)手動生成,比較麻煩;2)自動生成,使用IDL(InterfaceDescriptionLanguate),定義C/S的接口。

交互機制標准:一般采用IDL,生成IDL的工具 RPCGEN()。

 

RPC相關實現方式

  • JavaRMI
  • XML-RPC,XML+HTTP來進行機器之間的調用
  • JSON-RPC
  • SOAP,XML-RPC的升級版
  • Facebook Thrift
  • CORBA
  • AMF,AdobeFlex
  • Libevent,是一個用於構建RPC Server和Client的框架。
  • WCF,來自微軟
  • .net Remoting,逐步被WCF取代

 


 Refer

http://en.wikipedia.org/wiki/Remote_procedure_call
http://en.wikipedia.org/wiki/Stub_(distributed_computing)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM