2006年,无疑是Ajax技术红得发紫的一年.xmlhttp,异步调用,无刷新......无不让人垂涎三尺.
可能是由于天生憎恨javascript的原因,在ajax走红这一年,我对这家伙一直没什么好感,也没怎么研究.从前段时间开始,由于需求,总算和Asp.net Ajax有了一个亲密接触,如今,对他总算有一点发言权了.总的来说,在我眼中,Asp.net Ajax就是"看起来很美好".
(由于我所从事的是.NET的开发,所以Blog中提到的Ajax都是指的Asp.net Ajax)
记得大约一年前,听一微软的哥们瞎白话,丫的一个劲声称Ajax是微软产品的倒退,而不是进步.当初不是很了解Ajax,只是觉得这丫怎么胳膊肘不朝里面拐:)~~题外话.
近一段时间,我站在使用的角度,对Asp.net Ajax有了一点了解.酷,眩,丰富,友好的用户操作方式确实让我很震撼和激动.但是让我非常崩溃和不能容忍的一件事就是Asp.net Ajax的性能!!!
举一些简单的例子:在Asp.net Ajax Control Toolkit里面,有一个Animation的控件,相当帅,使用也相当简单,和传统的Asp.net控件一样.但是在页面中用上一两个Animation还成,一旦多起来(比如,我要在GridView里面的每一行绑定一个Animation),嘿嘿.你再用吧,页面载入相当慢,点个七八次,IE就会警告"当前脚本让系统运行很慢..".来看看ScriptManager为我们生成的源代码就知道了,每一个Animation,都有一段如下的javascript代码:
Sys.Application.add_init(function() {$create(AjaxControlToolkit.Animation.AnimationBehavior...))...
在页面载入的时候,会执行初始化操作,如果数量太多,则非常耗时.并且,不知道是不是Asp.net Ajax的BUG,似乎对象在使用完毕没有进行Dispose,因此点个七八次Animation之后,IE基本就动不了了.
再比如,Toolkit里面的RecordList控件,就在Toolkit的Sample Site里面,只要你持续拖动一行移动,不出十秒,你的IE基本就呈瘫痪状...原因基本和上面的类似.
....
而在Asp.net Ajax中,几乎所有的控件运行机制都是这样.这不得不让我对Asp.net Ajax的性能担心起来.
当然,也不会没有办法解决这些问题,我们在项目中使用了比较特殊,而且麻烦的方法.不让Asp.net自动为我们生成初始化javascript代码,并且在使用的时候自己添加Dispose代码...但是,这个过程相当繁琐.记得那天,我和同事研究到晚上快3点,总算找到解决方案.兴奋得睡不着的同时感到了一些失落----原来Ajax只是"看起来很美好"......
所以,我现在对目前Asp.net ajax的印象只是:小规模使用,增加用户体验,还是相当不错的.但是目前的Asp.net Ajax,不能大规模应用.
PS.当然,目前Asp.net Ajax只是1.0,随着日后的完善,或许会有很高的提升,毕竟,这个技术改变了Web开发.只不过,他的底子还是javascript,这个...呵呵呵
从来就没打算在Ajax上下功夫。我心目中最理想的RIA客户端环境应该是Silverlight这样具有丰富表现力的Presentation Model + Ruby或Python这样的强大的动态语言Controller,黏合后台的REST或Web Service数据服务。