AJAX 框架介绍

来源:互联网 发布:远程桌面登陆软件 编辑:程序博客网 时间:2024/04/30 08:33
      原文地址http://www.accpit.com/news/070416.asp
到此为止,你可能已经注意到,使用 Ajax 编程时有很多麻烦事。如果你要支持多个浏览器(现在还有谁只支持一个浏览器呢?),无疑会遭遇不兼容问题。单看一个简单的动作,比如说创建 XMLHttpRequest 对象的一个实例,这需要先进行浏览器测试。一旦开始尝试使用 Ajax 技术,你很快就会注意到要反复地完成同样的一些任务。当然,你可以收集一些常用代码库,甚至创建自己的框架。不过,做这个工作之前,需要先了解一下现在已 经有些什么了。
与所有优秀技术一样, Ajax 已经催生出大量框架,有了这些框架,开发人员的日子好过多了。我们要强调一点, Ajax 还很新,而且还在发展,框架领域也同样如此。几乎每天都有新来者,目前还看不出谁是最后的赢家。 2003 年 6 月之前,这方面的框架还不多,所以在以后的几个月可能还会有巨大变化。
有些框架基于客户端,有些基于服务器端;有些专门为特定语言设计,另外一些则与语言无关。其中绝大多数都有开源实现,但也有少数是专用的。我们不会面面俱 到地谈到每一个框架,而且也不可能深入分析提到的每个框架。我们的出发点很明确,就是让你对现在有些什么有所认识。哪个框架最适合你?对于这个问题,只有 你自己有发言权;不过,在框架领域稳定之前,你可以持一种保守的态度。下面几节介绍了一些浏览器端框架。
一、浏览器框架

1 、 Dojo
     Dojo 是最老的框架之一,于 2004 年 9 月开始开发。这个项目的目标是建立充分利用 XHR 的 DHTML 工具包,并把重心放在可用性问题上。 Dojo 只有几个文件,不用处理 XHR 的建立,只需调用 bind 方法,并传入想调用的 URL 和回调方法即可。就这么简单。还可以使用 bind 方法来提交整个表单。
Dojo 有一个特性使它独树一帜,这就是它支持向后和向前按钮。尽管这个特性不一定在每个浏览器上都能用(遗憾的是, Safari 就是一个异类),但你确实可以注册一个回调方法,在用户点击了向后按钮或向前按钮时触发这个方法。 Dojo 还提供了 changeURL 标记,力图解决使用 Ajax 所固有的书签问题。
Dojo 看上去是相对成熟的工具包之一,它把重点放在可用性上,这一点很不错。 Dojo 表现得相当稳定,在它身后还有一些支撑力量。 Dojo 的邮件列表相当活跃,多看一些文档可能更有帮助。可以在 dojotoolkit.org 得到更多相关信息。
2 、 Rico
    Rico 是市场上最新的框架之一,由 Sabre Airline Solutions 开发,随后又成为开源实现。当然, rico 在西班牙语里就是 rich ,说明这个项目的总目标是提供一组组件来开发丰富的因特网应用。它得到了广泛的浏览器支持,不过让人不解的是 Safari 并不支持 Rico 。
与 Dojo 关注可用性不同, Rico 则是针对拖放动作、数据网格和所谓的电影效果(移动部件、淡入淡出等等)而设计。 Rico 网站上有很多有意思的演示版( DEMO ),并且提供了代码。如果开发人员想尽快了解 Rico ,并且运行起来,这是一个很好的起点。相关的文档不多,不过随着这个框架的日渐成熟,这种情况会有所改观。
Rico 可以作为单个文件下载,不过你可能还需要 Prototype JS 库。更多有关的信息请访问 openrico.org/home.page 。
3 、 qooxdoo
    qooxdoo 也是 Ajax 框架领域的一个新成员,它提供了一个基于 JavaScript 的工具包来弥补 HTML 的不足。尽管还处在早期的 alpha 阶段,但 qooxdoo 确实提供了一些相当引人注目的部件。使用 qooxdoo ,可以模拟标准胖客户应用中的一些特性,如菜单条、工具提示、网格布局和拖放支持。
qooxdoo 确实有一些有用的文档,还对底层细节提供了很有帮助的解释。 qooxdoo 的魅力显然体现在它的复杂部分上。如果你的目标是创建瘦应用,并希望它与胖客户应用相差无几,就可以试试 qooxdoo 。更多有关的信息请访问 qooxdoo.oss.schlund.de 。
4 、 TIBET
    你觉得 Ajax 最早是什么时候出现的?根据对此的解释,也许会认为 TIBET 可能是现存最老的框架。根据文档所述, TIBET 小组从 1997 年就开始开发这个工具包,他们的目标是提供企业级 Ajax 支持。 TIBET 看上去不只是包装了 XMLHttpRequest 对象,它还对 Web 服务和底层协议提供了支持,并且提供了 Google 、 Amazon 和许多其他常用服务的预置包装器。
真正让 TIBET 卓而不群的是,它有一个完全交互式的基于浏览器的 IDE ,这能大大简化开发、调试和单元测试。更多有关的信息请访问 www.technicalpursuit.com 。
5 、 Flash/JavaScript 集成包
    在 Ajax 之前, Flash 很是风行,很多 Web 网站都建立在 Flash 平台上。那些曾对 Flash 狠下一番功夫的人不想完全放弃 Flash ,利用这个开源项目就能同时利用 Ajax 技术。这个工具包在所有主要浏览器上都能用,使得 JavaScript 能够调用 ActionScript , ActionScript 也能调用 JavaScript 。可以来回传递大量对象,包括日期、串和数组。
Flash/JavaScript 集成包的安装涉及一些 JavaScript 文件,以及两个用于 Flash 的库函数。从页面上调用 ActionScript 函数只需几行代码而已。有关的文档相当少,不过,如果你想使用 Ajax 访问 Flash ,这个工具包就很值得研究。更多有关的信息请访问 weblogs.macromedia.com/flashjavascript/ 。
6 、 Google AJAXSLT
    基于 Google Maps 的工作, Google AJAXSLT 是使用 XPath 的 XSL 转换( XSLT )的 JavaScript 实现。 XSLT 可以把 XML 文档转换为其他语言,如 HTML 。 AJAXSLT 允许使用 JavaScript 在浏览器上直接完成这些转换。
Google AJAXSLT 在所有主要浏览器上都能工作,它是在 BSD 许可证下发布的。这个工具包很小,包括几个 JavaScript 文件,还有一些方便的测试页。 Google AJAXSLT 不是十全十美的,不过,如果 Google Suggest 有所提示,我们希望 Google AJAXSLT 的缺点能很快解决。因为 Google 是最先使用 Ajax 的网站之一,我们会很有兴致地看到在未来几个月它还会有所增加。更多有关的信息请访问 goog-ajaxslt.sourceforge.net 。
7 、 libXmlRequest
    libXmlRequest 框架也是比较老的一个框架,早在 2003 年就已经发布了。这个框架包括一个 JavaScript 文件,它相当于 XMLHttpRequest 对象的一个包装器,提供了两个重载的请求函数: getXml 和 postXml 。另外,它有一些处理缓冲池和缓存的属性,还有一些工具函数处理常见的任务,如解析来自服务器的 XML 以及修改 DOM 。
这个工具包能在哪些浏览器上运行,这一点还不是很清楚,而且有关的文档相当少。这个工具包版权归其作者 Stephen W. Cote 所有,其中没有提到许可问题。因此,只能用它帮助你产生灵感。更多有关的信息请访问 www.whitefrost.com/index.jsp 。
8 、 RSLite
    RSLite 是远程脚本的一个实现,由 Brent Ashley 编写。从技术上讲,它没有利用作为 Ajax 核心的 XMLHttpRequest 对象,但是得到了更广泛的浏览器支持。如果你需要支持原来的浏览器,而这些浏览器不支持 XMLHttpRequest 对象,就可以试试 RSLite 。 RSLite 是相当轻量级的,已从 2000 年发展至今 。更多有关的信息请访 www.ashleyit.com/rs/rslite/ 。
9 、 SACK
    SACK (简单 Ajax 代码包)开发为一个瘦包装器,包装了 XMLHttpRequest 对象。其作者 Gregory Wild-Smith 认为,其他的许多框架太过复杂,而且做了许多本不该它们完成的任务。所以他创建了 SACK 来简化 Ajax 的开发。 SACK 包括几个可以简化服务器调用的方法。比起具体创建适当的 XMLHttpRequest 对象实例来说,用更少的代码就能向服务器发送数据,并处理响应。
