基于AJAX技术的Web应用架构分析

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:monkey825
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Web应用在界面易操作性方面的弱点是制约其广泛应用的重要因素,AJAX技术正是为了克服这些缺点而被提出的。它是web应用的一种新的方式,AJAX为浏览器与服务器交互较多,频繁读取数据的Web应用提供了一个很好的解决方案。本文论述了AJAX模型的架构及其关键技术,并分析了AJAX技术在实现过程中的优缺点及其安全性。
  关键词:AJAX;XMLHTTPRequest;XML;Web应用
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30744-03
  Web Application Framework Analysis Based on the AJAX Technology
  ZHANG Huan-yu,ZHANG Jian-wen
  (Tongji University,Department of Computer Science and Technology,Shanghai 201804,China)
  Abstract:The weakness of Web application interface that can not be operated easily is constraining their wider application. AJAX technology was proposed in order to overcome these shortcomings. It is a new method of web applications.Application that is between browsers and servers more interactive, frequently read data from servers, provides an excellent solution. This paper discusses the AJAX model for the structure and key technologies, analysis the advantages and disadvantages in the process of achieving security.
  Key words:AJAX;XMLHTTPRequest;XML;Web application
  
  1 引言
  
  Web服务器每时每刻要处理海量的数据请求。同时我们在浏览Web站点的时候,不时的从一个页面跳转到另一个页面。我们会发现同一个站点的许多页面上的内容都是重复的,这样一来造成了数据的重复请求,加大了服务器的负担,造成网络拥塞,而且使用户界面产生闪烁或白屏,考验着用户的忍耐力。
  针对上述问题,Jesse James Garrett提出了AJAX这个概念。它能实现浏览器与服务器的异步通信,使B/S结构的应用程序根据用户输入实现页面实时、局部、快速刷新,模拟桌面应用程序的效果,从而显著提高用户体验。而对于Web开发人员来说,AJAX所运用的是更加先进的,更加标准化的,更加和谐高效的,完整的Web开发技术体系,这样也使他们获得更好的开发体验。[1]
  
  2 现状与存在的问题
  
  传统的Web应用采用同步交互过程,这种情况下,客户端首先通过浏览器向Web服务器发出一个请求。反过来,服务器执行某些任务,再向发出请求的浏览器返回一个HTML页面。我们注意到,某些时候,客户端只是想改变页面的一小部分的数据,而服务器端还是发送了整个页面的信数据,这样就包含了大量的冗余信息。服务器在处理请求的时候,用户多数时间处于等待的状态,屏幕内容也是一片空白,这造成一种不连贯的用户体验。如图1所示。
  图1 传统的web应用交互过程
  自从采用HTML作为Web传输和呈现之后,我们都是采用这样的一套传输方式。当负载比较小的时候,这并不会体现出有什么不妥。可是当负载比较大,响应时间要很长,这种等待就不可忍受了。严重的,超过响应时间,服务器索性返回页面不可用信息。当软件设计越来越讲究人性化的时候,这么糟糕的用户体验简直与这种原则背道而驰。现在,为了解决这个问题,除了程序设计、编码优化和服务器加速之外,还可以采用AJAX。
  
  3 基于AJAX技术的Web应用架构
  
  3.1 AJAX相关技术
  AJAX是Asynchronous JavaScript And XML的缩写。这个概念最早是由Jesse James Garrett在他的论文《AJAX: A New Approach to Web Applications》中提出的。它并不是一种新的技术或语言,它只是包括了开发Web应用程序的一系列技术而已,构成AJAX模型的这些核心技术已经很成熟,并且广泛的应用于Web应用开发领域。
  涉及到的技术有JavaScript、HTML、层叠样式表(CSS)、文档对象模型(DOM)、XML和XSLT,以及通过XMLHTTPRequest来进行通信协议的消息发送。将它们按照某种特定的方式组合在一起,在共同的协作中发挥各自的作用,表现在:
  (1)使用XHTML和CSS标准化呈现页面
  (2)使用DOM实现动态显示和交互
  (3)使用XML和XSLT进行数据交换和处理
  (4)使用XMLHTTPRequest进行异步数据读取
  (5)使用JavaScript绑定和处理所有数据
  图2表明了他们之间的关系。
  图2 AJAX 关键技术
  3.2基于AJAX技术的Web应用架构
  与传统的Web应用不同,基于AJAX技术的Web应用架构采用异步交互过程。在用户与服务器之间引入一个中间媒介――AJAX引擎(如图3所示),从而消除了网络交互过程中的“处理…等待…处理”的缺点。用户的浏览器在执行任务时即装载了AJAX引擎。AJAX引擎用JavaScript语言编写,通常藏在一个隐藏的框架中。它负责编译用户界面及与服务器之间的交互,独立于用户与网络服务器间的交流。它可以像在桌面应用程序只同服务器进行有效数据的交换,而不用每次将一些冗余信息(如页面中的其他部分的信息)一起提交给服务器,并且可以在客户端做一些相应的处理,这样就减少网络信息流量,减轻服务器的负担,并且加快浏览器的响应速度、缩短用户等待时间。如图4所示,浏览器呈现给用户的是连续的响应。
  图3 基于AJAX技术的Web架构
  当客户端向服务器发出一个HTTP请求时,先将所需要的参数整合成一个XML文件,再将这个XML文件发送到服务器端,服务器对该XML文件进行解析,取出所需的参数,将参数传递给后台页面处理程序,运行业务逻辑,读取数据库等,然后将执行结果也以XML数据格式返回到客户端,同时,还可以返回一份XSL排版样式文档,转换显示工作由客户端浏览器 的JavaScript和DOM控制来完成。[2]
  以上是AJAX应用模型的典型情况,在实际运用过程中,可以相对灵活。如果客户端与浏览器交换的数据结构简单,且数量不大,完全可以不采用XML格式,而直接采用字符串格式。例如,客户端发生某一事件,发出一个HTTP请求,然后将相关参数直接附在该请求中,而不必以XML格式封装该参数。服务器端直接取出该参数,运行业务逻辑,可以生成相应的一段HTML代码直接返回之,而不必以XML+XSL的方式返回客户端。在客户端,接收HTML字符串,JavaScript控制刷新页面的相应部分。之所以AJAX中要用到XML格式,是考虑到某些应用中的数据格式的复杂性。
  图4 使用 AJAX 技术的web应用交互过程
  3.3AJAX引擎
  AJAX引擎实际上是一个比较复杂的JavaScript应用程序,用来处理用户请求,然后根据需要动态读写服务器和更改DOM内容。以前为了使网页能无缝化重构,也就是在页面已经下载完毕后改变页面内容。开发人员一直通过JavaScript和DOM来实现。但是要使网页真正动态起来,不仅要网页自身内部的互动,还需要从外部获取数据,在XMLHTTPRequest对象出现以前。我们是让用户来输入数据并通过DOM来改变网页内容的,但现在XMLHTTPRequest对象可以让我们在不重载页面的情况下读写服务器的数据,使用户的输入达到最少。下面讨论构成Ajax引擎的几个关键技术及其在Ajax引擎中所起的作用。
  3.3.1 DOM(Document Object Model)
  DOM是给HTML和XML文件使用的一组API。它提供了文件的结构表述,让你可以改变其中的内容及可视化的组件。其本质是建立网页与脚本语言沟通的桥梁。所有Web开发人员可操作及建立文件的属性、方法及事件都以对象来展现(例如,Window就代表“当前窗口”这个对象,table对象则代表HTML的表格对象等等)。这些对象可以由浏览器用脚本语言来控制。一个用HTML或XHTML构建的网页也可以看作是一组结构化的数据,这些数据被封在DOM(Document Object Mode1)中。DOM提供了网页中各个对象的读写的支持。
  3.3.2 JavaScript
  JavaScript是一种在浏览器中大量使用的跨平台脚本语言.常被用来做一些网页特效或表单验证。在AJAX中JavaScript则是联系XMLHTTPRequest和DOM交互的桥梁与AJAX引擎工作的主要推动力。JavaScript通过调用XMLHTTPRequest的属性和方法来获取服务端数据,然后调用DOM的API来更新Web页面的内容,实现整个页面的无刷新更新(局部更新)。
  3.3.3 XML(Extensible Markup Language)
  通过XML(Extensible Markup Language),可以规范的定义结构化数据,是网上传输的数据和文档符合统一的标准。用XML表述的数据和文档,可以很容易的让所有程序共享。
  3.3.4XMLHTTPRequest
  在AJAX引擎中的几项技术中XMLHTTPRequest对象是最核心的技术,是AJAX引擎解决无需刷新整个页面就可以从服务器获取新数据这项技术的关键所在。在微软IE平台下XMLHTTPRequest是XMLHTTP组件一个对象,它通过允许开发人员在Web页面内部使用XMLHTTP ActiveX组件扩展自身的功能,开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。这个功能是很重要的,因为它可以排除下载冗余Web数据的需要,从而提高客户端的响应速度。当然在其它Web浏览器平台下,例如Mozilla(Mozilla1.0以上),Konqueror和Opera(v7.6x+),它们都创建了它们自己的继承XML代理类——XMLHTTPRequest类。对于大多数情况,XMLHTTPRequest对象和XMLHTTP组件很相似.方法和属性也类似,只是有一小部分属性不支持。表 1 列出了常用的属性和方法。
  在使用XMLHTTPRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHTTPRequest不是一个W3C标准,所以可以采用多种方法来创建XMLHTTPRequest的实例。Internet Explorer把XMLHTTPRequest实现为一个ActiveX对象,其他浏览器(如Firefox、Safari和Opera)把它实现为一个本地JavaScript对象。由于存在这些差别,JavaScript代码中必须包含有关的逻辑,从而使用ActiveX技术或者使用本地JavaScript对象技术来创建XMLHTTPRequest的一个实例。
  以下代码展示了编写跨浏览器的JavaScript代码来创建XMLHTTPRequest对象实例的方法。[3]
  var xmlHttp;
  function createXMLHttpRequest() {
  if (window.ActiveXObject) {
  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  else if (window.XMLHttpRequest) {
  xmlHttp = new XMLHttpRequest(); } }
  
  4 实例应用
  
  表1 XMLHttp组件的方法与属性
  基于AJAX技术实现两级联动下拉框,这种应用在网站应用程序中是常见的。比如,每个大学都有多个学院,大学不同,学院设置也不同。选择某个大学后,学院下拉框的内容应该发生相应变化。通常如果不采用AJAX实现,选择完某个大学后将刷新整个页面,然后学院下拉框的内容发生相应变化。下面采用AJAX实现,选择完大学后,学院下拉框的内容发生变化而无须刷新整个页面。
  客户端相应的HTML代码中大学下拉框的选择变化事件响应方法OnUniversityChange,它生成XMLHTTPRequest实例。然后将用户所选大学的相应ID,传给服务器的处理页面。因为这里数据比较简单,所以没有采用XML格式,直接将大学的Id参数传给服务器。注意,XMLHttpRequest的属性onreadystatechange说明当服务器回送数据到来时,相应的处理方法,这里是UpdateCollege方法。[4]
  function OnUniversityChange(obj)
  { xmlrequest=newXMLHttpRequest();
  xmlrequest.open("Get","Handler.ashx?UniversityId="+obj.selectedIndex,true);xmlrequest.onreadystatechange=UpdateCollege;
  xmlrequest.send(null); }
  服务器端相应的处理方法:
  public void ProcessRequest (HttpContext context)
  { string UniversityId = context.Request.QueryString["UniversityId"];
  string RetXml=CreateXMLStr(UniversityId);
  context.Response.ContentType = "text/xml";context.Response.Write(RetXml); }
  取出大学Id参数,然后CreateXMLStr方法由传入的UniversityId读取数据库生成相应的XML文件。该XML文件格式如下:
  1NanJing
  服务器发送完数据后,客户端做出处理,根据发送回来的XML文件,进行解析,相应更新学院下拉框的内容。
  function UpdateCollege()
  { if(xmlrequest.readyState==4)
  { //”4”说明客户端发送请求完成
  if(xmlrequest.status==200)
  { //“200”说明接收服务器回送消息成功
  var root= xmlrequest.responseXML.
  getElementsByTagName('cities')[0];
  var items = root.
  getElementsByTagName('College');
  var College=document.
  getElementById('College');
  College.length=0;
  College.add(new Option("Select College","0"));
  for(var i=0;i  { var CollegeId= items[i].
  getElementsByTagName("CollegeId")[0].firstChild.nodeValue;
  var CollegeName= items[i].
  getElementsByTagName("CollegeName")[0].firstChild.nodeValue;
  College.options.add(new Option(CollegeName,CollegeId)); }}}}
  
  5 AJAX的缺陷
  
  任何一种技术都是一把双刃剑,当然AJAX也不例外,它不是完美的技术。使用AJAX,它的一些缺陷不得不权衡一下:
  AJAX大量使用了JavaScript和AJAX引擎,而这个取决于浏览器的支持。IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支持,Mozilla虽然也支持AJAX,但是提供XMLHTTPRequest的方式不一样。所以,使用AJAX的程序必须测试针对各个浏览器的兼容性。
  AJAX更新页面内容的时候并没有刷新整个页面,因此,网页的后退功能是失效的;有的用户还经常搞不清楚现在的数据是旧的还是已经更新过的。这个就需要在明显位置提醒用户“数据已更新”。
  对流媒体的支持没有FLASH、Java Applet好。一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax。
  存在安全漏洞。基于HTTP (超文本传输协议)协议传输数据的AJAX技术,可以穿透几乎所有的防火墙,从服务器将任何类型的数据和文件传输到客户端。目前的防火墙是基于状态检测,其设计原理是基于网络层TCP和IP地址,来设置与加强状态访问控制列表(ACL,Access Control Lists)。而Ajax技术传输数据采用的HTTP协议是应用层协议,这使得防火墙无法全面控制网络、应用程序和数据流,也无法截获应用层的攻击。
  
  6 结束语
  
  AJAX技术能够实现局部刷新页面内容,显著提高Web应用的用户体验。一般说来,AJAX技术主要应用在交互较多、频繁读数据和数据分类良好的Web应用中。AJAX技术在具体运用过程中,具体情况具体分析,才能达到较好的效果。AJAX是web应用方面的一个重要的概念,其应用也会越来越广。
  
  参考文献:
  [1][美]Jesse James Garrett.A New Approach to Web Applications[EB/0L].
  [2]Dave Crane,Eric Pascarello,Darren James. AJAX实战[M].人民邮电出版社.
  [3]张桂元,贾燕枫.姜波.征服Ajax-Web 2.0 快速入门与项目实践[M].人民邮电出版社.
  [4]Nicholas C.Zakas.曹力,张欣.译.JAVASCRIPT高级程序设计[M].人民邮电出版社.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
我们在用WPS 2005编辑科学文档的时候,经常要输入各种公式。你有没有想过让这些公式用不同的色彩显示以更方便我们辨认呢?  在WPS中插入公式并不困难,只要点击菜单命令“插入-对象”,在打开的“插入对象”对话框中点击左侧的“新建”单选项,然后在右侧的列表中选择“Mi-crosoft公式3.0”,确定后就可以调用Word的公式编辑器进行公式编辑了。默认的情况下,输入的公式都是黑色字体。但是,如果我
期刊
在学校工作的我经常在一些表格中输入星期一、星期二……,如课程表、值班表、备忘录等。然而次数一多就不太情愿了……  于是我找到了Word中的“项目符号和编号”功能。但它却不认识星期几。在没有其它办法的情况下,只能再次对“项目符号和编号”下手,几经折腾,终于让Word中的编号也能认识星期几了。  1 单击“格式”-“项目符号和编号”,在“项目符号和编号”对话框中选择“编号”选项卡,随便选择一种编号方式
期刊
你是否遇到过在Word中处理文字时需要计算一些数据的情况呢?你是不是还要拿起手中的计算器或者借助于系统附件中的“计算器”来计算呢?  你想过利用Word也可以进行计算吗?哈哈,Word还真有快速计算能力。并且其功能要远远强于你的“计算器”,下面我们就来看一下在Word中进行数值计算的两种方法。    “Ctrl+F9”法  例如要计算“1140+3215-1563x219÷101.4+18.9^9
期刊
摘要:在剖析传统家电故障维修方式和需求的基础上,提出了一种基于神经网络和信息融合技术的智能家电故障测控系统的基本框架。该系统不仅能满足不同的智能家电需要不同的QoS保证,而且切实可行。依托该系统,可以提高我国家电企业故障诊断与维修的水平和效率,节省检测和维修成本并使产品具有更大的竞争力。同时,对将人工神经网络和信息融合技术引入到家电维修行业进行有益的探索。  关键词: 神经网络;信息融合;智能家电
期刊
近日,我们有两个网站在同时开发,这就需要不断在两个网站之间切换,每次都要更改网站的主目录。有没有一个方法可以实现利用一台服务器,架设多个网站,都能同时访问呢?经过摸索,终于实现了这个目标。以下是具体的方法。(在Win2000 Sever中+IIS 5.0测试通过)  首先我们需要在WEB服务器建立两个文件夹,用来存放两个网站所需文件,笔者是在“Web服务器”(Web服务器主目录)目录里面建立“Fi
期刊
WPS 2003丰富的边框样式和独到的图文混排功能至今深受广大用户的喜爱,但在处理文档中的图片过程中。有时会遇到一点小麻烦。如插入一幅图片后。右键单击图片在弹出的快捷菜单中左键单击“叠放次序”-在文字下。就可以把图片置于文字之下。做成简单的水印效果。  但我们在完成文档中的其它操作后,返回头来想调整图片的位置及“水印”效果(对比不明显示,主次不分)时。却发现图片不让动了。如果进行的其它操作步骤较少
期刊
酷暑又到了,你的电脑是否又开始挥泪如淋?过高的温度给自己心爱的电脑造成额外的负担,CPU太热的话,会导致机器运行不稳定甚至是电脑配件的烧毁,而CPU作为整个电脑的重中之重,所以也一直受到大家普遍的关注。如何在酷暑让电脑轻松的工作,这才是每个电脑用户首先要做的事,对于电脑用户而言,应该了解CPU散热器的选购要决。    散热的重要性    为什么要散热,这很显然是电脑配件的发热太高,导致温度急速上升
期刊
摘要:随着通信技术与多媒体技术的飞速发展,以多媒体视频为主的应用得到了广阔的发展,在这些视频应用领域中,若想进行图像处理就要先进行视频捕获。鉴于此,文章对Windows系统下的VFW体系结构进行了论述、给出了视频开发的相关Windows API函数,分析了视频捕获的工作流程;并用VB来设计和实现视频捕捉程序,具体的给出了程序的代码,最后给出了测试结果,证明是可以捕捉的。  关键词: VFW;视频捕
期刊
在暑期中,一些朋友除了外出旅游外,更多的时间或许会选择在家里度过漫长的暑假,电脑、网络则成为最好的娱乐工具,尽管Vista及3D游戏带来了更好的视觉享受。但需要一款合适的显示器搭配才能体现逼真效果,人们越来越渴望大屏液晶显示器,22英寸宽屏LCD成为暑期促销的热点,也是消费者购机的首选标准配件,而用户如何在暑期中选购则成为关键问题。  随着LCD显示器市场成熟,在今年暑促中。厂商改变了以往价格战为
期刊
又快到暑期了,你一定会陪家人去逛旅游,带孩子去公园玩耍,用数码相机永远抓住这美好瞬间,并将其刻录到光盘中保存,不仅可以将它与别人分享,还方便未来自己重温当日的快乐。对于一张装有重要意义内容的光盘而言,将自己喜欢的照片打印在盘面上。这将给带来更无比的DIY乐趣。    选择合适的打印方案    要让光盘盘面具有个性图案,可以采用光盘贴纸打印、光盘直接打印两种方法,光盘贴纸打印是先将图案设计好,然后用
期刊