当去年ajax技术如火如荼,ajax框架层出不穷,而微软又推出asp.net ajax框架之后,这四个概念之间的混淆也愈发严重起来了。我经常能看到这样的问题:
我在用ajax技术时不知道怎么在updatepanel里……
我用ajax.net框架调用web service时……
这是非常典型的概念混淆,上面两句话的ajax与ajax.net都应该使用asp.net ajax替换。关于这几个概念的区别我《深入浅出asp.net ajax》系列webcast多次进行解释,不过收效似乎并不明显。于是我打算在这里再进行一下说明:
ajax是asynchronous javascript and xml缩写。这个概念代表的是一种技术,当您在说“我在项目中使用了ajax技术时”,只是代表了您使用客户端xmlhttprequest对象与服务器端进行异步通信。不过因为随着ajax技术的运用往往会带来丰富的客户端效果,因此对ajax技术的广义理解也可以认为这是一种操作客户端dom而带来丰富效果的技术(这个“广义”的描述其实并不准确,大家明白老赵的意思就可以了)。
ajax框架是一套辅助开发人员使用ajax技术的代码包(库,etc.)。一个ajax框架的目的一般是对xmlhttprequest对象的使用进行封装,并提供一些操作dom元素或者实现特殊效果的“捷径”。成熟的ajax框架有很多,它们可以被分为“以客户端为中心”和“面向特定服务器技术”两大类。前者的优秀代表有(排名不分先后):prototype、jquery、mootools、yui、dojo等等(最后两个其实更接近一套客户端界面库,也就是“广义”的ajax框架);而后者的典型代表既是ajax.net和asp.net ajax了——当然,也有优秀的ajax框架面向其他服务器技术,在此不提。
ajax.net (professional)是asp.net平台上著名的ajax框架,诞生于2005年2月(虽然正式命名为ajax.net则是在两个月之后),作者为michael schwarz。同年10月,michael为ajax.net提供了更丰富的功能(主要是安全性方面),并将其改名为ajax.net professional。ajax.net提供的最主要的(也是唯一)的功能就是异步调用服务器端方法,可谓非常纯粹的“基于数据”的ajax使用方式。这个框架是一个个人作品,有支持.net 1.1和2.0的版本,它并不属于微软官方,目前已经停止更新。
asp.net ajax的code name为“atlas”,在ctp向beta版转移时曾经发生过翻天覆地的变化。asp.net ajax中包含了updatepanel等控件,可以非常透明地为现有的asp.net webforms应用程序添加ajax效果。此外还提供了客户端异步调用web services的方法,使开发人员也能够使用面向数据的方式使用ajax技术。值得一提的是asp.net ajax的“附属品”相当丰富。例如asp.net ajax名为“microsoft ajax library”的客户端部分是一个纯客户端ajax框架,提供了面向对象类型系统、浏览器兼容层、异步通信层等多种基础组件;asp.net ajax的开源扩展包“ajax control toolkit”包含了数十个可以直接使用的ajax服务器端控件,这样开发人员能够轻松地添加丰富的客户端效果。同时,官方还为asp.net ajax提供了“非正式”地扩展包,其中的history等优秀控件也将加入未来版本的asp.net ajax框架中。asp.net ajax是官方出品的ajax框架,目前已经被集成到asp.net 3.5中去了,因此其版本号也从asp.net ajax 1.0一下子“跃升为”asp.net ajax 3.5。如果您看到了这些版本号也请不要疑惑,其实asp.net ajax 3.5相对于asp.net ajax 1.0来说只是修补了一些细小bug,几乎没有任何变化。
引:http://www.diybl.com/course/4_webprogram/asp.net/netjs/2008712/132933.html