SACK 由一个 JavaScript 文件组成,其中包含很少的代码。 SACK 底层软件的发布得到了修改 X11 许可(也称为 MIT 许可),与大多数开源项目一样,它的文档并不多,不过,入门肯定还是绰绰有余的。 SACK 的真正强大之处在于它的简单性,如果你要找的是一个基本包装器,可以试试 SACK 。更多有关的信息请访问 twilightuniverse.com/projects/sack/ 。
10 、 sarrisa
    sarissa 有一点是 Ajax 做不到的,它以一种独立于浏览器的方式对 XML API 提供了包装支持。利用这个框架,创建和使用 XMLHttpRequest 对象实在是小菜一碟(不用检查浏览器,它已经为你处理好了)。另外, sarissa 还对使用 DOM 提供了支持。类似于 Google AJAXSLT , sarissa 也支持 XSLT ,它模拟了 IE 上的 Mozilla 处理器。
sarissa 只包括几个类,在 GPL 协议下发布。 Mozilla/Firefox 和 IE 都充分支持 sarissa ,只在 Opera 、 Konqueror 和 Safari 浏览器上有些函数不能用。更多有关的信息请访问 sarissa.sourceforge.net/doc/ 。
11 、 XHConn
    XHConn 类似于 SACK ,它相当于 XMLHttpRequest 对象的一个简单包装器。你不用直接使用 XMLHttpRequest 对象,只需首先启动一个 XHConn 实例,与使用 XHR 同样的方法加以处理。也就是说,无需浏览器检查,并提供了一种简单的方法来确定浏览器是否支持 XHR (这对于需要妥善降级的网站尤其方便)。
XHConn 在 Safari 、 IE 、 Mozilla 、 Firefox 和 Opera 上都能工作。类似于大多数 Ajax 框架,这是一个开源实现,在 Creative Commons License 协议下发布。 XHConn 是一个代码不多的文件,不过它确实做到了该做的事情 —— 简化 Ajax 。更多有关的信息请访问 xkr.us/code/javascript/XHConn/ 。
二、服务器端框架
以下介绍服务器端的框架。
1 、 CPAINT
    CPAINT (跨平台异步接口工具包)在服务器端实现 Ajax ,它向客户返回文本或 DOM 文档对象,以便用 JavaScript 处理。 CPAINT 在大多数主要浏览器上都能用,而且支持远程脚本,在 GPL 协议下发布。这个项目的文档相当完备,不过, CPAINT 只支持 PHP 和 ASP 。更多有关的信息请访问 sourceforge.net/projects/cpaint/ 。
2 、 Sajax
    利用 Sajax ,可以直接从 JavaScript 调用服务器端代码。 Sajax 支持 Perl 、 Python 、 Ruby 和 ASP 等语言(不过奇怪的是,目前并不支持 Java )。安装 Sajax 相当简单,只涉及针对特定服务器语言的简单的库。 Sajax 的开发社区极其活跃。已经确认的只有 IE 6 和 Mozilla/Firefox 提供 Sajax 支持,不过本书作者认为它在 Safari 上也能很好地使用。更多有关的信息请访问 www.modernmethod.com/sajax 。
3 、 JSON/JSON-RPC
    JavaScript 对象注解( JSON )是一种文本格式,与 XML 很相似,可以用于交换数据。 JSON 的设计要保证两方面,一方面便于人阅读,另一方面便于机器解析,它使用了 C 系列语言类似的约定。与 JSON 相关的还有 JSON-RPC ,这是一个远程过程调用( RPC )协议,类似于 XML-RPC ,但面向的是 JSON 语言。作为规约, JSON-RPC 在许多语言中都有实现,包括 Java 、 Ruby 、 Python 和 Perl 。
由于 JSON-RPC 是规约,你需要知道哪个特定实现适用于你的环境,还要充分了解特定的实现。取决于具体的实现,有些实现的文档相当完备,有些则根本没有。开发人员的参与程 度也有很大不同。关于 JSON-RPC 规约的讨论已经有些少了。更多有关的信息请访问 www.crockford.com/JSON/index.html 。
4 、 Direct Web Remoting
    利用 Direct Web Remoting (DWR) ,你能从 JavaScript 直接调用 Java 方法,就好像它们是浏览器的本地方法一样。尽管后台严格限制为 Java ,但 DWR 仍然是最流行的框架之一。 DWR 的文档是最棒的,还有一些有用的例子可以帮助你入门。
