`

漫话Ajax框架(二)

    博客分类:
  • Ajax
阅读更多
陈金洲观点

  毫无疑问,AJAX被越来越多的接受。这不仅仅体现在技术的应用上,更体现在行业范围内的需求提升上。Web应用这种类型不仅仅被用在企业业务系统,更多被用在Web2.0应用中。这些应用意味着以前只能被几十人几百人使用的系统,突然之间会有几十万几百万的用户。用户有了更多选择,能够吸引用户驻留的,除了华丽的界面,那么就是流畅的操作界面和快速的响应。作为实现不打断用户操作的关键技术AJAX, 从吸引用户这一点上,具有不可替代的使命。

  意味着华丽、AJAX的Web2.0应用同样也冲击着企业应用的需求。虽然没有统计数据,但可以看到越来越多的企业应用要求更直观的界面,更流畅的操作,更少的延迟。例如,在前两年,级联下拉框的实现,大多数的框架(或者应用)的实现是选中一个时刷新整个页面,然后根据选中的那个更新下一个下拉框的待选值列表。这个实现在今天看起来几乎是完全不可接受的,无论对客户还是对开发者。

  开发者这边,去年还有关于AJAX几宗罪的讨论,然而现在看来,更多的讨论沉浸到了某一个具体技术中。在认清AJAX技术本质之后,更多的开发者或欣然接受,或用户要求,开始了AJAX相关技术的学习和使用。从我周围看来,曾经认为JavaScript是不太入流的语言的程序员,现在已然逐渐发现,JavaScript很有趣,很强大;用JavaScript实现很酷的网页效果,很有成就感,等等。

  另外, AJAX这个词本身,早已远远超越了它所代表的本来含义。AJAX原本是异步的JavaScript和XML。然而一看到一个绚丽的网页(Web应用),几乎大多数人,具备Web相关知识的,第一个问题往往是:这用的AJAX吧?──AJAX现在几乎成为圆角、拖拽、绚丽、无刷新的代名词。当一个名称上升为一种概念、一种直觉的时候,我们应该知道,相关的技术应用到了什么程度。

  现在几乎已经没有人手工与XMLHttp对象打交道,绝大多数的开发者都使用Buffalo, DWR, Prototype等辅助库、框架进行开发。

  AJAX框架的选择

  由于现在很少有人只用一种AJAX技术,我将AJAX框架的范围扩大一些,分为偏重展现、偏重传输、工具型三个部分。由于我自己的Web工作语言主要在Java, Ruby以及Python之间,以下的评价不包含PHP, .NET下的一些工具。另外,对自己开发的和它的主要竞争者DWR有主要的比较,其他的仅作泛泛评述,估妄言之。

  偏重展现:YUI, Qooxdoo, Dojo

  ·YUI :目前设计比较完整,美观,全面的界面工具库。

  ·Qooxdoo: 开源的另一种选择。

  ·Dojo: 比较完善的库结构,丰富的界面控件。

  偏重传输:Buffalo, DWR

  Buffalo特性:

  1、基于prototype。如果你的AJAX应用也是基于prototype,那么可以减少重复加载prototype的带宽,并且获得相当一致的编程概念。

  2、Bind: 提供了对结果数据的处理,直接将数据绑定到页面对象并展示,这是一个动人的特性。在2.0中,Bind能力更加强大,能够将值直接绑定到表单元素、表格、DIV/Span、甚至整个表单上。关键是这种绑定是无侵入并且与buffalo整体结构完全整合,对外表现只有一个简单的{{buffalo.bindReply}}或者{{Buffalo.Bind.bind}}即可。

  3、序列化:Buffalo支持任意对象,任意深度,任意数据结构的Java到JavaScript以及JavaScript到Java的双向序列化,并且支持引用。

  4、生命周期对象访问:1.2.4之前需要继承一个BuffaloService,从1.2.4开始就不需要继承了,引入了线程安全的BuffaloContext对象,只需要通过BuffaloContext.getContext()即可获得一个线程安全的引用,并且对Request的各种属性进行操作。

  5、对Collection/Array的模糊处理:Buffalo中提供了对Collection/Array对象的模糊识别能力。例如:服务器端有一个方法需要List参数,客户端传递过去一个javascript数组就可以了,不需要费心的组装对象。

  6、客户端组装对象:Buffalo支持在客户端组装对象,甚至可以直接将整个表单序列化为一个对象作为参数传给远程客户端。

  7、对重载方法的处理能力:由于Java与JavaScript之间类型的不匹配,DWR的代码生成无法对重载方法进行处理。例如,sum(double,double), sum(int, int) DWR很可能不知道你要调用哪一个。从2.0开始Buffalo支持了对重载的处理。

  DWR特性:

  1、支持Batch,可以将多个Service函数调用放在一个XMLHttpRequest请求中完成。

  2、Converter:可以转换任意类型的Java对象到JavaScript,并允许直接使用。例如:Customer类包含一个address变量,当AjaxCall返回Customer对象的时候,可以直接在Javascript中使用customer.address来获得Address的信息。

  3、允许Expose部分函数和属性。(Buffalo无限制,可以访问Service中的任意函数。)

  4、DWR2.0中提出了Reverse Ajax,提供在Java代码中来处理页面上元素的功能。

  工具型:Prototype, JQuery, Dojo

  ·Prototype:得益于Ruby语言的设计,它使得你能够以几乎类似于编写Ruby的方式编写JavaScript。由于绑定在Ruby On Rails的发行包中,它成为近两年最流行的AJAX工具。早期它小巧灵活,现在由于加入太多的特性,日渐臃肿。目前1.6版本大小已经超过120K。

  ·JQuery:Prototype的主要竞争者。简单是它最大的优点。大多数常见的复杂操作、效果,JQuery的代码量能够比Prototype少50%以上。

  ·Dojo:采用类似于Java包的管理方式,实现按需加载JS。提供了全面的AJAX、DOM操作支持。然而需要在HTML TAG中嵌入额外的属性,使得网页不能遵守W3C标准,不少开发者对此耿耿于怀。

  来自RIA框架的冲击?

  我并不赞同这种说法,恰恰相反,我认为像Silverlight,Flex等这些RIA框架要考虑来自Web应用的冲击。Web领域几乎已经不存在技术壁垒,能做哪些,那些不适合,负载均衡等等已经有充分的资源可以参考。各种模式都可以灵活的应用到其中,各种测试工具(如Selenium网页测试工具)、开发工具支持得非常出色。而RIA框架要考虑的问题远远要比现在的Web应用多得多。除了RIA所承诺的更容易的实现华丽的效果──在多种JS库的支持下这些效果在Web下并非难事──他们有更多的问题需要考虑:资源的获取和释放,测试的支持,本地存储的问题,事件机制,状态的同步,客户机、服务器数据交互机制(序列化反序列化)等等。RIA想如同现在的Web应用般大规模,远不到时候。大多数基于RIA应用的考虑是让应用能够离线运行,然而与此同时浏览器也在发展,基于网页的本地存贮已经在Google Reader中可以实际使用。也许某一天浏览器就是一个完美的RIA平台,Web应用只需添加本地存贮支持就可以离线使用──类似于Flex、Silverlight的RIA技术,与Web应用,哪个更容易被接受,还真难见分晓。
分享到:
评论

相关推荐

    漫话数学.pdf

    第一章 从计算机说起 第二章 数是什么 第三章 运算的规律 第四章 怎样才能算的快 第五章 对数、算尺与算图 ……

    漫话IP:TCP_IP基础知识读本

    漫话IP:TCP_IP基础知识读本

    《漫话e》作者: 李大潜 编 出版年: 2011年

    一、对数——化乘除为加减二、常用对数三、对数的尺度四、e的现身——从一个复利问题谈起五、自然指数函数和自然对数函数六、无所不在的e七、离不开e的奇妙曲线八、由实变数到复变数附表 常用对数的尾数表(兼作常用...

    初等组合学漫话 算法的基础

    ### 初等组合学漫话:算法的基础 在探讨初等组合数学之前,我们首先要明确这一领域的核心概念及其与算法之间的联系。初等组合数学作为数学的一个分支,它研究的是有限集合元素的不同组合方式,包括排列、组合以及...

    《教育漫话》对幼儿教育实践的启示_0.doc

    《教育漫话》是17世纪英国哲学家约翰·洛克的一部重要教育著作,它对幼儿教育实践提供了深刻的启示。洛克在书中强调了健康教育、道德教育和知识教育的重要性,这些观点至今仍对现代幼儿教育有着深远的影响。 首先,...

    《教育漫话》读后感5000字#(精选.)[001].pdf

    约翰·洛克的《教育漫话》作为教育领域的经典著作,通过信件的形式详细探讨了教育的各个层面,特别是家庭教育的要点,为现代教育者和家长提供了深远的启示。在这部作品中,洛克不仅指出了教育的重要性,还提出了对...

    漫话九月会

    《漫话九月会》是一篇回顾旧时中国北方地区农历九月集市活动的文章。文章通过对过去一段历史时期九月会的描述,带读者回到作者童年时的记忆中,展现了那个时代特有的社会生活和风俗习惯。从文章中可以提取出以下知识...

    初中语文语文论文漫话教育诚信

    初中语文语文论文漫话教育诚信

    《解码三大数学常数:e的密码》《漫话e》

    《解码三大数学常数:e的密码》与《漫话e》这两本书都是关于数学常数e的科普读物,旨在深入浅出地介绍这个神秘而重要的数学概念。数学常数e,通常表示为2.71828…,在数学中占据着至关重要的地位,它不仅在自然对数...

    漫话ERP- 轻松掌控现代管理工具

    漫话ERP- 轻松掌控现代管理工具 以生動幽默的寫法,詳細說明ERP的建構理論

    地理学科漫话自然灾害的双重性.doc

    地理学科漫话自然灾害的双重性.doc

    漫话三国英雄.ppt

    《漫话三国英雄》的主题显然聚焦于中国历史上的三国时期,这一时代因其英雄辈出而闻名,其中最为人们津津乐道的人物包括关羽、曹操、诸葛亮、曹植和张飞等。他们各自的故事和言行,成为了后世诸多成语和典故的来源。...

    漫话数据结构-什么是查找.pptx

    总的来说,“漫话数据结构-什么是查找”引导我们理解查找的本质、相关术语和分类,以及查找在实际问题中的应用。通过学习,我们可以提升解决问题的能力,为编写高效、优化的程序奠定基础,拯救程序的灵魂。

    漫话数据结构-冒泡排序.pptx

    冒泡排序是一种基础的排序算法,它通过重复遍历待排序的列表,...在"漫话数据结构"这样的学习资源中,通过轻松易懂的方式讲解这些基础概念,能够有效地拯救程序的灵魂,让学习者更好地掌握数据结构和算法的基础知识。

    漫话互联网产品经理ppt课件.pptx

    【漫话互联网产品经理】课程旨在深入探讨互联网产品经理这一角色,帮助学员全面了解产品经理的工作内容、职责以及所需的技能。课程从“什么是产品经理”开始,强调产品经理是产品的守护者,负责产品从构思到终结的全...

    初中语文文摘社会北京四格漫话

    当我们翻阅“初中语文文摘社会北京四格漫话”,我们不仅仅是翻阅文字,更是翻开了一幅幅生动的北京社会生活的画卷。通过这些精彩篇章,我们可以领略北京动物园里的故事、个人成长与职场经历的波折,以及城市与人物...

    《教育漫话》读后感.doc

    《教育漫话》是17世纪英国哲学家约翰·洛克的杰作,经过几个世纪的洗礼,这部作品依旧闪耀着教育智慧的光辉。洛克以他独特的见解,将教育分为体育、德育和智育三个核心领域,并在《教育漫话》中详细阐述了他对每个...

    漫话数据结构-简单选择排序.pptx

    第一轮找出最小的5并与第一个元素64交换,第二轮找出次小的6并与第二个元素交换,依此类推,直到整个数组有序。通过这一过程,我们可以直观地看到数据是如何一步步变得有序的,这对于初学者来说是学习排序算法的一个...

    《漫话清高》03.ppt

    在《漫话清高》这篇文章中,作者金开诚深入地探讨了“清高”的含义,通过对中国古代历史人物的事迹分析,揭示了“清高”所涵盖的多层面意义。 文章一开篇便引用了屈原的名句“举世皆浊我独清,举世皆醉我独醒”,这...

    漫话数据结构-猴子选大王.pptx

    - 第二轮:2,4,5,7,8(1号猴子被淘汰) - 第三轮:4,5,7,8(2号猴子被淘汰) - 第四轮:4,7,8(5号猴子被淘汰) - 第五轮:4,8(7号猴子被淘汰) - 第六轮:8(4号猴子被淘汰) 从这个例子中可以看出,数据结构的...

Global site tag (gtag.js) - Google Analytics