本文 5203 pv

0

新锐Ajax框架:Ext(转)

© kekehu / 技术资源 / 2007.12.08 / 21:58 / 5203PV

新锐Ajax框架:Ext


  

自从Ajax一词于2005五年2月由Jesse James Garrett提出以来,Ajax的应用日益增多,最著名的就是Google的Gmail和Gmap服务,以及照片共享站Flicker。这些站点的用户交互界面突破了原有的方式,使得浏览页面时更为流畅和便捷。于是,这种技术迅速流行,加上Web2.0的概念推波助澜下,Ajax成为业界的明星,不少开发者研究的对象。


  

Ajax到底解决了什么问题?


  

虽然不少开发者认为Ajax只是一个旧瓶装新酒的技术堆砌,但是事实胜于雄辩,Ajax的应用的确给用户带来了较好的操作体验,一些开发者也从“写前台=写网页”的观念改变过来,真正认识到所谓的“前台页面”也算是Application的一种中去。在 Tim O'Reilly 的文章 “What Is Web 2.0? Design Patterns and Business Models for the Next Generation of Software”中他指出,“我们正在进入一个前所未有的用户界面革新时代,Web 开发人员最终能够构建出与本地 PC 应用程序同样丰富的 Web 应用程序。”


  

早在浏览器发明之初,人们对这种“超文本”功能的HTML格式只算是信息传播的载体。那时候,HTML的任务是在浏览器中展现静态的文本或图像信息,活泼一些的就由JavaScript特效动画来点缀。到九十年代初期,随着服务端技术(CGI/Perl)的应用,原本静态的页面逐渐演变为聊天室、论坛、电子商务、信息查询等的各种各样的Web服务。


  

Web服务端开发技术的完善使开发复杂的Web应用成为可能。这便是我们常说的Browser/Server结构开发模式,浏览器成为客户端的唯一工具,数据集中由后台服务器提供。至此,HTML更被赋予了“构造用户界面的”的任务,经浏览器内部渲染出来的结果,便是用户看到的界面。


  

由于HTML天生是一种描述性的语言,使得当今Web UI虽然丰富多彩但互动贫乏,就像在看一页页的纸本一样 ,对于Application的UI表现能力 , HTML表单提供的Input,Select


  

,CheckBox等的元素是根本不能满足复杂的业务需求的。于是人们相对于这种较简单的用户交互方式而言,提出了所谓“富界面”(Rich Client)程序的概念,力求丰富客户端的操作体验,提供桌面程序级(Desktop Application)的应用。与此同时,各大IT厂商亦纷纷积极参与实施,抛出各自的解决方案,如Sun的JavaApplet/JSF,Marcomedia(现Adobe)的Flash/Flex,Microsoft的SmartClient/WPF,--当然还包括不属于任何厂商的Ajax。


  

无论是哪个厂商的技术方案,都是立足于Web三层结构中的表示层的理论基础上,相对于其他两层尤其是逻辑层而言,表示层的方案较为保守,可选择的方案并不算太多。这是由B/S结构所决定的,试想一下,如果经常更变方案,升级客户端软件,则显然失去B/S架构的原意,回到C/S时代高昂的部署和升级费用的日子。


  

幸运的是,现有的技术能较好地结合C/S和B/S的优点,提供几乎可以与客户机应用程序媲美的用户体验。让我们看看有哪些主流技术:


  

Flex 和 OpenLaszlo


  

Flex 和 OpenLaszlo 是极其相似的声明式方法,用来为 Java EE 应用程序创建比浏览器更好的用户体验。Flex 由 Adobe/Macromedia 提供,而 OpenLaszlo 是最初由 Laszlo Systems Inc 创建的开放源码软件。在这两种环境中,都使用独特的基于 XML 的语法来布置和创建用户界面。为了允许不同的 UI 元素与服务器进行交互和通信,可以用 ActionScript(Flex)或 JavaScript(OpenLaszlo)编写脚本。


  

