JSON-RPC-Java和DWR比較(轉(zhuǎn))-創(chuàng)新互聯(lián)

當(dāng)前在以Java為后臺(tái)的AJAX框架中,比較有名兩個(gè)是JSON-RPC-Java 和DWR。
Swato與他們的共同之處是實(shí)現(xiàn)了JavaScript與Java 對(duì)象間的數(shù)據(jù)轉(zhuǎn)換與遠(yuǎn)程方法調(diào)用。從各自提供的unitTest Demo可以看到這一實(shí)現(xiàn)的支持能力基本是相同的。
各自的差異主要在以下幾個(gè)方面。

“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來(lái)堅(jiān)持追求的企業(yè)文化。 創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于做網(wǎng)站、網(wǎng)站設(shè)計(jì)、軟件開(kāi)發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺(jué)傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!

1.為開(kāi)發(fā)人員開(kāi)發(fā)前臺(tái)JavaScript提供的支持。

由于采用AJAX框架后,很多View和Control的代碼需要轉(zhuǎn)移到前臺(tái)用JavaScript實(shí)現(xiàn)。然而JavaScript的編程畢竟是比較痛苦的。 在JSON-RPC-Java中,從服務(wù)器返回到前臺(tái)的雖然是JSON--JavaScript對(duì)象,但是他沒(méi)有提供組件幫助開(kāi)發(fā)人員處理這些對(duì)象。 對(duì)于返回XML的框架,一句一句書(shū)寫DOM層次訪問(wèn)是比較痛苦的。

而對(duì)于HTML DOM的操作,也是比較痛苦的,所以所以DWR提供了一系列DWRUtils來(lái)幫你減輕這一部分工作。但是對(duì)于一些需要更加靈活的View處理,利用DWRUtils仍然感覺(jué)不夠用。

在Swato中,客戶端接受的數(shù)據(jù)可以是JSON(Swato的后臺(tái)是直接把Java對(duì)象映射成JSON),也可以是XML(你可以從遠(yuǎn)端URL中獲取XML, 它在Swato客戶端引擎中被轉(zhuǎn)化為JSON,參見(jiàn)RSS Reader的例子)。所以對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),它在客戶端所要關(guān)心的只是JavaScript對(duì)象。(結(jié)構(gòu)與Java對(duì)象或XML結(jié)構(gòu)對(duì)應(yīng))。然后利用Swato提供的一些View組件(AutoSuggest, Select, Form)進(jìn)行渲染。對(duì)于自定義性比較強(qiáng)的View控件,你可以在前端使用Template引擎 (來(lái)自TrimPath,類似于Velocity的簡(jiǎn)單語(yǔ)法)。甚至可以把它封裝成你自己的組件,只要在其中實(shí)現(xiàn)gotResult與gotError函數(shù),便可以很輕松的與Swato遠(yuǎn)程調(diào)用功能集成。參見(jiàn)(CRUD例子中的代碼。)

Swato力圖在客戶端為開(kāi)發(fā)人員減輕JavaScript代碼的編碼量,其實(shí)Swato的unitTest例子來(lái)自于DWR。 類似的測(cè)試功能,在邏輯控制上,DWR用了幾百行的JavaScript而在Swato上只需要幾十行。

不管用哪一個(gè)框架,由于JavaScript缺乏強(qiáng)大的編輯器和調(diào)試器,所以開(kāi)發(fā)起來(lái)還是比較麻煩,對(duì)此,Swato在前臺(tái)集成了fvlogger, 相當(dāng)于Java方面的Log4j,為Js的開(kāi)發(fā)帶來(lái)更大便利。
2.后臺(tái)服務(wù)的注冊(cè)與訪問(wèn)控制方式。

在后臺(tái)服務(wù)的注冊(cè)方式上,JSON-RPC-Java默認(rèn)的是在Session中的Bridge里注冊(cè)要使用的Java對(duì)象。這種方式有很多的限制,比如使用的時(shí)候需要JSP或者Servlet程序中來(lái)進(jìn)行注冊(cè)。形式不夠靈活,服務(wù)的周期管理也比較麻煩。這是JSON-RPC-Java被批評(píng)的重點(diǎn)。

DWR有了很大的進(jìn)步,它用dwr.xml將你需要暴露的服務(wù)明確地定義在其中,在前臺(tái)的JavaScript中,用