`
txf2004
  • 浏览: 7080622 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
| |
[不指定 2006/09/13 21:03 | by zkj ]
等不及dwr2.0了。

精巧的设计使DWR很容易被java开发人员接受;对传统web程序的无侵害性让它被引入更多的项目。与服务器端通信,DWR很有代表性,并很好的隐藏的xmlhttp对象,也基本可以满足我们要求。如果我们想抛弃传统的webwork/spring mvc等MVC框架,全部数据由DWR来实现的话,也有一定风险。没办法,只能挖掘DWR深层次的应用了。

一、业务层设计
为了讨好传统的,用户量惊人的传统web应用。可能更准确的说是webwork/jsf为了和火热的AJAX套上关系,主动和dwr联系。dwr可以与Struts/JSF/PageFlow....集成。webwork最先干这个事,效果不好,用户根本不满足那一点点ajax应用。我认为与DWR的服务器端业务层最合适的是spring.也就是DWR的creator最好的是spring IOC框架.
前段时间考虑,想在service层前面再有一外观层,因为dwr/ajax在浏览器端可能有很多细粒度的方法,以防破坏service层OO特性.(太教条了). 我们设计service层时,完全可以考虑,我们正在为DWR设计服务层,该注意的都应该注意.例如方法不能重载,不能用javascript关键字delete......
设计要点:
细粒度方法,粒度划分由浏览器业务决定.void updateName(id,name); void updateUser(user);???
方法的参数能用基本类型就用基本类型,可能性能会好点???
避免方法重载
关键字
//todo
二、关于PO/VO....
如果你用hibernate,如果把PO让dwr的HibernateBeanConverter处理,可以看http://getahead.ltd.uk/dwr/server/hibernate .
好象也有问题,尤其是hibernate3属性的lazyload.

User.getRoles();
roles.getUsers();
logic.getUser();
logic.getUserList();
logic.getRolesList();
........

好象VO/DTO又有出头之日了.

另外还有一个问题.

logic.java
User logic.find(int id);
logic.save(User user);
action.java
User user=logic.find(id);
user.setName("");
.....
....
logic.save(user);

如果在ajax应用中,我相信会有logic.updateProper();这些细粒度方法,如果还象以前那样,那AJAX还有什么意思.

我现在意见是AJAX为主的应用中放弃hibernate,用spring template,不考虑OO.
毕竟不是所有的应用都适合AJAX为主.

ajax portal
http://my.msn.com/
Window对象
改变它的位置
填加连接
......
这些细粒度方法.OO不见得有多合适.


三、DWR服务器端扩展
1 、htmlConverter
DWR最让人称道的是java方法可以由javascript调用,并把java对象和"json"互换.如果一个特点特别亮的话,那它肯定会有更大的不足.
ajax可能传递 xml/json/html片段等.这里我觉得json基本可以替代xml,但html片段,dwr几乎没有支持,虽然可以由json包含html片段,但注意,这个html有java生成.html片段我任何还是很有必要的.
如何生成这些html?由java实现?freemarker?htmlConverter?如何简单配置?值得考虑一下!
2、如果简化converter
dwr提供的converter功能已经很不错了,但是扩展.编写自己类型的converter还是很麻烦.
现在服务器端生成javascript也挺热闹,虽然偶不是很感兴趣,但如果dwr能把converter弄简单一些,包括配置,扩展,所见既所得.那就完美了.
另外对于java反射感觉不爽,如果在正式运行环境下,把具体对象bean/object converter重写一下也是方便的.
四、客户端开发
通过服务器生成javascript,与service函数对应.方便确实方便,但这也成了众多人的批判点.其实这些js不下载,dwr也可以运行的很好.
其实dwr的这个封装没有必要,限制的dwr的开发.比如偶想在客户端做个cache,nnd,函数类型,不爽.编写无聊的,可能层次很深的callback函数.让代码很乱.
另外dwr能称为ajax framework真有些牵强,如果不是j2ee程序员喜欢赶时髦,唉,这帮不知疲倦的人啊.
主要是客户端代码太弱,还须努力.
这部分我已经做了点点工作,过几天show一下.
五、后续努力
dwr如此优秀,我们应用的却不是很好,只能当成一个方便的数据存取框架.
如果在浏览器角度,我们把服务器当成数据库的话,dwr做的不错.但这些json数据如何与dojo/yui/qooxdoo 优秀试图框架结合,需要大家努力.




这几天准备试着基于dwr开发一客户端MVC实现.
有什么建议欢迎讨论.
分享到:
评论

相关推荐

    dwr dwrdwr

    dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr

    DWR中文文档DWR

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行直接的交互,从而实现在Web应用程序中的Ajax功能。DWR的主要目标是简化前后端的数据交换,提高用户体验,使得Web应用能够像桌面...

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> ...

    dwr笔记 dwr自学资料

    DWR (Direct Web Remoting) 是一种开源Java技术,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用服务器端的Java方法,极大地简化了客户端和服务器端的数据交换。本笔记将...

    dwr实现ajax功能ajax+dwr

    **DWR(Direct Web Remoting)**是一种Java技术,它允许Web应用程序在客户端与服务器之间进行实时通信,而无需刷新整个页面。通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous ...

    dwr demo dwr简单使用

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。DWR简化了AJAX(Asynchronous JavaScript and XML)的开发,使得开发者可以像调用...

    dwr1+dwr2+dwr3 jar包

    这个压缩包包含了DWR的三个主要版本:DWR1.0、DWR2.0和DWR3.0的jar包,这些jar包是运行DWR应用的核心组件。 DWR1.0: DWR1.0是DWR项目的早期版本,主要目标是简化Web应用中的异步通信。在这个版本中,DWR提供了一个...

    DWR的学习资料,DWR学习必备

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的JavaScript到服务器端Java对象的通信。这个技术允许开发者在浏览器中直接调用服务器端的方法,极大地简化了AJAX(Asynchronous JavaScript ...

    SpringBoot整合DWR3.0.2-RELEASE独立部署示例代码以及修改过的DWR3.0.2-RELEASE资源JAR包

    该示例资源主要解决如下两个问题,其一就是解决SpringBoot集成DWR3.0.2-RELEASE版本,无配置文件快速简洁完成集成工作,省去dwr.xml等DWR框架初始化需要的配置文件;其二就是解决了集成后的SpringBoot项目在开发环境...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    这个压缩包包含了DWR的三个关键组件:DWR3.0.jar,DWR的实例war文件,以及DWR2.0的中文说明文档。以下是关于这些组件的详细知识: 1. **DWR3.0.jar**: DWR3.0.jar是DWR框架的核心库,包含所有必需的类和接口,...

    dwr跨域访问以及dwr的使用+dwr.jar

    Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时、安全的双向通信,有效地打破了JavaScript和Java之间的壁垒。这个技术在2005年推出,主要解决了AJAX(异步JavaScript...

    DWR 教程 中文API DWR.xml配置文件说明 DWR学习笔记

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java代码之间的双向通信。这个教程包含了一系列的文档和资源,帮助开发者深入理解和使用DWR。 首先,"DWR学习笔记"提供了对...

    dwr2.0 dwr3.0 jar包

    DWR(Direct Web Remoting)是一个开源的Java库,它为Web应用程序提供了强大的Ajax功能。通过DWR,前端JavaScript可以直接调用后端Java方法,从而实现动态、实时的Web交互,提升用户体验。这个主题主要围绕DWR的两个...

    Dwr入门操作手册Dwr

    Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr...

    dwr.jar 以及dwr配置文件

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许在JavaScript和服务器端Java之间进行双向通信,实现Web应用程序的Ajax功能。DWR使得动态网页能够与后台服务器进行实时交互,无需刷新整个页面,提高了用户体验...

    DWR配置文件详解,DWR配置

    **DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...

    dwr所需要的jar包

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时通信,无需使用插件或复杂的JavaScript框架。DWR简化了AJAX(Asynchronous JavaScript and XML)开发,使开发者可以像...

    DWR中文教程(外带DWR包)

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的JavaScript到服务器端Java对象的通信。这个“DWR中文教程(外带DWR包)”为初学者提供了一个全面的入门指南,帮助理解并掌握DWR的基本概念和...

    DWR2.jar + DWR.xml + DWR2.0.dtd + Web.xml

    Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用Java方法,从而实现了富互联网应用(RIA)的功能。DWR2.0是DWR的一个版本,...

Global site tag (gtag.js) - Google Analytics