最近开始学习Asp.net中的AJAX,可能我的高手朋友们会说:“走还不稳呢!怎么就想学跑了?”呵呵!主要是我在做项目中体会到AJAX真的是很好的一门技术,应该好好的学习一下,以后也作为自己的一个技术点,慢慢的积累,逐渐掌握。下面是我在我现在学习的《ASP.net AJAX与Silverlight 实战手册》中摘抄的部分文章话语,写的很明了,至少我一遍就看懂了笔者所描述的AJAX产生的背景,()之中加入了我的理解及现实实例,把它费时的打出来,让路过的朋友也可以分享一下。
在网页开发模式的不断进化之时,原本理所当然的页面刷新操作,慢慢的也变成一种不友善、没有效率的表现,随着网页上呈现的内容越来越多,样式越老越多元化,与用户互动的部分也越来越多。(每次刷新其实就以为着再次打开这个页面后,所有用户操作的旧的信息都会全部归0,相信大家都遇到过注册用户这个步骤吧,我的一个高手朋友周公,就在他的博客中,谈到过他曾经遇到过的一件事,很多年前,带宽很窄,在他填写完一个网站的注册信息后,若干分钟后,弹出“用户名已存在”的对话框,乃至他对此事记忆犹新。同样在我们按照注册要求填写好信息提交后,最不想看到的就是非用户操作引起的注册失败,比如许多与数据库相关的验证、储存数据等操作最后还得送到服务端来处理,早期的技术不能实现想现在大多网站在我们输入用户名后,点击网页提供的按钮,提前检查你所登记的用户名是否存在的这个注册失败条件,你不必等待网站的反馈信息,可以继续填写余下的注册条件,即使返回了失败的信息,你只需修改新的用户名,不会影响你已经填写好下面的信息,这种(AJAX)技术实现了网页的局部刷新,提高了用户操作的方便性。)
XMLHttpRequest的诞生
页面刷新是为了要将数据送回服务器端,然后有服务器端取得更新后的页面来显示,那么如果能在不刷新页面的情况下,将数据送往服务器端,就解决了页面刷新的问题了。很幸运地,有微软推出的IE打破了这个僵局,在XML盛行的初期,修改了一部分浏览器的设计概念,允许设计师在js中创建一个ActiveX(它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。http://www.baidu.com/s?wd=ActiveX)对象 :XMLHttpRequest,利用这个对象,设计师可以用js将数据直接送到服务器而不引发页面刷新的操作,只是在当时这个功能没有公认的成为浏览器的标准,直至今日,除了IE其他的主流浏览器,如Netscape、Mozilla都已支持同样的功能,让XMLHttpRequest在一瞬间成了标准之外的热门技术,以此对象为核心的新名词AJAX全名是“Asynchronous JavaScript And XML” 也就诞生了,Asynchronous的语义来源于XMLHttpRequest所采取的异步行为模式,使用XMLHttpRequest发送数据时,必须指定一个接收返回数据的函数,送出数据后,客户端不必停下来等候数据的返回,XMLHttpRequest取得返回数据后,会调用指定的函数将数据传过去。
在创建XMLHttpRequest对象时,指定processRequest函数为收取返回数据的函数,在XMLHttpRequest的send函数被调用后,XMLHttpRequest即发送要求,需特别注意的一点是,send函数不会像传统函数调用般等待要求被处理后而收取返回值,而是直接返回,继续运行下面的js程序,或将主导权还给浏览器,此行为模式正是AJAX中的Asynchronous语义来源。AJAX中的J代表JavaScript,虽然IE可以用vbscript来使用XMLHttpRequest对象,但是JavaScript才是诸多浏览器所支持的标准语言,因此AJAX中的J代表的是启动XMLHttpRequest对象时所使用的语言。AJAX中的第二个A代表的是and,最后的X代表的是使用XMLHttpRequest对象是所使用的数据协议,也就是XML文件格式。
百家争鸣的AJAX Framework
在XMLHttpRequest受到瞩目不久,网络上开始出现许多以XMLHttpRequest为根基的Framework,这些FrameWork大多数是以开源的方式授权,大致可以分为两大派别:一派:主张单纯的js来构建UI(即User Interface(用户界面)的简称),再利用XMLHttpRequest与服务器沟通,这个派别产品最大的特色就是绚丽的ui效果及最小化后端依赖的设计;另一派则是维持以后端为主、js为辅的架构,这个派别的产品最大的特色技术后端依赖比较搞,适合对JavaScript不甚熟悉的设计师选用。
是终点还是起点,Silverlight、AIR、JavaFX
2005年12月5日, Adobe(http://zhidao.baidu.com/question/10066667.html?si=1)公司以34亿美元的天价收购了以Flash风靡全球的Macromedia(http://baike.baidu.com/view/8375.htm)后,喊出了RIA的概念,推出了AIR(她的全称是”Adobe Integrated Runtime”由Adobe开发, 原代号为Apollo(阿波罗),她是一个跨操作系统运行环境,允许开发人员利用他们现有的网络开发技术(如Flash, Flex, HTML, JavaScript, PDF)在桌面系统建立和部署富互联网应用。
从本质上讲,她提供了一个桌面与浏览器结合的平台,并达到网络模式结合桌面模式功能和丰富形式的开发模式。)的产品线,将html由主角变成配角,在网页上体现出友善、类似Windows GUI(就是WINDOWS的图形用户接口,像windows对话框、菜单等)的界面。面对Adobe公司的大动作,身为开发工具领导厂商的sun与microsoft当然不能落后,microsoft首先推出了Silverlight,而且一次推出两个世代的产品,silverlight1.0不久拥有与Flash不相上下的2D绘图及影音支持,更好的是它使用js为主要开发之程序语言,silverlight1.1 Alpha则更进一步,资产c#、vb.net等.net程序语言,提供小型的.net FrameWork(SLR)让原本使用.net Framework的程序员更轻松地利用silverlight1.1来构建新一代的RIA网页应用程序。随后sun公司则推出了JavaFX,同样支持2D绘图与影音能力,JavaFX的目标似乎不在桌面应用上,而是在消费性电子产品上。
Asp.net AJAX的诞生
2005年下半年microsoft推出了ASP.net专属的AJAX Framework:Atlas Framework。与其他AJAX Framework不同的是,Atlas以client与server端集成的角度来实现AJAX技术,除了提供了以js所打造的而成的AJAX Client Framework 之外,Atlas同时也提供了数个ASP.net server control,借助这些控件的强力支持,Atlas Framework可以让开发者一行js代码都不用写,建构出拥有AJAX功能的ASP.net网页应用程序。其中最令人感到震撼的是updatepanel控件,其内可以放入大多数的ASP.net控件,2007年推出Atlas Framework的正式版,更名为 ASP.NET AJAX Framework。但是只有ASP.net 2.0才能享受到ASP.NET AJAX 带来的便利。获得ASP.NET AJAX 的方法很简单,只要链接到ASP.NET AJAX 的下载网页即可下载。(Http://www.asp.net/ajax/downloads)(vs2008专业版中自带了ASP.NET AJAX ,不需再按装)。