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

2.3  Ajax的定义

前面我们已经讲过,Ajax代表异步的JavaScript和XML,但是它的精确含义是什么呢?开发者只能使用这些指定的技术吗?令人欣慰的是,这个缩写只是一个指南而不是规则。在某些方面,Ajax和烹饪一样更像一种艺术。有一道菜叫做蒜味明虾,我在美国东岸各处的饭店里都品尝过,但每一家饭店的味道都有所不同。当然在每个饭店里,这道菜的主要原料都是虾、黄油和大蒜。但是就是一点点特殊的配料,就会使得每一家饭店的这道菜都有独特的味道。

Ajax也一样,利用HTML和JavaScript这些简单的材料,就可以“烹饪”出你所喜欢的Windows或者Linux风格的Web应用程序。你可能注意到,我没有提到XML,这是因为XML只是一个可选的部件。虽然这看上去有点奇怪,因为Ajax中的“x”代表的就是XML。但是还是有些特殊的客户端不支持通过XML或者其他“疯狂科学家”的方法来与服务器进行通信。

2.3.1  Ajax的价值体系

Web浏览器与服务器通信的方式是Ajax的基础之一。遵循Ajax价值体系的设计可以减少带宽的消耗,因为除了一些绝对情况之外,应用Ajax技术编写的网页无需经历被有些人称为“闪屏”的卸载/重载周期。如果只要传300字节就足够,为什么还要在客户端与服务器之间传送100 000字节呢?

当然这也意味着对于旁观者来说,浏览器有时表现得有点奇怪,因为网页中只有一部分被更新了。这意味着网页不会出现被某些客户雅称为“闪屏”的现象。一眨眼的功夫,网页的各部分就都被更新了,快得令人难以置信。和以前的网页相比,就好像从软盘访问文件转到从硬盘访问一样。我的反应是:“我再也不想回到过去了!”,但是每个人的反应可能千差万别,那么应咨询各自的“医生”。

Ajax提出的另一个观点是,为什么不让客户端工作起来?让浏览器参与处理总比让它在屏幕上照搬预处理过的信息要更好。初始页面将载入数据以及负责处理数据的JavaScript脚本。让我们延展一下前面关于疯狂科学家的类比,假设自己制作了一个“疯狂科学家”工具包,其中包括一堆部件和一个像驼背人伊格尔那样的下属,这就体现该观点了。

在Ajax应用当中,浏览器将负责处理服务器提供的数据。这意味着不仅仅是处理诸如DHTML实现的那些图像翻转、下拉式分层菜单之类的任务,而是一些更实质性的任务,比如向服务器发送数据并处理服务器的应答,这种处理可以是同步模式或异步模式的。另外,Ajax应用不仅能在HTML页面中查找对象,必要的时候还可以更新对象。

这将引出一个问题,如果是在没有伊格尔和工具包的情况下,人们能完成这个令人望而生畏的任务吗?答案是这仅仅取决于人们愿意如何努力,以及其努力的程度。创建一个Ajax应用程序有3种方法,这些方法各有优缺点。选用哪一种方法,只取决于开发者喜欢Ajax工具集中的哪些部分,以及希望开发出来的应用程序把哪些使用者排除在外。对,我指的就是那些还在使用IE 2.0的人们。幸运的是,我的工作是介绍如何实现Ajax应用,而不是负责浏览器的兼容性。

2.3.2  初涉非常规力量

前面我已经说过,自己和许多其他人是如何不经意地发现了当时还未命名的Ajax技术。这并不是我第一次接触被主管称为“疯狂科学家的行当”的东西。在多年以前,我在一个大型保险公司的团险部门担任技术顾问时,我曾经有幸得到一个任务:对一个基于纸质文档的申请系统进行自动化。

保险公司的销售员是按照一个预先设计的文档进行团险销售的,理论上说,销售员应该按照这个文档来说明客户的信息。但是在努力销售以获得佣金的过程中,他们可能将这个文档做成各种各样的电子格式。不管是XML、Excel还是平面文件,对于他们来说都是相同的,他们只是简单地填写一个多页的表格,其他就是系统部门的同事所应关心的内容了。在这个过程中,许多纸质文件可能被丢失,被咖啡溅湿,或者系统部门认为“这是不动产的工作,我不想做”而简单地归档了。

到达工作现场后,我很快就开始着手研究这些不同的表格和处理的方法,这将决定文档处理的流程。因为我是新系统的唯一设计者和开发者,所以可以自由地选择开发所用的技术。系统的后端是经典的ASP和SQL Server,这些都不在本书的范围之内。而前端是HTML、JavaScript和DOM的组合,另外还添加了一些CSS。

这个系统运行的方式是:首先用户输入包含多页的业务申请信息。这些信息被缓存在客户端,直到用户输入完毕并单击提交按钮为止。缓存处理将使用HTML帧来实现,第一个帧称为用户输入帧,它占据整个浏览器窗口。第二个帧是数据帧,有趣的是尽管它一直存在,但是却没有显示出来。

这个利用隐藏帧的窍门(我找不到更好的词语来形容)能够加速应用程序的运行。因为它减少了Web服务器和数据库服务器之间交互的次数。除了性能的提高之外,还有一个好处是应用程序看起来运行得更流畅,因为输入项按便于输入的原则分成了几块,而不是简单地按常规进行处理,以致每次需要输入80~200个项目。

查看所有评论(0)条】

最近评论



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