0%

Ajax:Web开发的新方法

Ajax: A New Approach to Web Applications

如果最近的交互设计有什么可以称之为“富有魅力的”,那就是产生网页应用了。所有的最酷炫的设计都是在线的。

尽管如此,网页交互设计师还是对咱们制造桌面软件的同事感觉有些许嫉妒。桌面应用程序丰富且拥有响应能力,这似乎远超在web上的相应功能。使得Web快速增长的“类似的简单性”同样也在我们所提供的经验与用户可以从桌面应用中获取的经验之间形成了落差。

这个落差正在慢慢弥合。瞧一下Google Suggest吧。看看你输入的词汇暗示更新的方式,几乎是立即的。现在让我们来看一下Google Maps的放大功能。用你的光标来抓取地图并卷动屏幕。再一次的,一切几乎是瞬间发生的,没有任何页面装载的明显等待时间。

谷歌搜索和谷歌地图是两种新的在自适应路径上我们称之为“AJAX”的网页应用。这个名字是一种缩写,表示了异步的JavaScript以及XML, 而且它表现了一种就网络上可能性而言的基础范式转移。

Ajax不是一种技术。而是多重技术的组合,其中每一种都有各自存在的理由,各自组合后就产生了一种新的强有力的效应。Ajax包含了:

  • 使用XHTML和CSS的基于标准的表现形式
  • 使用文档对象模型DOM的动态交互展示
  • 使用XML 以及XSLT的数据交互操控
  • 应用XMLHttpRequest的异步数据检索

经典的网络应用模型是以下面的方式进行工作的:大多数用户在界面活动,触发一个HTTP请求并返回网络服务器。服务器端做了一些处理:检索数据,分析数值, 与历史遗留系统交互然后返回给客户端一张HTML页面。这是一种较适合网络早期的超文本媒体处理模型,但是使网页适合于超文本的因素并不适用于软件应用。

图一: 网络应用的传统模型(左)与AJAX 模型(右)的对比

这种方式就技术意义而言是一次飞跃,但是就用户体验而言却并没有带来多少提升。当服务器端在做它自己的事的时候,用户在干什么呢?对了,用户在等待。在任务中的每一步,用户都在等待些什么。

显然,当我们设计网络应用的时候,我们不应该让用户傻等。一旦当一个界面被装载时, 为什么用户一定要在每次应用从服务器需求某些资源时等待(halt)呢?事实上,为什么用户一定要看到应用到达服务器的过程呢?

Ajax是如何不同于旧的网络模型
过在用户和服务器之间引入一个Ajax引擎,可以消除Web应用的开始-停止-开始-停止这样的交互过程。初看起来好像在应用中加入了一层反而使反应性降低了,但事实却恰恰相反。

在会话的开始时期,浏览器装载AJAX引擎 ,替代经典模型中“装载一个页面”。这个AJAX引擎是用JavaScript写的并隐藏于框架结构的后面。这个引擎负责翻译用户可见接口并站在用户方与服务器交互。AJAX引擎允许用户以异步的方式进行交互——独立于与服务器的交互。所以用户不再需要盯着沙漏图标或空白windows浏览器以等待服务器来做点什么。

图二: 传统网络应用的异步交互模式(上)与AJAX的异步交互模式(下)的区别

每一个会生成HTTP请求的用户活动通常以JavaScript 的形式调用AJAX引擎。每一个“无需返回服务器端的”用户请求——如简单数据验证,内存中编辑数据以及一些导航——都由AJAX引擎自行处理了。如果引擎需要响应从服务器端返回——如果提交数据用于处理,下载更多的界面数据, 或检索新数据——那么引擎将使用XML来异步这些请求,而无需停止用户与应用的交互。

谁在使用AJAX
谷歌在开发AJAX的应用上已经投入了大量资金。谷歌在去年宣讲的主要产品如Gmail,最终的beta版本的Google Groups,Google Suggest以及Google Maps都是AJAX应用。(欲关注AJAX实施技术点的详解,可以详细的考察谷歌邮件,谷歌搜索以及谷歌地图)

这些项目展示了Ajax并不仅仅是关起门来的技术方向上的研究,而是真是世界中的应用实践。这并不是一个仅仅在实验室中的技术。并且AJAX应用可以从非常简单的单一功能的谷歌搜索到非常复杂且精致的谷歌地图,即AJAX可适合任何尺寸。

在我们自己的网站过去数月中,我们用AJAX来做自己的工作。并且我们意识到我们只是利用了AJAX所能提供的丰富的交互性与反应性中中很表面的一些功能。Ajax是网络应用领域中重要的进展,其重要性正在增长中。并且由于有这么多的开发人员已经了解如何来使用这些技术,我们希望更多的组织在谷歌的技术领导下使用富有竞争力的AJAX。

向前进
在使用AJAX方面最大的挑战不是来自技术的, 核心AJAX技术是成熟的而且易于理解的。 这些应用的设计师的挑战是:忘记我们自以为知道的网络限制,而构想一个更大更丰富的可能性。