Ajax与jQuery程序设计
上QQ阅读APP看书,第一时间看更新

1.1 Web 2.0时代的Web开发

传统的Web应用经过多年的发展,在很多方面都是相当完善的。特别是JavaEE、.NET、Ruby on Rails等平台的出现,更加规范了Web应用的开发。Ajax给浏览者一种全新的体验:浏览者可以无须等待服务器响应,而多次以异步方式向服务器发送请求。这种体验方式类似于传统的桌面应用。Ajax的出现,让人不得不重新思考传统的Web应用。Ajax并不是要颠覆传统的B/S(浏览器/服务器)结构的应用,而是要让B/S结构的应用更加完善。

1.1.1 应用系统的发展

早期应用软件系统大都采用C/S(客户机/服务器)结构,C/S结构的软件分为客户机和服务器两层。客户机不是毫无运算能力的输入/输出设备,在客户端需要部署大量的应用程序,而且可能还具有一定的数据存储能力。

C/S结构应用的服务器端通常主要安装数据库管理系统,也可能包含一些业务逻辑实现(这些业务逻辑实现通常以函数、存储过程和触发器的形式存在)。通过把软件系统的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。

C/S结构应用的结构图如图1-1所示。

对于C/S结构的应用而言,因为可以直接在客户端部署应用程序,所以可以让应用的人机交互界面更加友好,并可充分美化应用程序的人机界面。但由于服务器连接个数和数据通信量的限制,这种结构的软件适用于用户数据不多的局域网内。早期的大部分ERP软件产品即属于此类结构。

随着Internet技术的兴起,B/S结构得到了大规模的应用。B/S结构是对C/S结构的一种改进。在这种结构下,应用的业务逻辑完全在应用服务器端实现,用户表现完全在Web服务器上实现,客户端只需要浏览器即可进行业务处理。B/S结构是当今应用软件的首选体系结构。

在这种应用结构下,客户端的所有处理请求都以HTTP请求的形式发送,而服务器端则将响应以HTML页面的形式送回客户端,由客户端浏览器负责显示HTML页面。B/S结构应用的结构图如图1-2所示。

图1-1 C/S结构应用的结构图

图1-2 B/S结构应用的结构图

在大部分情况下,B/S结构的应用比C/S结构的应用更加优秀,适应性更广。相对而言,B/S结构的系统具有如下优势。

(1)数据安全性高。由于C/S结构软件的数据分布特性,客户端所发生的火灾、盗抢、地震、病毒、黑客等都成了可怕的数据杀手。另外,对于集团级的异地软件应用,C/S结构的软件必须在各地安装多个服务器,并在多个服务器之间进行数据同步。如此一来,每个数据点上的数据安全都会影响整个应用的数据安全。所以,对于集团级的大型应用来讲,C/S结构软件的安全性是令人无法接受的。对于B/S结构的软件来讲,由于其数据集中存放于总部的数据库服务器,客户端不保存任何业务数据和数据库连接信息,也无须进行数据同步,所以这些安全问题自然也就不存在了。

(2)数据一致性好。在C/S结构软件的解决方案里,对于异地经营的大型集团都采用各地安装区域级服务器,然后再进行数据同步的模式。这些服务器每天必须同步完毕之后,总部才可得到最终的数据。由于局部网络故障造成个别数据库不能同步不说,即使同步上来,各服务器也不是一个时点上的数据,数据永远无法一致,不能用于决策。对于B/S结构的软件来讲,其数据是集中存放的,客户端发生的每一笔业务单据都直接进入到中央数据库,不存在数据一致性的问题。

(3)数据实时性好。在集团级应用里,C/S结构不可能随时随地看到当前业务的发生情况,看到的都是事后数据;而B/S结构则不同,它可以实时看到当前发生的所有业务,方便了快速决策,有效地避免了企业损失。

(4)数据溯源性好。由于B/S结构的数据是集中存放的,所以总公司可以直接追溯到各级分支机构(分公司、门店)的原始业务单据,也就是说看到的结果可溯源。大部分C/S结构的软件则不同,为了减少数据通信量,仅仅上传中间报表数据,在总部不可能查到各分支机构(分公司、门店)的原始单据。

(5)服务响应及时。企业的业务流程、业务模式不是一成不变的,随着企业不断发展,必然会不断调整。软件供应商提供的软件也不是完美无缺的,所以,对已经部署的软件产品进行维护、升级是正常的。由于C/S结构的软件应用是分布的,需要对每一个使用节点进行程序安装,所以,即使非常小的程序缺陷都需要很长的重新部署时间,重新部署时,为了保证各程序版本的一致性,必须暂停一切业务进行更新(即“休克更新”),其服务响应时间基本不可忍受。而B/S结构的软件不同,其应用都集中于总部服务器上,各应用结点并没有任何程序,一个地方更新则全部应用程序更新,可以做到快速服务响应。

(6)网络应用不受限制。C/S结构软件仅适用于局域网内部用户或宽带用户(1Mbit/s以上);而B/S结构软件可以适用于任何网络结构(包括33.6kbit/s拨号入网方式),特别适于宽带不能到达的地方。

(7)存储模式更好。B/S结构相应数据完全来自于后台数据库,而C/S结构部分数据来源于存储在本地的临时文件,剩余的部分来源于数据库,因此C/S结构响应时间会更快。

1.1.2 传统Web应用的缺点

B/S结构虽然是一种非常优秀的结构,但传统的B/S结构中的Web应用依然存在如下缺点。

(1)独占式的请求。例如,一个任务需要多步骤或多选项才能完成。在HTML里,一个多步骤的任务可以在单页内表达出来。但是,由于HTML的互动性有限,可能会产生一个很长的页面,使用户感到混乱、笨拙而难以使用;或者将多个步骤分成几个页面分别提交。传统的独占式的请求是:如果前一个请求没有得到完全响应,则后一个请求不能发送。用户在等待服务器的响应期间,浏览器一片空白。这种独占式请求如图1-3所示。

图1-3 独占式请求的示意图

(2)频繁的页面刷新。传统的Web应用基本上采用请求-页面的对应模式,每个请求都需要丢弃当前页面并重新加载新页面。频繁的页面刷新不仅让客户处于不连续的体验中,也使服务器的负担加重。

(3)无法承载优质页面。传统的Web应用需要频繁刷新页面,因而不可能制作出具有丰富表现功能的页面。表现丰富的页面会导致页面文件大,下载速度慢,而且也不能频繁刷新。一个表现丰富的页面下载需要相当多的时间,如果有请求的提交,又需要重新下载新页面,导致系统开销相当大。因而传统Web应用的页面不可能具有丰富的表现功能。

Ajax技术并没有提倡一种全新的应用开发结构,它并不是要取代传统B/S结构应用,而是要弥补以上不足。Ajax使用XMLHttpRequest对象异步发送请求。Ajax应用不采用请求对应页面的模式,发送请求也不要求重新加载页面。浏览器发送请求后,无须等待服务器响应,可以继续原来的操作。在服务器的响应完成后,客户端使用JavaScript函数将响应数据加载到浏览器中。

通过使用Ajax技术,用户发送请求之后,请求得到响应这个过程在后台进行,用户的界面以连续的方式运行。