天天看點

RMI,RPC,SOAP對比分析

1、rmi

    使用java的程式員,對于rmi(remotemethod invoke,遠端方法調用)一定不陌生,在java中,為了在分布式應用開發時,能夠友善調用遠端對象,java提供了rmi的api。在 rmi 中,遠端對象按照好象它是本地行事,客戶機應用程式會直接調用遠端對象存根上的方法,是以,調用起來就如本地對象一樣友善。rmi中封裝了對象和請求的網 絡傳送,使得異地的對象服務直接可用。

但rmi的使用必須是在能夠識别java代碼的環境下使用,即必須有jvm的支援。是以,他隻适合在java程式間的對象通信。如果不在 java 環境下工作,或者需要與非 java 環境通信,那麼soap、rpc、corar等都是可以的。.

2、rpc & xml-rpc

       rpc(remote method invocation,遠端過程調用) 與rmi的差別很明顯,相比于rmi直接擷取遠端方法的簽名,進行調用的方式,rpc使用的是c/s方式,發送請求到伺服器,等待伺服器傳回結果。

為了包裝rpc的請求資訊,推出了xml-rpc,用戶端發送一條特定消息,該消息中必須包括名稱、運作服務的程式以及輸入參數。

xml-rpc隻能使用有限的資料類型種類和一些簡單的資料結構。soap最主要的工作是使用标準的xml描述了rpc的請求資訊(uri/類/方法/參數/傳回值)。soap的方式,soap 是對如corba 和 rmi-iiop 這樣的重型 範例吸引人的替代。

3、soap

       soap的消息被稱為一個soap envelope,包括soap header和soap body。其中,soap header可以友善的插入各種其它消息來擴充web service的功能,比如security(采用證書通路web service),soap body則是具體的消息正文,也就是marshall後的資訊。

       某些程式員每天掙紮于 perl 和 c 元件、c 和 java 元件之間的通信。這些開發人員可以從轉向基于 soap 或基于 xml-rpc 的通信模型中獲益匪淺。另一方面,從不轉向 java 以外語言的 java 開發人員可以轉向 rmi 而不是使用 soap,他們會看到極大的性能改善。

4、wsdl

wsdl(web services description language)是描述web服務的,是描述怎樣通路web服務的。wsdl是用來描述soap的,換句話說,wsdl 檔案告訴你調用 soap 所需要知道的一切。wsdl也是一段xml。現在各個語言對wsdl的支援都很成熟,可以根據同一份wsdl檔案生成自己語言的用戶端。

5、其他

       其他還有rest、axis等

下面是rmi、rpc和soap的比較

rmi

rpc

soap

通信方式

遠端對象按照好象它是本地行事.客戶機應用程式直接調用遠 程對象存根上的方法

客戶機不直接調用方法,而是向伺服器發送請求消息。

在xml-rpc上,使用規定的xml格式的資料格式來通信。比xml-rpc更具适用性,能夠支援更多的類型及資料結構。

優點

遠端對象按照好象它是本地行事,編譯期可以檢查錯誤

它允許客戶機與伺服器之間有更大的獨立性。

伺服器無需讓客戶機知道,就可以完全關機和被替換

非常适合異步通信和針對松耦合的客戶機和伺服器

缺點

隻能基于java語言。異常資訊容易丢失。客戶機與伺服器緊耦合。

喪失了許多可以確定方法和參數是正确的編譯時便利。

必須做大量的運作時檢查,而且開發人員喪失了許多可以確定方法和參數是正确的編譯時便利。

特别說明:尊重作者的勞動成果,轉載請注明出處哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp60