天天看點

RMI/XML-RPC/JSON-RPC/SOAP概念比較

RMI :Romote Method  Invocation,遠端方法調用。基于java遠端消息交換協定JRMP通信;JRMP是專為java遠端對象制定的協定。是分布式應用程式的100%java解決方法。RMI對非java語言應用程式支援不足,不能實作互通。

RMI是面向對象的程式設計模型。廣泛應用與EJB架構系統中。

RMI基于調用 的模式,調用過程如下:用戶端程式調用服務對象的用戶端代理,代理負責打包參數并通過JRMP協定發送到服務端,服務端使用同樣協定解析,執行業務邏輯處理,用同樣方法傳回結果給用戶端。

RPC :RPC算是這幾類的統稱(這樣說有點不準确,但也可以這麼了解)。  RPC(Remote Procedure Call)遠端過程調用,是實作分布式計算的一種技術。在某種傳輸協定(TCP/HTTP等)上攜帶資訊資料,通過網絡從遠端計算機程式上請求服務。在 OSI模型中,RPC跨越了傳輸層和應用層,使開發網絡分布式應用程式變得容易。用戶端代碼像調用本地方法一樣調用遠端方法。

RPC基于請求應答 模式,用戶端發送調用資訊(将遠端方法名、參數打包進請求資訊)到服務端,服務端解析到要調用的對象和方法執行後傳回應答資訊;用戶端接受相應擷取應答資訊。

        RPC是跨語言的通信标準,sun和微軟都有其實作,微軟的DCOM就是建立在ORPC協定之上。

RPC是面向過程的程式設計模型。

XML-RPC :XML Remote Procedure Call,即XML遠端方法調用,利用http+xml封裝進行RPC調用。基于http協定傳輸、XML作為資訊編碼格式。一個xml-rpc消息就是 一個請求體為xml的http-post請求,服務端執行後也以xml格式編碼傳回。這個标準面前已經演變為下面的SOAP協定。可以了解SOAP是 XML-RPC的進階版本。

SOAP :Simple Object Access Protocol ,簡單對象通路協定,是一種輕量的、簡單的、基于xml的遠端通路協定。可以與現有的多種傳輸層或應用層協定結合使用,如TCP、HTTP、SMTP等。 SOAP廣泛使用的是基于HTTP和xml協定的實作(SOAP=RPC+HTTP+XML ),也就是大家常提的Web Service使用的通信協定。一個SOAP方法可以簡單地看作遵循SOAP編碼規則的HTTP請求和響應。

比較:XML-RPC是啟動web服務最容易的方法,在很多方面比SOAP更簡單易用,但不同于SOAP的是,XML-RPC沒有相應的服務描述文法,這妨礙了XML-RPC服務的自動調用。

JSON-RPC :JSON Remote Procedure Call,即JSON遠端方法調用 。類似于XML-RPC,不同之處是使用JSON作為資訊交換格式。

(關于sun java版本的一些web服務規範:

  JAX-RPC1.1:Java API for XML-Based RPC 1.1 

JAX-WS2.0:Java API for XML Web Service 2.0,是前者的更新版本。

 使用JAXB處理xml與java對象映射;xml解析使用StAX拉式解析器規範。

詳細可參考  Web 服務提示與技巧: JAX-RPC 與 JAX-WS 的比較

 JAX-RS: (Java API for RESTful Web Services (JSR-311) )  

Java 上建構 RESTful 風格的 web services 提供的一組标準 API。

 另附開源的JSON-RPC實作

1,JSON-RPC for Java

2,國人的 JSON-RPC  

 )