第一步:Ajax简介(一)
Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。为什么这么说呢。因为它的确很神奇。
大家也许会问下面几个问题:
Ajax是什么?
Ajax干什么用的?
Ajax它的优势和不足 ?
Ajax的核心内容是什么?
什么时候适合用Ajax?
Ajax的前景?
下面我来一一解答这些问题
1. Ajax是什么?
正如上面所说, Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。Ajax包括:
XHTML和CSS 使用文档对象模型(Document Object Model)作动态显示和交互,使用XML和XSLT做数据交互和操作,使用XMLHttpRequest进行异步数据接收,使用JavaScript将它们绑定在一起。
2.Ajax干什么用的?
如今 Google Suggest 和 Google Maps 使用了 Ajax,通过 Ajax,我们可以使得客户端得到丰富的应用体验及交换操作,而用户不会感觉到有网页提交或刷新的过程,页面也不需要被重新加载,应用的数据交换都被隐藏。
虽然 Ajax 所需的基础架构已经出现了一段时间,但直到最近异步请求的真正威力才得到利用。能够拥有一个响应极其灵敏的 Web 站点确实激动人心,因为它最终允许开发人员和设计人员使用标准的 HTML / CSS / JavaScript 堆栈创建“桌面风格的(desktop-like)”可用性。
传统的 WEB 应用程序模型是这样工作的:用户的界面操作触发 HTTP 请求,服务器在接收到请求之后进行一些业务逻辑处理,如保存数据等,然后向客户端返回一个 HTML 页面。但这种方式并没有给予用户很好的应用体验,当服务器在处理数据的时候,用户则处于等待的状态,每一步操作都需要等待,太多的等待会使用户越来越没有 耐心。而 Ajax 则大不相同,它通过 Ajax 引擎,使得应用过程很自然,操作很流畅,因为其只和服务器交换有用的数据,而页面显示等不必要的数据则不再重新加载。Ajax 引擎其实就是 JavaScript、XML、XMLHttpRequest 等等各项技术的综合应用。
3.Ajax它的优势和不足 ?
Ajax的两个最主要的优势:
(1) 给用户带来流畅而友好的体验;
(2) 无需客户端任何安装,即可被绝大多数主流浏览器所支持。
然而,Ajax同样还有很多不足之处:
(1) 虽然Ajax用到的技术均已经比较成熟并经过标准化,但由于其涉及的技术太多,开发者仍需要大量的学习,对于某些比较复杂的客户端程序来讲,往往需要开发者对JavaScript以及相关技术非常精通;
(2) 每种浏览器中提供的DOM模型均有轻微的差异,所以在编写跨浏览器的客户端应用程序时往往会非常困难;
(3) 由于大部分表示层以及少部分业务逻辑均被移到了客户端用JavaScript实现,这就使客户端代码量急剧增大,但JavaScript从语言层面上并没有完善的面向对象支持,这往往使客户端代码的质量无法保证;
(4) 当前并没有非常成熟的用来开发、调试JavaScript的IDE。
如果我们仔细分析一下,可以看到上面所提到的优势无一例外都是对用户体验的提高,而不足之处也均为开发者进行开发时的困难。这也暗示了当今应用程序的发展趋势:把用户的体验放在第一的位置;但在同时,开发者的开发效率也是一个不容忽视的关键问题。前一节中那个与Hello World类似的最简单的Ajax应用程序就已经如此复杂,那么一个功能完备的Ajax网站需要投入的时间相比之下更加让人无法想象!
正是为了解决这样的问题,各种Ajax框架如雨后春笋般应运而生,ASP.NET AJAX也是其中的一种。在本书接下来的部分,你将看到ASP.NET AJAX这个无以伦比的Ajax框架,是如何在实现那些令人眩目的Ajax功能的同时又极大地简化了开发过程的。
4.AJAX的核心
Ajax的核心是 JavaScript 对象 XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不 阻塞用户。
5.Ajax应用场景-Ajax适合的应用场合
Ajax不是万能的,在适合的场合使用Ajax,才能充分 发挥它的长处,改善系统性能和用户体验,绝不可以为了技术而滥用。Ajax的特点在于异步交互,动态更新web页面,因此它的适用范围是交互较多,频繁读 取数据的web应用。现在来看几个Ajax的应用实例,读者可以了解如何使用Ajax技术改进现有的web应用系统。
场景1. 用Ajax进行数据验证
在填写表单内容时,需要保证数据的唯一性(例如新用户注册填写的用户名),因此必须对用户输入的内容进行数据验证。
数据验证通常有两种方式:
一种是直接填写,然后提交表单,这种方式需要将这个页面提交到服务器端进行验证,整个过程不仅时间长而且造成了服务器不必要的负担;
第二种方式是改进了的验证过程,用户可以通过点击相应的验证按钮,打开新窗口查看验证结果,但是这样需要新开一个浏览器窗口或者对话框,还需要专门编写验证的页面,比较耗费系统资源。
而使用Ajax技术,可以由XMLHttpRequest对象发出验证请求,根据返回的HTTP响应判断验证是否成功,整个过程不需要弹出新窗口,也不需要将整个页面提交到服务器,快速而又不加重服务器负担。
场景2.按需取数据
分类树或者树形结构在web应用系统中使用得非常广泛,例如部门结构,文档得分类结构常常使用树形空间呈现。
以 前每次对分类树得操作都会引起页面重载,为了避免这种情况出现,一般不采用每次调用后台得方式,而是一次性将分类结果中得数据一次性读取出来并写入数组, 然后根据用户的操作,用JavaScript来控制节点的呈现,这样虽然解决了操作响应速度,不重复载入页面以及避免向服务器频繁发送请求的问题,但是如 果用户不对分类进行操作或者只对分类树中的一部分数据进行操作的话(这种情况很普遍的),那么读取的数据中就会有相当大的冗余,浪费了用户的资源。特别是 在分类结构复杂,数据庞大的情况下,这种弊端就更加明显了。
现在应用Ajax改进分类树的实现机制。在初始化页面时,只获取第一级子分类 的数据并且显示;当用户点开一级分类的第一节点时,页面会通过Ajax向服务器请求当前分类所属的二级子分类的所有数据;如果再请求已经呈现的二级分类的 某一节点时,再次向服务器请求当前分类所属的三级子分类的所有数据,以此类推。页面会根据用户的操作向服务器请求它所需要的数据,这样就不会存在数据的冗 余,减少了数据下载总量。同时,更新页面时不需要重载所有内容,只更新需要更新的那部分内容即可,相对于以前后台处理并且重载的方式,大大缩短了用户的等 待时间。
场景3.自动更新页面
在web应用中有很多数据的变化时十分迅速的,例如最新的热点新闻,天气预报以及聊天室内容等。在Ajax出现之前,用户为了即使了解相应的内容必须不断刷新页面,查看是否有新的内容变化,或者页面本身实现定时刷新的功能(大多数聊天室页面就是这样做的)。
有可能会发生这种情况;有一段时间网页的内容没有发生任何变化,但是用户并不知道,仍然不断的刷新页面;或者用户失去了耐心,放弃了刷新页面,却很有可能在此有新的消息出现,这样就错过了第一时间得到消息的机会。
应 用Ajax可以改善这种这种情况,页面加载以后,会通过Ajax引擎在后台进行定时的轮询,向服务器发送请求,查看是否有最新的消息。如果有则将新的数据 (而不是所有数据)下载并且在页面上进行动态的更新,通过一定的方式通知用户(实现这样的功能正是JavaScript的强项)。
这样即避免了用户不断手工刷新页面的不便,也不会因为重复刷新页面造成资源浪费。
既 然你己经对Ajax产生了兴趣,还要知道重要的一点,即什么时候应该使用Ajax技术,而什么时候不该用。首先,不要害怕在应用中尝试新的方法。我们相 信.几乎每个web应用都能从Ajax技术中获益,只不过不要矫杠过正,过于离谱就行了。从验证开始就很合适,但是不要限制你的主动性。你当然可以使用 Ajax提交数据,但也许不能把它作为提交数据的主要方法。
其次,惟一会影响你应用Ajax的就是浏览器问题。如果大量用户(或者特别重 要的用户)还在使用比较旧的浏览器,如IE 5 , Safari 1.2或Mozilla 1.0之前的版本,Ajax技术就不能奏效。如果这是一些很重要的用户,你就要使用针对目标用户的跨浏览器的方法,而放弃Ajax,或者开发一个可以妥善 降级的网站。浏览器支持可能不是一个重要因素,因为netscape Navigaxar 4在市场上的份额很小。不过,还是应该查看Web日志,看看你的应用适用什么技术。
如前所述,验证和表单填写就非常适合采用Ajax实现。还可以使用DOM的“拖”技术建立真正动态的网站,如google的个性化主页.
可以看到,Ajax为Web应用开发提供了新的机会。你不会再因为以往的专用技术或技术折中方案而受到妨碍。利用Ajax,胖客户与瘦客户之间的界限不再分明,真正的赢家则是你的用户。
6.ajax的前景
如果你想了解互联网的未来,可以上Google的地图网站上去看一看。乍看上去,它似乎跟同类的其他网站没有太大区别。不过,你一旦输入了某个地址,这个 网站马上带你进入一个城市,穿越一条又一条街道,而在此过程中你会发觉事情非常美妙。首先,你不会见到沙漏图标。网页会无缝地一下子转换到新的一页,你的 电脑在等待下载更多数据时,屏幕不会出现任何间断。这种功能已经帮助创建了Google Earth网站。这个网站收集了全球各地的卫星图片,是去年点击率最高的网站之一。这些网站能够把信息平滑顺畅地下载到用户的电脑,因此大受欢迎,而美国 许多其他行业的从业者有鉴于此,正纷纷利用它们来帮助拓展业务。在美国,如果你打算寻找一个新公寓,你可以在Housingmaps.com网站上输入你 的目标街区的名字。然后,转眼间你会看到一个鸟瞰图,上边标了一些虚拟图钉,每个图钉代表一个待售或待租的房地产。如果你想知道这个目标地区的治安是否良 好,可以进入mapsexoffender.com网站查看。这个网站会把Google的美国地图信息与各地区的犯罪记录集合起来,然后在地图上标出每一 个有案底坏蛋的住址。
诸如此类的平滑滚屏互联网应用之所以能够实现,全靠一种叫Ajax的技术,Ajax其实是一组电脑程序,这些程序互相配合,能使网站无缝地运作,好像 电脑程序在个人电脑中运行那样。尽管这种创新的技术在Google地图网站上最容易见到,它可不是Google专有的。在过去的几个月,Ajax已经成为 一股推动力,催生了一系列基于互联网的新服务,包括免费文字处理程序Writely,电子数据表制作网站NumSum,以及人们用于编制日程和工作时间表 的网站Voo2do。这些使用Ajax技术的网站的出现,已经促使人们开始重新思考互联网和个人电脑之间的关系。事实上,Ajax也许会导致许多基于个人 电脑应用的软件应用遭到淘汰,进而导致电脑业中很多领域出现翻天覆地的变化。
几十年来,科技专家一直相信,数据和电脑软件迟早会从桌面转移到互联网。宽带互联网连接日益普及的同时,电脑将会越来越小巧轻便。将来电脑会摒弃笨重 的硬盘,并且成为进入互联网和互联网服务器的主入口,让互联网服务器来承担大部分原本由文字处理,电子数据表制作等程序负责的工作,以及存储数据。今天互 联网已经使一部分的预测得以实现,然而他还是存在着一些缺点,其中之一就是连接不稳定。当个人电脑等待服务器一点一滴地下载数据时,互联网连接不稳定的情 况常会出现。与其说Ajax解决了这一问题,到不如说它把问题掩盖了。Ajax会在互联网服务器和个人电脑之间充当缓冲器,巧妙地令服务非常顺畅,让人以 为没有中断。Google Earth网站,即使你的个人电脑还在下载那些更高分辨率图片的中途,你仍然能够滚动屏幕上的鸟瞰图。事实证明,这种细微的区别足以令网上冲浪者的心理改 变。Ajax并不能提高数据下载的速度,可是能使等待的过程变得不那么令人沮丧。
到目前为止,基于互联网的应用程序仍然很少,对那些基于个人电脑的软件仍未构成威胁。然而,由于预期电脑软件将会从桌面转移到互联网,微软的管理层已 开始感到忧虑。长期以来,微软一直几乎垄断整个桌面软件市场,因此它很迟才看到这一变化来临。Adaptice Path咨询公司的创办人加勒特说:“2001年的反垄断官司之后,主要的竞争对手Netscape消失之后,这几年来,微软好像有点不知所措。”在一份 于去年10月被泄露的微软内部备忘录中,微软的首席技术官奥齐也承认了这一点。他在该备忘录中说:“我们公司在网络方面拥有雄厚资源,理应早就可以在开发 Ajax的潜力上领先。”
Ajax的冒起令微软感到特别尴尬,因为Ajax中的一些关键技术其实是微软在1997年发明的,可是该公司后来把它们搁置了。不过话得说回来,当时 并没有任何人看到Ajax的潜力。Ajax并不是单一的发明物;它由一批电脑程序组成,而这些程序是分别在多个不同的公众领域研发出来的。大约1年前,一 些独立软件开发商发现,如果将这些程序结合起来,它们能产生一些很有用的功能。软件公司Oddpost的创办人及编程师戴蒙德通过使用Ajax技术,使基 于互联网的电邮程序变得和在桌面上运行几乎没有两样。他说:“1999年的时候,在家里时我使用(微软的)Outlook Express,出门在外时则使用Yahoo电邮系统。我在家里时不使用Yahoo,是因为它的界面比不上Outlook Express。但是我们确信,通过使用Ajax技术,我们能够制造出可以媲美Outlook Express的界面。”2004年,Yahoo收购了Okkpost,如今戴蒙德正在研发一种以Ajax为基础的Yahoo电邮系统。他说:“目前每一 家电邮公司都在努力研发使用Ajax的应用程序。”
广受欢迎的图片共享网站Flickr已经采用了Ajax技术,让用户可以及时为他们的照片加入标题和说明、及时把照片放进自己的收藏影集,或者连续地 观看照片,Flickr的创办人兼CEO巴特菲尔德说:“我相信,如果没有了Ajax,Flickr不可能像今天这么受欢迎。”Ajax使他的网站变得 “更快、更酷、更有直觉力”。
Ajax并非仅仅能够模拟一个桌面系统。他还使网站能够从不同的来源收集信息,然后把信息无缝地呈现在浏览者眼前。Housingmaps.com从 Craiglist网站收集待售房屋的地址,然后把这些资料与Google的地图结合起来。News&Bible网站(say4.com)能根据 新闻中的关键字词,找出相配的圣经章节。Dealmine.com则从许多来源收集商店的折扣优惠信息。
没有人会认为Ajax从能把桌面软件完全淘汰。现有的浏览器还没有一个能像PhotoShop或Final Cut等桌面程序那样处理复杂的图像或者视频。不过,将来桌面程序可能越来越专注于一些需要强大计算能力去处理的特殊人物。微软有一些主要产品(例如 Word、Excel等)很有可能会遇到竞争,受到其他公司的Ajax版同类型产品挑战。面对这种前景,微软的对策是也把Ajax纳入它的产品中。该公司 平台策略组的小组经理奥布赖恩说:“既然我们的秘密已经被泄露,而Ajax也正在从一种只有从研发者感兴趣的早期技术渐渐演变成为能够引起一般用户的好奇 心,现在我们的任务……就是设法让这种技术能够被尽可能多的用户使用。”他又说,奥齐的备忘录可以说是晨钟暮鼓。如今微软已经推出了一种基于Ajax的绘 制地图应用程序,命名为Windows Live Local。微软还正在研发一种基于暂时以Atlas为代号的产品,该公司称,这种新产品将使基于Ajax的编程工作更容易。该公司还在研发Ajax版的 Office,一旦研发成功,Word和Excel程序将不再是独立的产品,而是服务。
posted on 2008-07-29 23:27 wolf_lance 阅读(533) 评论(0) 收藏 举报
浙公网安备 33010602011771号