徐进强
摘要:在目前WEB2.0的热潮中,AJAX已成为WEB开发者谈论的最多的一项技术。它是WEB2.0革命的始作俑者,是RIA程序开发的主力军之一。AJAX其实在技术上并没有什么新意,类似技术早已有之,那它有什么新的突破?导致它成为了WEB2.0时代WEB开发的新宠呢?其实是这个时代的背景和大环境赋予了它新意,重要的是它打破了使用页面重载的技术组合惯例,成为WEB2.0时代WEB开发中提升用户体验的杀手锏。
关键词:异步交互;客户端;WEB应用程序;脚本
中图分类号:TP271文献标识码:A文章编号:1009-3044(2012)26-6241-02
AJAX是Asynchronous JavaScript and XML的缩写,也就是异步JavaScript和XML,可以看出AJAX并不是一种全新的技术,它是几种老技术的组合,是目前创建良好用户体验的交互式网页应用的重要开发技术。
作为一个理想的用户接口最好对用户最好是不可见的,即不干涉和影响用户工作而只在用户需要时提供选择,当然这并不是一件容易的事情。如今,伴随着计算机技术的快速发展及网页浏览器技术的更新,一种理想的用户界面浮出水面。
异步JavaScript+XML即AJAX技术是指一种创建交互式网页应用的网页开发技术,最早是由Adaptive Path的Jesse James Gar rett提出来的。它并不是一项全新的技术,如动态HTML和远程脚本以前都出现的。但是从技术上讲,Ajax提升了浏览器技术潜力,而且正在被一些专业人事及商业广泛使用,推动在网络的发展,使用者对网络的兴趣有了很大的提高。
1 AJAX工作原理
与传统的WEB应用不同,基于AJAX的WEB应用采用异步交互方式,在用户客户端和服务器引入新层即AJAX引擎,用户操作不再直接提交服务器,而是交由新层,从而消除了传统的“请求—处理—等待—请求—处理—等待……”固定模式所带来的缺点,提升了响应速度,优化了整个响应过程。图1演示了传统WEB应用模型与AJAX WEB应用模型的工作原理。
在AJAX应用程序中,当用户填写表单时,通过JavaScript调用AJAX引擎异步发送HTTP请求给服务器端,返回数据后由AJAX引擎交给JavaScript来更新客户端界面。请求是异步发送的,因此在服务器处理期间JavaScript及用户不用等待服务器的响应,用户可以继续输入数据或滚动屏幕等正常使用应用程序。AJAX的工作流程可以概括如下:
用户在WEB应用上执行输入、鼠标点击、异动等操作;
根据操作,页面发出响应的DHTML事件;
调用注册到DHTML事件的客户端JavaScript事件处理函数,其中初始化一个用以向服务器器异步发送请求的XMLHttpRequest对象,同时指定一个回调函数,当服务器响应完毕时自动调用回调函数返回结果;
服务器根据请求进行数据处理,处理完毕后服务器返回客户端需要的数据;
数据达到客户端后通过JavaScript对用户界面进行更新;
用户看到处理结果。
因此AJAX具备一些独特的优势,首先AJAX技术的原理是“按需取数据”,减少了冗余请求和响应对服务器早期的负担,同时节约了带宽,大大提升站点的性能;其次,基于AJAX的WEB应用与传统WEB应用最大的表现是有传统的全部页面刷新转变为局部页面刷新,不再有整个页面(除非必须)重载刷新(白屏)的等待。无刷新更新页面,减少了用户实际和心理的等待时间;再次,正因为前面的二点,使得AJAX WEB应用大大的提高了用户的体验,在用户心中积累良好的印象。另外对于开发者而言,AJAX使WEB开发中的界面与数据分离,更有利于分工合作,提高开发效率。
2 AJAX技术的核心
XMLHttpRequest对象是AJAX技术的核心,利用它可以按需和服务器进行数据层面的交换,而不用每次都刷新页面。
现在浏览器有很多种,创建XMLHttpRequest对象的方法也不相同,所以为了兼容各种浏览器,在创建XMLHttpRequest对象时必须考虑到各种浏览器的情况。创建兼容多个浏览器的XMLHttpRequest对象的JavaScript函数如下:
//创建适用用与多种浏览器的XMLHttpRequest对象的函数
function getXMLRequester( ){
var xmlhttp_request = false;
try{
if( window.ActiveXObject ){ //IE浏览器各版本的创建
for( var i = 5; i; i-- ){
try{
if( i == 2 ){xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" );
}else{xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
xmlhttp_request.setRequestHeader("Content- Type","text/xml");xmlhttp_request.setRequestHeader("Content- Type","gb2312");}
break;}
catch(e){
xmlhttp_request = false;
}
}
}else if( window.XMLHttpRequest ){//非IE浏览器创建
xmlhttp_request = new XMLHttpRequest();
if (xmlhttp_request.overrideMimeType) {
xmlhttp_request.overrideMimeType(text/xml);
}}
}
catch(e){
xmlhttp_request = false;
}
return xmlhttp_request ;
}
XMLHttpRequest是AJAX技术中处理所有与服务器之间通信的重要对象,它的一般工作流程为:
第一步:获取请求,创建XMLHttpRequest对象;
第二步:建立要连接的URL
第三步:打开建立的到服务器的URL
第四步:设置(调用)回调函数
第五步:发送请求
3 ASP.NET AJAX开发
AJAX已经成为目前WEB应用的主流开发技术,业界的巨头已经采纳并大力支持它的发展,微软也推出了自己的AJAX框架Atlas,2007年初推出第一个正式版本并且更名为ASP.NET AJAX。ASP.NET AJAX的特性分为服务器端和客户端两个部分,前者包含ASP.NET 2.0 AJAX Extensions以及ASP.NET AJAX Control Toolkit,后者包含Microsoft AJAX Library。
ASP.NET AJAX服务器库具有开发者无需了解JavaScript,只需使用熟悉的类似ASP.NET开发的方式声明服务器端控件,之后Ajax所需的客户端脚本将自动发送至浏览器并执行;并且和Visual Studio开发环境无缝集成,提供完善的自动完成、编译期检查以及调试等功能。让技术人员以开发ASP.NET普通程序一样的拖拽控件的方式开发出功能强大的AJAX WEB程序。而ASP.NET AJAX客户端库对JavaScript进行扩展,使其支持完全面向对象方式编程,让开发者感觉到如同使用熟悉的Java或C#语言进行编程一样。并且提供夸浏览器的兼容性支持。
ASP.NET AJAX是完全免费的,在Visual Studio 2008中新建ASP.NET WEB程序默认就支持AJAX,但如果在Visual Studio 2005环境下,必须要安装一个扩展库,即ASP.NET 2.0 AJAX Extensions、ASP.NET AJAX Control Toolkit和Microsoft AJAX Library。
4结束语
本文全面的介绍了AJAX工作原理、核心技术及ASP.NET AJAX开发。通过AJAX技术,能够大幅度提高网页使用的性能,响应时间大幅缩短,用户可以更加方便的使用网络服务。然而AJAX技术已经取得了很大的发展,但它在对设备、媒体以及兼容性有较高的要求上仍有待进一步研究。作为一个快速发展的领域,AJAX不断涌现的新技术必将快速推动网络应用的快速发展
参考文献:
[1] Dave C,Eric P, Darren J.Ajax实战[M].北京:人民邮电出版社,2006.
[2]陈湘军,景征骏,陆冷飞.WEB开发实用教程[M].大连:大连理工大学出版社,2011
[3] NAGEL C. C#高级编程[M].李铭,译. 6版.北京:清华大学出版社,2002.