天天看點

JSON-RPC-Java 和DWR比較(轉)

目前在以Java為背景的AJAX架構中,比較有名兩個是JSON-RPC-Java 和DWR。

Swato與他們的共同之處是實作了JavaScript與Java 對象間的資料轉換與遠端方法調用。從各自提供的unitTest Demo可以看到這一實作的支援能力基本是相同的。

各自的差異主要在以下幾個方面。

1.為開發人員開發前台JavaScript提供的支援。

由于采用AJAX架構後,很多View和Control的代碼需要轉移到前台用JavaScript實作。然而JavaScript的程式設計畢竟是比較痛苦的。 在JSON-RPC-Java中,從伺服器傳回到前台的雖然是JSON--JavaScript對象,但是他沒有提供元件幫助開發人員處理這些對象。 對于傳回XML的架構,一句一句書寫DOM層次通路是比較痛苦的。

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

在Swato中,用戶端接受的資料可以是JSON(Swato的背景是直接把Java對象映射成JSON),也可以是XML(你可以從遠端URL中擷取XML, 它在Swato用戶端引擎中被轉化為JSON,參見RSS Reader的例子)。是以對于開發人員來說,它在用戶端所要關心的隻是JavaScript對象。(結構與Java對象或XML結構對應)。然後利用Swato提供的一些View元件(AutoSuggest, Select, Form)進行渲染。對于自定義性比較強的View控件,你可以在前端使用Template引擎 (來自TrimPath,類似于Velocity的簡單文法)。甚至可以把它封裝成你自己的元件,隻要在其中實作gotResult與gotError函數,便可以很輕松的與Swato遠端調用功能內建。參見(CRUD例子中的代碼。)

Swato力圖在用戶端為開發人員減輕JavaScript代碼的編碼量,其實Swato的unitTest例子來自于DWR。 類似的測試功能,在邏輯控制上,DWR用了幾百行的JavaScript而在Swato上隻需要幾十行。

不管用哪一個架構,由于JavaScript缺乏強大的編輯器和調試器,是以開發起來還是比較麻煩,對此,Swato在前台內建了fvlogger, 相當于Java方面的Log4j,為Js的開發帶來更大便利。

2.背景服務的注冊與通路控制方式。

在背景服務的注冊方式上,JSON-RPC-Java預設的是在Session中的Bridge裡注冊要使用的Java對象。這種方式有很多的限制,比如使用的時候需要JSP或者Servlet程式中來進行注冊。形式不夠靈活,服務的周期管理也比較麻煩。這是JSON-RPC-Java被批評的重點。

DWR有了很大的進步,它用dwr.xml将你需要暴露的服務明确地定義在其中,在前台的JavaScript中,用

而在Swato中,背景服務的暴露方式通過filter來實作,前台的調用利用一個ID值來尋訪背景服務類。Swato提供了一個Spring的預設服務Loader,在Spring配置的bean ID直接可以被前台所通路到。如果你不想采用Spring,隻需要替換一下filter,以你自己的方式來進行服務的暴露和權限控制。背景對象的生命周期方面,Swato采用的是request對象注入式,把你的服務對象中實作RequestAware接口,這個服務相關的生命周期便可由你靈活的進行處理。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-928708/,如需轉載,請注明出處,否則将追究法律責任。

0 0 分享到:

轉載于:http://blog.itpub.net/10172717/viewspace-928708/

繼續閱讀