尽管这两种技术有许多相似性,但关键的一点差异是它们需要的运行时基础设施。对于需要与服务器交换数据的客户机,Flex 需要一个 Flex Data Services Server,它与 Flash Player 插件中运行的客户机进行通信。在本质上,这个服务器为客户机和应用程序的服务器组件之间的所有通信和数据交换提供中介。Flex 的主要优点是可以从 Adobe/Macromedia 获得充分的产品支持,但是要为 Flex Data Services Server 的许可证付费。对于某些公司来说,付出许可证费用来换取得到充分支持的产品是值得的。Adobe Flex 2 应用程序也需要 Flash Player plug-in V9。尽管 Flex 可以创建丰富的用户体验,但是某些公司不愿意承受费用和插件限制。


  

OpenLaszlo 技术最初是作为商业产品发布的,但是在 2004 年 Laszlo Systems 开放了这种技术的源码,采用了 Common Public License(V1.0)许可方式。Laszlo Systems 提供支持订阅,而且因为它是一个开放源码项目,您可以选择使用免费资源支持它。对于 OpenLaszlo,费用不是大问题,但是有些组织的公司策略不允许使用开放源码软件,所以可能不能选用 OpenLaszlo。


  

Faces Client Components


  

JavaServer Faces(JSF)是一种 Java EE 1.4 组件,最初是作为 JSR 127 开发的。这种技术的关键目标是,降低为 Java EE 应用程序开发用户界面时要求 Java 开发人员具备的技能水平。因为 JSF 是一个框架,它提供了许多开箱即用的功能;在过去,开发人员在用 JavaServer Pages(JSP)构建同样的用户界面时需要手工编写这些功能。


  

例如,假设您有一个大型 JDBC结果集,需要将它向用户显示。JSF 框架提供了一个 DataTable 部件,可以用来显示数据。如果使用简单的 JSP 构建用户界面,您就必须管理用户与这个数据表的交互,并决定应该向用户显示哪些数据行。通过使用 JSF DataTable,当用户点击 Next 来显示表中的后 x 行数据时,JSF 框架将会处理 Next 请求,您不必自己编写任何代码。尽管 JSF 简化了创建丰富的 HTML 用户界面的过程,但是根据设计 JSF 是一种基于服务器的技术。对后 x 行数据的请求从浏览器发送到服务器,JSF 框架代码在服务器上处理这个请求。JSF 需要一次到服务器的请求/响应往返。


  

Microsoft(WPF)


  

    Microsoft的Windows Presentation Foundation(WPF)是Vista的一部分,是一个图形和展示引擎,主要由新加到.NET框架中的一组类集合而成。Avalon使用的布局语言是"XAML"(可扩展应用程序标记语言),用C#/VB.Net进行编程。微软去年年末推出了对应的开发工具MS Expression Studio, 一度引起轰动。其实WPF和这与Flex及Laszlo都原理类似,不过WPF的程序目前只能在MS的平台上(严格说是只能在Vista上)运行。


  

Ajax


  

Ajax(异步 JavaScript 和 XML)是 Jesse James Garrett 创造的一个术语,它是指一种基于标准的技术/设计模式,用来为服务器部署的应用程序开发比浏览器更好的用户体验。Ajax 对服务器技术没有什么要求,可以处理 Java EE 应用程序、.Net 应用程序和其他应用程序。通过使用 Ajax,可以编写 JavaScript 代码来改进 HTML,创建出丰富的交互性用户体验。例如,JavaScript 可以执行本地用户输入验证,为相同的数据提供不同的视图(条形图、表格、饼图等等),或者通过浏览器的 XMLHTTPRequest 对象与应用程序的服务器组件进行异步的交互。


  

Ajax当前面临的问题:


  

1. 现代浏览器。 在过去,编写 JavaScript 的开发人员必须处理 Netscape、Internet Explorer 和其他浏览器之间的许多不兼容问题。在某些情况下,甚至同一种浏览器的不同版本也有不兼容问题。尽管仍然存在一些不兼容问题,但是大多数内部网应用程序通常需要 Internet Explorer 5.5 或更高版本和/或者 Firefox 1.0 或更高版本,在这些浏览器中以前存在的大多数不兼容问题已经被纠正了。近来组成了一个开放的行业协会 OpenAjax,它的目的是解决 Ajax 的不兼容性问题,以及解决其他 Ajax 相关问题。


  

