Ajax驱动的Web站点

| No Comments | No TrackBacks

最近,许多Web站点开始在开发人员社区当中引起关注。这些站点独特之处在于,它们更像是桌面应用程序而非Web应用程序。当您与它们交互时,它们可以快速在浏览器显示无穷的信息而又无需重新加载页面。

例如,在Google Maps站点(http://maps.google.com/),您可以单击地图,缩小或者放大,然后随心所欲地来回移动鼠标。浏览器会连续地从服务器读取数据,但并不需要刷新浏览器。它们使用的不是applet或者类似Flash的其他程序。那么,它们是如何工作的?

下面介绍Asynchronous JavaScript + XML,即所谓的Ajax。要准确描述什么是Ajax,最容易的方法是让其与相反的情况进行对比。对于大部分Web站点,与Web服务器进行交互是最简单的通信方式——就如您在对讲机(walkie-talkie)上与好友聊天一样。您可以一边讲话他在另一边接听,或者他说话你接听,但您不能同时接听和讲话。对于Web用户,当填写在线表单然后单击提交按钮后,整个页面就会发送至Web服务器,用户必须等待服务器接受请受。当服务器完成处理请求时,它就会将处理过的内容发送过来。只有这时,才可以最终刷新用户页面。Ajax是一种减少这一系列事件的尝试。当用户位于Ajax类型的Web站点时,浏览器可以幕后异步调用Web服务器而无需发送整个页面。

具体内容

通常,Ajax没有软件开发工具包(SDK)。它不是您可以下载的东西。尽管XML出现在Ajax名称中,但它实际上是几种可以使用甚至不使用XML技术的结合。仔细研究一下,我们就会发现它是正被使用的几项技术的混合体。JavaScript、DOM、XMLHttp以及XML是主要的角色。但要紧记,这种方法论既无标准亦无严格定义。您在一个执行程序中所看到的,可能不同于另一个执行程序中的情况。但是,Ajax执行程序中最常见的是JavaScript。

当用户与浏览器交互时,JavaScript代码会处理各种事件。比如按键或单击事件等,并会相应地进行处理。JavaScript使用XMLHttpRequest对象作为浏览器和远程服务器之间的连接。Microsoft首先在Internet Explorer 5中采用XMLHttpRequest对象。

XMLHttp-Request对象最酷的地方是它可以在背景中运行的同时与Web服务器异步进行对话,而无需重新加载页面。当Web服务器接收到浏览器的请求时,它就会进行处理并将处理过的XML数据返回至浏览器。JavaScript引擎收到这种处理过的XML数据,然后使用DOM处理相应的页面部件。例如,在Ajax驱动的页面中,如Google Suggest站点(www.google.com/webhp?complete=1&hl=en),当您输入搜索字段时,每一个字母都被异步发送至服务器。在输入时,内容快速显示在正文的下方。在幕后,每个按键都会向服务器进行数次调用。用户不会受此影响,因为交互不会被中止。只有一部分页面会被刷新。这一切都可以高效地完成,因为仅有一部分页面数据(而非整个页面数据)通过线缆发送。

Ajax并非新生事物

应该注意Ajax并非新生事物。该方法论已运用了好多年。Web站点(如Google)正在证明Ajax的有效性、稳定性,并且使Web看起来更像是一个桌面应用程序:即真正意义的Web开发。Ajax特殊之处在于它可以使用验证过的现有技术完成这一切。换句话说就是,任何标准浏览器(可以处理JavaScript和DOM的浏览器)都可以正常工作。您不需要单独安装其他插件。

在Magenic,我们可以看到这种方法论如何使我们的客户端受益。据我们所知,Ajax并非可以取代一切Web站点,但在计算机指令系统中,它应占有一席之地,并且是我们所需要的一种技能。

ASP.Net 2.0

ASP.Net 2.0可以明显提高脚本模型与这种方法论相结合。它们们称之为脚本回调而非Ajax。实际上,它们按我早先所描述的那样进行工作,但是ASP.Net 2.0通过提供工具和支持从而使之更进一步。

注意事项

1、由于许多工作都必须移交给客户端处理,所以Ajax会影响正确堆叠技术之间的命令行。当使用所现有的方法论设计此类应用程序时,应注意这一点。客户端(浏览器)需要处理更多的工作,JavaScript要完成这些工作会相当复杂。它需要处理按键、鼠标、与DOM交互、处理这些事件和服务器数据的协调等。

2、还应该注意,许多用户可能不想在浏览器上运行JavaScript。这时需要考虑Web站点用户的需要。

3、Ajax名称并非正式的。Adaptive Path的工作人员起了这个容易记住的名字。在ASP.Net 2.0中,它也被称为“脚本回调”。

No TrackBacks

TrackBack URL: http://www.wujianrong.com/mt-tb.cgi/307

Leave a comment

About this Entry

This page contains a single entry by kevinwu published on January 2, 2006 10:53 AM.

What Google Should do in '06 was the previous entry in this blog.

Ajax基础教程 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.