一:弄清楚概念的東西

一:首先弄清概念的東西,RPC與RMI的區別

(1)RPC:(Remote Procedure Call)?

  被設計為在應用程序間通信的平臺中立的方式,它不理會操作系統之間以及語言之間的差異。 支持多語言。

(2)RMI:(Remote Method Invocation)?

RPC 的Java版本,EJB的基礎技術?

RMI 采用JRMP(Java Remote Method Protocol)通訊協議,是構建在TCP/IP協議上的一種遠程調用方法。?

RMI 采用stubs和skeletons來進行遠程對象的通訊。?

  stub充當遠程對象的客戶端代理,有著和遠程對象相同的遠程接口。?

  遠程對象的調用實際是通過調用該對象的客戶端代理對象stub來完成的。

(3)RMI與RPC的區別在于:?

1)方法是如何被調用的

  對RMI來說,如果一個方法在服務器上執行,但是沒有相匹配的簽名被添加到這個遠程接口上,那么這個新方法就不能被RMI客戶方所調用。?

  而在RPC中,當一個請求到達RPC服務器時,請求包含一個參數集和一個文本值,通常為“classname.methodname”形式。?

  這表明,請求的方法在“classname”類中,名叫“methodname”。?

  然后,RPC服務器就去搜索與之相匹配的類和方法,并把它作為那種方法參數類型的輸入。?

  這里的參數類型是與RPC請求中的類型匹配的。 一旦匹配成功,方法就被調用了,其結果被編碼后返回客戶方。

2)對傳遞信息的限制

  RMI 調用遠程對象方法,允許方法返回 Java 對象以及基本數據類型。?

  而RPC不允許傳遞對象,RPC服務的消息由外部數據表示(External Data Representation,XDR)語言來表示。

3)采用的協議不同

??? RPC不支持對象,采用http協議。RMI支持傳輸對象,采用TCP/IP協議

4)RIM只限于Java語言,而RPC跨語言

另外,RMI優于RPC或SOAP的一點是:在程序開發過程中因為對象或方法不匹配造成的錯誤可以在編譯期被發現,而不用等到運行期。

二:首先弄清概念的東西:RPC, SOAP, WSDL的關系

1.RPC

如果要調用遠端的一個方法,可以使用RMI和RPC,這是2種截然不同的風格。

RMI: (Remote Method Invocation) 直接獲取遠端方法的簽名,進行調用。優點是強類型、編譯期可檢查錯誤;缺點是只限于java語言

RPC: (Remote Procedure Call) 采用客戶端/服務器方式(請求/響應),發送請求到服務器端,服務端執行方法后返回結果。優點是跨語言跨平臺,缺點是編譯期無法排錯,只能在運行時檢查。

2.SOAP

為了包裝RPC的請求信息,推出了XML-RPC,但XML-RPC只能使用有限的數據類型種類和一些簡單的數據結構。于是就出現了SOAP(Simple Object Access Protocol)。SOAP最主要的工作是使用標準的XML描述了RPC的請求信息(URI/類/方法/參數/返回值)。理論上,SOAP就是一段xml,你可以通過http,smtp等發送它(復制到軟盤上,叫快遞公司送去也行?)。同樣SOAP也是跨語言的。

3.WSDL

WSDL(Web Services Description Language)是描述web服務的,是描述怎樣訪問web服務的。WSDL是用來描述SOAP的,換句話說,WSDL 文件告訴你調用 SOAP 所需要知道的一切。WSDL也是一段xml。現在各個語言對wsdl的支持都很成熟,可以根據同一份wsdl文件生成自己語言的客戶端。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,766評論 18 399
  • 轉自http://mp.weixin.qq.com/s?__biz=MzAxMTEyOTQ5OQ==&mid=26...
    文刂德光軍閱讀 1,142評論 0 11
  • 今天分布式應用、云計算、微服務大行其道,作為其技術基石之一的 RPC 你了解多少?一篇 RPC 的技術總結文章,數...
    零一間閱讀 1,925評論 1 46
  • 本周我學習了“如何去做一個精明的時間買賣人”。當我還正在思考如何做才能讓自己的“同一份時間售出很多次”,現在老師又...
    俞燕文閱讀 141評論 0 0
  • 好的生活需要你艱辛的付出,努力思考,判斷好、把握好,為了你自己、家人、朋友以及這個世界,奉獻美好的故事
    bluespace閱讀 174評論 0 0