Web遠程過程調用(以下簡稱WebRPC)是在不刷新頁面的前提下對遠程方法進行調用是最近的一個熱點在一些場合下他甚至成為不可替代的實現方式WebRPC的實現方式經歷了從普通URL讀取隱藏幀IFrame XMLHTTP乃至 Flash等本文將對目前存在的WebRpc方案(產品)進行列表並作簡單評價
評價將在以下幾個方面進行客戶端實現方式服務器端實現方式是否自行封裝協議是否支持序列化/反序列化序列化支持是否完備(原子類型對象類型)是否支持異步/同步方式注意由於Web方式的遠程調用沒有得到大規模運用筆者自己並沒有在企業應用中采用WebRPC的經驗但在娛樂應用在線游戲中已經得到了相當好的運用這些應用已經在《面向異步消息的Web應用(AMOWA)》中得到詳細論述有興趣的可以在產品指南欄目中閱讀這篇文章
MSRS (Microsoft Remote Scripting)
地址?url=/library/enus/rmscpt/Html/rmscptasp
簡介在網頁出現的早期浏覽器功能有限Applet的出現為MSRS提供了平台在這項方案中MSRS通過一個applet類以及頁面上的參數配置來與服務器端交互從而實現了遠程調用采用此項技術實際上將頁面不刷新的工作交給了一個名為rsproxyclass的不可見Applet完成我見過早期的在線Web象棋采用此項方案優點輕而易舉跨浏覽器缺點服務器端采用微軟asp applet加載緩慢不支持數據類型序列化/反序列化
JSRS (Javascript Remote Scripting)
地址
簡介支持兩種數據訪問方式HTTP GET方式(動態加載JS文件)HTTP POST方式(用JS動態創建一個Iframe 在其中提交一個表單)不用刷新頁面支持簡單數據的序列化/反序列化
XMLRPC
地址
簡介XMLRPC定義了一種協議規范由於它的輕量級概念完整因此目前絕大多數語言都有實現包括Java(Apache xmlrpc) PHP javascript VBScript python等等最大的交流方式Blog協議管理方法也遵循XMLRPC規范優點絕大多數語言都支持簡單規范缺點Java實現對數據類型序列化支持有限
dwr (Direct Web Remoting)
地址
簡介一個在適當時候提出適當概念的小東西采用xmlhttp傳遞請求服務器端利用反射找到相應方法執行後將結果返回較有創意的是他將服務器端需要進行遠程調用的代碼動態轉換為相應的js代碼前端可以直接顯式調用簡單可以作為WebRPC學習入門不支持數據序列化
JSONRPC
地址
簡介采用一種沒聽說過的數據交換協議JSON(JavaScript Object Notation ) 作為協議基礎在此之上進行數據調用采用xmlhttp發送/接受請求支持完整的數據序列化/反序列目前jason Web框架采用jsonrpc為底層方式
Burlap ()
簡介也許會奇怪為什麼Burlap也能夠算得上遠程協議實際上與Hessian實現方式基本相同的Burlap(前者為二進制後者為文本) 在協議完整性上能夠超過上述任一產品目前我已經實現了JS調用Burlap服務的代碼是目前所有遠程調用方式中最為優雅的實現
XINS (XML Interface for Network Services)
地址
簡介按照官方網站的說法SOA + Java + XML + code_generation complexity => XINS這個龐大的東西需要定義一攬子描述文件然後才能在HTML中進行調用從外觀上看這是最像樣子的解決方案對其了解不多不做評價
WebService SOAP
簡介除了微軟有一個webservicehtc控件mozilla也有相應的webservice訪問方式因此在HTML中訪問webservice也是可行的只是這種協議過於笨重除非必要沒有人會在web客戶端中使用
客戶端實現方式
服務器端實現方式
是否自行封裝協議
序列化/反序列化
同步方式/異步方式
Applet
Microsoft ASP
Iframe/動態加載js
多種php java等
XMLRPC
Xmlhttp等多種方式
絕大多數語言都有支持
XMLRPC
支持Java實現有限支持不支持自定義對象
Xmlhttp
JSONRPC
Xmlhttp
Burlap
Xmlhttp
Burlap
Xmlhttp
WebService
IE采用htc mozilla內置支持
不定遵循webservice規范以及SOAP協議
支持不同的平台上各有擴展
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19583.html