2开发辅助工具。 直到最近,大多数 JavaScript 开发人员实际上没有开发工具来帮助简化开发和调试。从 Firefox 浏览器发布开始,它就为 Ajax 开发人员提供了一些有用的插件,而且 IBM 最近在 Ajax Toolkit Framework 中集成了一系列有用的技术来帮助进行 Ajax 开发。ATF(Ajax Toolkit Framework)可以从 Apache 站点免费下载,它提供一个基于 Eclipse 的 Ajax 开发环境。ATF 提供的工具包括 JavaScript 语法敏感的编辑器、JavaScript 控制台和 XMLHTTPRequest 对象查看器。


  

3 Ajax 工具包。 在过去,希望使用 Ajax 的大多数开发人员实际上必须从头开始,而 Ajax 工具包现在可以替他们完成许多繁重的工作。工具包提供了各种预制的基于 JavaScript 的用户界面控件(Widgets),让开发人员可以轻松地创建基于 Ajax 的用户体验。工具包通常还提供更高级的抽象,从而对开发人员隐藏前面提到的浏览器不兼容问题。


  

作为一种基于标准的公开技术,现在可用选择的Ajax工具包非常的多。开发人员有的使用GWT(Google Web ToolKit)或DWR服务端生成JavaScript代码,有的在客户端引用JavaScipt工具包开发,有的就直接使用一些低层库如prototype.js做简单的应用。因此,Ajax工具包大体上可以被分为基于服务端的Web-Remoting和原生Native两大类别:


  

Web-Remoting vs.Native


Web-Remoting
Native
原理
对源文件进行静态分析,然后翻译并输出高度优化的JavaScirpt
直接对浏览器开发
优势
简化客户端编程
免去学习前台语言的成本
可制定灵活方案,可掌握性大;冗余代码少
  

企业级Ajax框架


  

在众多的AJAX框架中,考察一个框架是否优秀,除了强调框架的功能、性能外,掌握难度和相关的文档、范例也是参考要数。开源软件Ext便是这样一个不错的选择。Ext针对一个典型的RIA标准,有着下列的解决方案:


  

· 良好的用户体验, 响应速度快 运行时快速高效


  

Ext参考合理的设计模式(例如,Grid的设计灵感来自Swing),对于大量使用浏览器控件的应用场合,JavaScript引擎亦不会胸襟见爪。以下是我个人对EXT的效率分析:


  

· 基于互联网的开放标准进行数据传输


  

Ext以W3C的XHTML+CSS作为MakeUp语言,可解析Array,JSON和XML的数据源


  

· 丰富的组件,基于事件驱动,能进行快速开发


  

Ext的设计初衷就是,尽可能完善UI组件库而不需要其他库的帮忙;所有的UI组件都属于基于观察者(Observer)模式的事件驱动型设计。Ext对页面的要求本身就是unobtrusive的,有利于做到HTML脚本之间的分离


  

· 良好的兼容性,能在多种平台下运行


  

兼容四大浏览器;服务端方面,Ext是一种与服务器中立的语言,使得其它特定语言的库亦可用于Ext处理Ajax服务。只要能返回EXT能处理的数据,任何一种类型的服务端是无要求的


  

当感觉到Ext的强大的同时,也发现JavaScript这门语言发掘潜力仍然不俗,遗憾的是,无论是市面上的书籍,和网上的介绍JavaScript的文章,都是浮光掠影,蜻蜓点水,较少深入JavaScirpt作为另类OOP语言的本质,因此,对于国内已经起步的Ajax程序员,我们觉得应该提供一个学习的场所,认识、了解Ext和JavaScript。在这个动机下,本人自去年10月份开始建造EXT中文站 (www.Ajaxjs.com),通过该网站认识一些朋友,大多数来自Javaeye论坛(当中介绍Eex的帖子分页达16页,25,000多浏览量),而且都是网龄较长,经验丰富的玩家,他们一直都对Ext都保持关注,甚至投入到实际项目中去,反映较好---但亦存在手头资料不足的问题。


  

如果有这么一本介绍EXT的书,我希望它的内容是深入JavaScript语言和Ext的入门,读者群可扩大到美工去。


本文有 0 篇评论

发表你的见解

打开HTML 打开UBB 打开表情 隐藏 记住我
emotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemot
emotemotemotemotemot