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中,用<script src="xxx">的方式既可以把服务引进到客户端来。周期管理也在XML可以配置。
而在Swato中,后台服务的暴露方式通过filter来实现,前台的调用利用一个ID值来寻访后台服务类。Swato提供了一个Spring的默认服务Loader,在Spring配置的bean ID直接可以被前台所访问到。如果你不想采用Spring,只需要替换一下filter,以你自己的方式来进行服务的暴露和权限控制。后台对象的生命周期方面,Swato采用的是request对象注入式,把你的服务对象中实现RequestAware接口,这个服务相关的生命周期便可由你灵活的进行处理。
分享到:
相关推荐
它与DWR 和JSON-RPC一样,着眼于Web远程调用(Web Remoting),其简洁而实用的特性一直以来深受开发者喜爱。 Buffalo2.0最大的特点在于其性能的提升,还有完全自行实现的Java到JavaScript协议转换。得益于新的协议实现...
除了Ajax的这些基础知识外,本书还详细介绍了Ajax的5个相关框架:Prototype.js,Dojo,DWR,JSON-RPC-Java和AjaxTags。.. 本书介绍的不是单纯的Ajax技巧,而是侧重于介绍Ajax技术与J2EE技术的融合,让Ajax技术融入...
在使用DWR之前,通常会涉及远程调用技术,比如RPC(Remote Procedure Call)或JSON-RPC,这些技术使得客户端可以执行服务器上的操作。DWR则简化了这一过程,它将Java对象直接暴露给JavaScript,使得开发者可以像操作...
5. **JSON-RPC-Java**:这是一个基于Java的JSON-RPC实现,允许在JavaScript中透明地调用Java代码或EJB方法。它可以运行在Servlet容器或J2EE应用服务器中,如Tomcat和JBoss。 6. **Tacos**:Tacos为Tapestry Web框架...
DWR通过AJAX技术提供了一种安全、高效的远程方法调用(RPC)机制,使得前端开发者可以轻松地调用后端的Java方法,获取数据或执行业务逻辑,而无需手动处理复杂的HTTP通信。 在这个"Dwr示例代码,绝对好用"的压缩包...
开发者可以通过DWR轻松地在浏览器和服务器之间传递数据,如在示例中所示的`http://localhost:8080/dwr-reverse/before.jsp`和`http://localhost:8080/dwr-chat/before.jsp`,这些页面展示了DWR在实现实时数据更新的...
在实际开发中,还需要关注Ajax的一些挑战和解决方案,例如浏览器兼容性问题、跨域安全限制、Java数据序列化、JSON-RPC、DOJO、GWT、iframe、Prototype库的使用、超时与错误处理、Reverse AJAX(Comet技术)以保持...
-- WARNING: 允许JSON-RPC连接会绕过DWR提供的大部分安全保护,请谨慎使用 --> <init-param> <param-name>jsonRpcEnabled</param-name> <param-value>true</param-value> </init-param> <!-- WARNING: 允许...
然而,使用如DWR(Direct Web Remoting)或JSON-RPC这样的库,可以在JavaScript中直接调用Java方法。这些库会自动生成JavaScript代码,使得看起来像是在浏览器端执行,但实际上所有的数据交换和调用都在服务器端完成...
SWATO使用JSON-RPC-Java机制实现客户端JavaScript远程调用服务器端Java和EJB接口的功能。客户端接收到的数据可以是JSON格式,SWATO后端直接将Java对象映射为JSON;也可以是XML格式,客户端通过SWATO客户端引擎将XML...
7. **JSON and XML Support**:DWR支持JSON和XML格式的数据交换,这两种格式都是Web服务中常见的数据交换格式。 8. **Error Handling**:DWR提供了错误处理机制,当服务器端出现异常时,可以在客户端捕获并显示错误...
DWR的核心功能是实现JavaScript与Java之间的直接远程调用(Remote Procedure Call,RPC)。这使得开发者可以轻松地在浏览器端调用服务器端的方法,就像它们是本地函数一样。这种技术极大地提高了Web应用的交互性和...
DWR允许Java对象在Web浏览器和服务器之间进行直接调用,从而实现了JavaScript与Java之间的远程方法调用(RPC)。这意味着开发者可以像操作本地对象一样操作服务器端的对象,极大地提高了Web应用的交互性。 在“ajax...
DWR的核心功能是提供了JavaScript和Java之间的远程调用(Remote Procedure Call, RPC),这使得前端开发人员能够利用JavaScript轻松地与服务器交互,而无需了解复杂的网络通信细节。DWR支持多种数据格式,包括JSON、...
DWR(Direct Web Remoting)是一种Java库,用于在浏览器和服务器之间进行实时、安全的双向通信,使得JavaScript可以直接调用服务器端的Java方法。它极大地简化了Web应用中的AJAX(Asynchronous JavaScript and XML)...
尽管DWR并非Java平台上唯一的Ajax-RPC工具包,但它却是最成熟和功能最为丰富的之一。DWR的特点包括: 1. **简化远程调用**:DWR允许前端JavaScript代码直接调用后端Java方法,无需编写额外的XML或JSON序列化代码。 ...
然后,创建`dwr-engine.js`和`dwr-servlet.xml`文件,前者是客户端的JavaScript库,后者是服务器端的配置文件,用于指定允许的Java类和方法。 2. **创建Java服务** 在服务器端,我们需要编写一个Java方法来检查...
DWR使得JavaScript和Java之间可以直接通信,就像它们是同一语言一样,消除了传统AJAX需要通过XML或JSON进行数据交换的复杂性。 DWR的核心概念包括: 1. **Cascading Style Sheets (CSS) Selectors**:DWR允许通过...