WEB(Javascript)遠程調用方案清單

來源:互聯網
上載者:User

Web遠端程序呼叫(以下簡稱WebRPC)是在不重新整理頁面的前提下,對遠程方法進行調用,是最近的一個熱點;在一些場合下,他甚至成為不可替代的實現方式。WebRPC的實現方式經曆了從普通URL讀取,隱藏幀,IFrame, XMLHTTP乃至 Flash等。本文將對目前存在的WebRpc方案(產品)進行列表,並作簡單評價。

 

評價將在以下幾個方面進行:用戶端實現方式,伺服器端實現方式,是否自行封裝協議,是否支援序列化/還原序列化,序列化支援是否完備(原子類型,物件類型),是否支援非同步/同步方式。注意,由於Web方式的遠程調用沒有得到大規模運用。筆者自己並沒有在公司專屬應用程式中採用WebRPC的經驗,但在娛樂應用、線上遊戲中,已經得到了相當好的運用。這些應用已經在《面向非同步訊息的Web應用(AMOWA)》中得到詳細論述,有興趣的可以在產品指南欄目中閱讀這篇文章。

 

1 MSRS (Microsoft Remote Scripting)

地址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rmscpt/Html/rmscpt1.asp

簡介:在網頁出現的早期,瀏覽器功能有限。Applet的出現,為MSRS提供了平台。在這項方案中,MSRS通過一個applet類以及頁面上的參數配置,來與伺服器端互動,從而實現了遠程調用。採用此項技術實際上將頁面不重新整理的工作交給了一個名為rsproxy.class的不可見Applet完成。我見過早期的線上Web象棋採用此項方案。優點:輕而易舉跨瀏覽器;缺點:伺服器端採用微軟asp, applet載入緩慢;不支援資料類型序列化/還原序列化。

 

2 JSRS (Javascript Remote Scripting)

地址:http://www.blueshoes.org/en/javascript/jsrs/

簡介:支援兩種資料訪問方式:HTTP GET方式(動態載入JS檔案),HTTP POST方式(用JS動態建立一個Iframe, 在其中提交一個表單)。不用重新整理頁面,支援簡單資料的序列化/還原序列化。

 

3 XML-RPC

地址:http://www.xmlrpc.org/

簡介:XML-RPC定義了一種協議規範,由於它的輕量級、概念完整,因此目前絕大多數語言都有實現,包括Java(Apache xml-rpc), PHP, javascript, VBScript, python等等。最大的交流方式Blog協議,管理方法也遵循XML-RPC規範。優點:絕大多數語言都支援,簡單,規範。缺點:Java實現對資料類型序列化支援有限

 

4 dwr (Direct Web Remoting)

地址:https://dwr.dev.java.net/

簡介:一個在適當時候提出適當概念的小東西。採用xmlhttp傳遞請求,伺服器端利用反射找到相應方法執行後將結果返回。較有創意的是,他將伺服器端需要進行遠程調用的代碼動態轉換為相應的js代碼,前端可以直接顯式調用。簡單,可以作為WebRPC學習入門。不支援資料序列化

 

5 JSON-RPC

地址:http://oss.metaparadigm.com/jsonrpc/

簡介:採用一種沒聽說過的資料交換協議JSON(JavaScript Object Notation, http://www.crockford.com/JSON/) 作為協議基礎,在此之上進行資料調用,採用xmlhttp發送/接受請求,支援完整的資料序列化/反序列。目前,jason Web架構採用json-rpc為底層方式。

 

6 Burlap (http://caucho.com/burlap/index.xtp)

簡介:也許會奇怪,為什麼Burlap也能夠算得上遠程協議。實際上,與Hessian實現方式基本相同的Burlap(前者為二進位,後者為文本), 在協議完整性上能夠超過上述任一產品。目前我已經實現了JS調用Burlap服務的代碼,是目前所有遠程調用方式中最為優雅的實現。

 

7 XINS (XML Interface for Network Services)

地址:http://xins.sourceforge.net/index.html

簡介:按照官方網站的說法,SOA + Java + XML + code_generation - complexity => XINS。這個龐大的東西需要定義一攬子描述檔案然後才能在HTML中進行調用。從外觀上看,這是最像樣子的解決方案。對其瞭解不多,不做評價。

 

8 WebService, SOAP

簡介:除了微軟有一個webservice.htc控制項,mozilla也有相應的webservice訪問方式。因此,在HTML中訪問webservice也是可行的。只是這種協議過於笨重,除非必要,沒有人會在web用戶端中使用。

 

 

用戶端實現方式

伺服器端實現方式

是否自行封裝協議

序列化/還原序列化

同步方式/非同步方式

MSRS

Applet

Microsoft ASP

不支援

同步+非同步

JSRS

Iframe/動態載入js

多種,php, java等

不支援

同步

XML-RPC

Xmlhttp等多種方式

絕大多數語言都有支援

XML-RPC

支援,Java實現有限支援,不支援自訂對象

同步+非同步

DWR

Xmlhttp

Java

很弱

同步+非同步

JSON-RPC

Xmlhttp

Java

JSON

支援

同步+非同步

Burlap

Xmlhttp

Java

Burlap

完全支援

同步+非同步

XINS

Xmlhttp

Java

支援

同步+非同步

WebService

IE採用.htc, mozilla內建支援

不定,遵循webservice規範以及SOAP協議

SOAP

支援,不同的平台上各有擴充

同步+非同步

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.