ASP.NET 2.0當中的Call back技術與ASP.NET AJAX

gudesheng發表於2008-01-03



前面介紹過了幾個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呢?它不是也能來編寫控制元件嗎?呵呵,沒錯,不過這又是另一個層面的問題了,也許下次有機會時後再跟大家報告一下這中間的差異... 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1926581


相關文章