首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.3  真实世界中的Ajax富客户端

理论已经说得够多的了,让我们再来看看一些真实世界中的应用,获得一些感性认识。Ajax已经用于创建一些重要的应用,使用Ajax方法的好处是一目了然的。Ajax现在仍然处在发展的早期,这么说吧,这就好比自行车发展到了还只有几个人装上踏板和实心橡胶轮胎的时代,刚有人开始研制盘式刹车器和变速齿轮。下面一节将会考察Ajax当前的状态,然后详细分析Ajax的一个卓越的早期应用,看看使用Ajax将得到什么回报。

1.3.1  现状

打造Ajax的版图,Google比其他公司做得更多(和其他领域的开拓者一样,早在Ajax这个名字浮出水面之前,他们就做了很多工作)。在2004年初,他们就推出了beta版本的GMail服务。除了它阔绰的容量,GMail最为人称道的就是它的用户界面。它允许用户一次打开多个电子邮件,并且,即便用户正在写邮件,邮件列表也能够自动更新。与同期的大多数由因特网服务提供商(ISP)提供的Web邮件系统相比,这无疑是一个显著的进步。而与很多Web界面模仿Microsoft OutlookLotus Notes的企业邮件服务相比,GMail并没有依赖重量级的、容易出问题的ActiveX控件和Java applet,但在功能上却毫不逊色。这样做所带来的好处就是完全的跨平台,可以在任何平台[11]、任何地点使用GMail的服务,无需像企业邮件服务的用户那样需要预先在机器上安装一堆额外的软件[12]

此后,在提供更加丰富的交互性方面,Google走得更远。例如,当用户键入字符时,Google Suggest可以为用户提供与输入字符相符的提示,帮助他们完成想要键入的搜索字符串;Google Maps可以执行交互式的、可缩放的基于位置的搜索。与此同时,其他公司也纷纷开始试验使用这一技术,例如Flickr的在线照片共享系统,它现在已经是雅虎网站功能的一部分了。

到目前为止,我们这里讨论的应用都只算初步的尝试。它们仍然是瞬态应用,为偶尔的使用而设计。几个月来相关的技术框架显著增加,这可以看作是市场向独占式Ajax应用迁移的征兆。第3章将会考察其中的一些框架,而在本书的附录C中,我们将试图总结这一领域的当前状态。

这些证据表明,Ajax正在赢得市场的青睐。我们开发者可以出于个人兴趣来玩一种新技术,但是像Google和雅虎这样的大型企业只有在看到了诱人的商业前景之后才会接受某种新技术。

我们已经概括了Ajax的很多理论上的优势,在下面一个小节,我们将剖析Google Maps,看看这些理论是如何组合在一起来建造真实的应用的。

1.3.2  Google Maps

Google Maps是结合了地图浏览和搜索引擎的产物。初始状态,显示的是美国地图(图1-15)。这个地图可以自由地通过文本来查询,并且可以精确地细化到街道地址或者像宾馆和餐馆这样的生活设施(图1-16)。

查询功能类似传统的Web应用,需要刷新整个页面,但是地图本身是Ajax驱动的。在宾馆搜索的每一个链接上点击,将会在地图上立即弹出一个提示框,地图还可能会稍微滚动以适应这个提示框的位置。滚动地图本身可能是Google Maps最有意思的功能了,用户可以用鼠标拖拽整张地图。地图是由很多块小的图片拼接而成的,如果用户滚动得足够远,要显示出一些新的区域时,这些区域的图片将会异步地加载。这个延迟很明显,可以观察到起初它们是一些空白的区域,当它们被加载时,会一块一块地显示出来。但是在这个地图的更新过程中,用户还可以继续滚动,触发更多的更新。这些小块的地图在用户的会话过程中会被浏览器缓存起来,这使得当回到以前曾经访问过的地图时,显示的速度非常之快。

1-15  Google Maps的首页提供了一个可以滚动和放大的美国地图,还有熟悉的Google搜索条。要注意的是,缩放控件是在地图之上而不是在它的旁边,这使得用户的视线无需离开地图就可以进行缩放控制

1-16  Google Maps上进行宾馆搜索。注意,那些阴影和可爱的提示气球是使用传统DHTML技术创建的。Ajax请求的使用使得这些功能更加动态也更加好用

回到我们关于可用性的讨论,你会发现有两个重要的东西浮现了出来。其一,触发下载新地图数据的操作不是点击一个特定的“取得更多的地图”的链接,而是用户的操作,也就是说,移动地图。用户的工作流程并没有被与服务器的通信所打断。其二,请求本身是异步的,这就意味着,当获取新数据的时候,相关的链接、缩放控件以及其他页面上的功能仍然都可以使用。

因特网上的地图服务并不是什么新东西。如果看看Ajax之前的典型的因特网地图网站,我们看到的是完全不同的交互模式。地图也明显地划分成很多个小块,缩放控件和导航链接可能会在地图的边缘。每次点击这些控件,都会引起整个页面的刷新,随后出现一个显示着不同地图区域的相似的页面。用户的操作总是被打断,在看到Google Maps之后,毫无疑问,用户会觉得Ajax之前的使用方式缓慢而又沉闷[13]

转到服务器端,毫无疑问,所有的地图服务都有一个强大的地图系统作为支撑。每一小块的地图都是一个图片。当用户滚动地图的时候,Ajax之前的地图服务站点的Web服务器需要不断地刷新页面的模板;而在Google Maps上,一旦运行起来,服务器只需要提供必需的数据,而很多的图片已经被浏览器缓存起来了(是的,只要提供相同的URL,浏览器也能缓存页面中的图片。但是,采用这种方案,浏览器在检查缓存是否过期时仍然会造成不必要的服务器流量,而且比起以编程方式在内存中缓存图片的方案,也不是很可靠)[14]。作为Google所推出的一个最卓越的展示品[15],节约带宽是必须要考虑的问题。

对于像Google这样的在线服务来说,易于使用是一个关键的特征,只有这样才能让用户用过之后再回来。而且页面点击数对于商业上的成败至关重要。而引入Ajax所提供的灵活的UI之后,Google的竞争使得传统的地图服务提供商们忧心如焚。当然,后端服务的质量也是需要比较的因素,但是当其他部分都是一样的时候[16]Ajax形成了巨大的商业优势。

可以预期,像这样更为丰富的界面的公开展示会越来越多,变得更加普遍。作为一种很容易推销出去的技术,在接下来的几年里Ajax看来会有很光明的前途。然而,其他的富客户端技术也在谋求获得市场份额,虽然它们不在本书的讨论范围之列,但在结束我们的综述之前对它们做一下展望也是很重要的。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论