RMI,RPC,SOAP對比分析

詳見: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp60

 

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 HeaderSOAP Body。其中,SOAP Header可以方便的插入各種其它消息來擴充Web Service的功能,比如Security(採用證書訪問Web Service),SOAP Body則是具體的消息正文,也就是Marshall後的信息。

       某些程序員每天掙扎於 Perl 和 C 組件、C 和 Java 組件之間的通信。這些開發人員可以從轉向基於 SOAP 或基於 XML-RPC 的通信模型中獲益匪淺。另一方面,從不轉向 Java 以外語言的 Java 開發人員可以轉向 RMI 而不是使用 SOAP,他們會看到極大的性能改善。

4WSDL

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語言。異常信息容易丟失。客戶機與服務器緊耦合。

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章