前面介绍过了几个ASP.NET当中的AJAX机制之后,不知道读者是否偶而也有一些confuse,原因是有太多种方法可以在.aspx网页上进行AJAX动作了,目前最常见的几种方式是:
1) 传统的HTTP request(要自己写一些JavaScript code)
2) asp.net 2.0当中的Call Back技术(ASP.NET 2.0当中原生支持,不需要安装任何套件)
3)安装ASP.NET AJAX套件之后的 异步 Web Services Call
4)安装ASP.NET AJAX套件之后的 异步 Page Method Call
5)安装ASP.NET AJAX套件之后的 UpdatePanel
由于有很多读者问到,同时也不少人有这方面的争论或是疑惑,因此笔者分别针对这几种方式稍做说明。
目前,只要您是ASP.NET的开发人员,我相信你会在2,3,4,5这几种方法当中选一个,而最常用的可能是方法5。因为方法1这种传统的Http Request不仅要编写相当多的JavaScript,并且很可能您要自己处理浏览器兼容与支持的相关问题,因此一般来说我们不太做这样的用法。
而其中最简单的则是方法5, 采用UpdatePanel,但是, 读者要知道,上述各种AJAX技术当中,最耗费频宽且效率最差的就是UpdatePanel,笔者在研讨会常常碰到读者询问ASP.NET AJAX的效率不好(但是其实只有UpdatePanel的效率不是非常好,而且这还跟使用的方式有关...),因此在这边笔者要再三强调,仅管你看到 UpdatePanel 所谓的“partial postback” "似乎只是" 将一小块区域回传给伺服器端,但是实际测试后你会发现,在进行partial postback时,其实是 "整个页面" 回传给伺服器端(只是没有换页),而虽然reload回来的时候确实是局部的页面,但是如果你加上了Timer一起用,肯定会造成可怕的网路流量...
而方法3的异步Web Services呼叫其实是笔者比较喜欢的方式,不管在执行效率或是原理架构上,都是蛮漂亮的AJAX用法,而方法4的PageMethod则是类似于方法3的一种简易用法,不需要额外建立一个Web Services(.asmx),就可以在页面当直接使用,是比较轻量级的方式,如果您的页面上想要画龙点睛的来一小段AJAX功能,方法4是不错的选择,而方法3则可以让开发人员以正规的方式建立较为庞大的AJAX架构,例如编写一个AJAX版的开发平台,类库...等
而方法2呢?怎么越来越少听到笔者谈起?可能有读者以为ASP.NET AJAX出现之后我们就把它抛在一边了,其实这个观念不是非常的正确,您会发现Call Back技术依旧是目前 "编写支持AJAX功能的Web控件" 最好的方式...
可能笔者提的很少,但是其实是因为台湾现在写控件的人越来越少了,您若深入研究就会发现,ASP.NET 2.0当中的Call Back机制不仅可以用在网页上,也可以用在User Control和Web control,可以让页面(或控件)直接支持AJAX功能,是非常好用且笔者非常喜欢的一种做法,如果你的开发团队当中,需要自行开发控件,而这些控件想要支持AJAX,Call Back技术是最理想的选择...
而Extender Control呢?它不是也能来编写控件吗?呵呵,没错,不过这又是另一个层面的问题了,也许下次有机会时后再跟大家报告一下这中间的差异...