
1.2 重新设计Web应用
传统Web应用的不足一直突显在用户面前,用户常常抱怨系统的响应速度太慢。除了网络带宽的限制、业务逻辑复杂、硬件设备制约等因素外,频繁的页面刷新以及每次响应都必须下载整个响应页面,也导致了响应速度变慢。因此,传统Web应用必须重新改进。
1.2.1 富Internet应用
B/S结构已成为应用程序开发的默认结构。用户对应用程序复杂性要求日增,Web应用程序对完成复杂逻辑始终差强人意。
传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML适合于文本显示,传统的基于HTML页面的系统已经不能满足网络浏览者更高的、全方位的体验要求。这就是“体验问题”(Experience Matters),而富Internet应用(Rich Internet Applications,RIA)的出现就是为了解决这个问题。目前Web领域和桌面软件领域正逐步向RIA靠拢,预计三五年后RIA的时代将会完全到来。
对于理想的RIA,用户无须安装任何客户端软件,只需拥有浏览器。一个典型的富客户端应用是百度地图。百度地图支持鼠标的拖动、放大、缩小。地图随着鼠标的拖动而拖动,但页面本身却无须重新加载。如果鼠标拖动得太远,可能出现部分空白区域,但这种空白只是地图区域在加载,而不是整个页面在加载。
当使用鼠标单击地图上的提示点时,地图上将出现对该点更详细的介绍。图1-4所示为百度地图中的黄鹤楼信息。

图1-4 百度地图应用
1.2.2 Ajax的实际应用
Ajax本质上是一种RIA,而且其优势非常明显。基于Ajax的应用无须浏览器下载任何插件,并且可以在任何平台上良好运行。
从本质上看,Ajax就是异步发送请求JavaScript,也包括动态装载服务器数据。图1-5所示为异步发送请求的示意图。

图1-5 异步发送请求
Ajax除了异步发送请求外,还能动态加载服务器响应数据。使用Ajax能避免频繁刷新页面,服务器响应的是数据,而不是整个页面内容。Ajax负责获取服务器数据,然后将服务器数据动态加载到浏览器中。
Ajax还有个显著的优势是:所用的技术大都是些“古老”的技术,例如JavaScript、DOM、CSS等。同时,这些技术都是标准化的,并不属于任何特定的厂商,目前所有浏览器都对Ajax技术支持良好。所以,Ajax技术自从2005年问世以来,已在业界得到迅速推广,到现在已很难找到没有使用Ajax的B/S的应用了。
Ajax使用简单的XMLHttpRequest对象发送请求,使用简单的JavaScript函数监视服务器响应。在服务器响应完成后,JavaScript通过DOM动态更新HTML页面。自始至终,用户的动作无须中断,所感受到的是一种连续的体验。