安装并不难,不过还要编辑 Web 应用的部署描述文件,另外要编辑 DWR 特定的文件。 DWR 配置文件指定了可以远程创建和调用的类,而且文档中警告用户:从浏览器调用服务器确实存在一些安全问题。除了包含服务器端代码的 JAR 文件,另外还有两个 JavaScript 文件包含了一些辅助函数。 DWR 适用于一些常见的 Web 框架,如 Struts 和 Tapestry ,在 Apache 协议下发布。如果想从 Web 页面调用 Java 方法, DWR 能助你一臂之力。更多有关的信息请访问 getahead.ltd.uk/dwr/index 。
5 、 SWATO
    Shift Web Applications TO (SWATO) 也是一个基于 Java 的 Ajax 框架解决方案。 SWATO 在所有 Servlet 2.3 或更高版本的容器中都能工作,类似于 DWR ,它也需要对配置文件做一些更新。有意思的是, SWATO 充分利用了 JSON 来完成客户和服务器之间数据的编组,与本附录中讨论的其他一些框架相似,它也允许从浏览器调用服务器端 Java 。为了帮助开发人员, SWATO 包括许多可复用的组件,如自动完成文本框等。
与使用其他框架相比,使用 SWATO 要相对复杂一些,要访问的类需要实现一个 SWATO 接口。不过,其文档相当完备,对于入门来讲绰绰有余。 SWATO 设计为使用 Spring 来打包服务,但是不一定非得如此。更多有关的信息请访问 https://swato.dev.java.net/doc/html/ 。
6 、 Java BluePrints
    Sun 的 BluePrints 小组一直忙于将 Ajax 纳入他们的解决方案目录( Solutions Catalog )中。 Solutions Catalog 包括一些很好的文档,描述了如何使用基本 Ajax ,如何实现自动完成,如何创建一个进度条以及如何验证表单。它还包括 JavaServer Faces 组件。为 BluePrints Solutions Catalog 开发的代码可以从 www.java.net 网站得到。
7 Ajax.Net
    Ajax.Net 之于 Microsoft .NET 就相当于 SAJAX 、 DWR 和 SWATO 之于 Java 。利用 Ajax.Net ,你能从 JavaScript 客户调用 .NET 方法。 Ajax.Net 包括一个 DLL ,可以与 VB .NET 或 C# 一同使用。 Ajax.Net 的文档很好地展示了针对各种场景的解决方案,而且能得到相关的源代码。不过, Ajax.Net 的许可协议很不明确。更多有关的信息请访问 ajax.net

8 、 Microsoft 的 Atlas 项目

    Microsoft 在 Ajax 领域涉足的时间已经不短了,毕竟, XMLHttpRequest 对象是 Microsoft 发明的,而且从 1998 年开始就已经用在 Web 版本的 Outlook 中。 Microsoft 把重点放在提供一个更加健壮的开发环境上,从而让开发人员的工作更轻松。 Microsoft 的着眼点还不只这些,还力图提供客户端脚本框架、 ASP.NET 控件和 Web 服务集成。 Microsoft 还发布了 Atlas 项目,作为其 ASP.NET 2.0 预览版的一部分。有 Microsoft 的介入,开发人员的工具包可能会比今天充实得多。更多有关的信息请访问 beta.asp.net/default.aspx?tabindex=7&t-abid=47 。
9 、 Ruby on Rails
    Rails 是一个令人兴奋的新 Web 框架,建立在 Ruby 语言基础上。如今, Rails 已经得到了大量关注(在 Google 上查一下 Rails ,可以找到更多信息),这是因为使用 Rails 能够快速开发基于 Web 的应用。开发 Basecamp 时, 37signals 小组提出名为 Rails 的框架。 Basecamp 正是 Ajax 应用的主要示例,所以看到 Rails 对 Ajax 提供如此充分的支持,我们不应感到奇怪。 Rails 有许多内置的 JavaScript 库,其中包装了很多常用的特性,它还包含一个模块,其中包装了 Ruby 的 JavaScript 调用。如果你在使用 Rails ,就会发现 Ajax 非常简单。