一個更好用更高效的Ajax框架XCallback

字號:

csdn給人的感覺是太浮躁,給人的學術氛圍不夠,而且什么技術都有給人感覺很雜亂 ,還是cnblogs不錯 主要以.net 為主,技術含量很好,今天考試,大來這里特意和大家分享一個自認為很不錯的ajax的框架XCallback,它是對callback的擴展 ,筆者曾經(jīng)用過好幾款ajax框架,最早用UpdatePanel 后來處于性能的考慮決定廢棄,廢棄原因有4:
    1.網(wǎng)頁首次要加載310kb的axd文件,占網(wǎng)速也占用瀏覽器的載入時間。
    2.效率很低,違背了ajax的初衷,回傳了viewstate和所有控件的值3.不夠靈活,面對復雜而多變的項目開發(fā),不是用幾個拖拽就能解決問題,編程仍然是解決問題的核心,但是你想在他強加的思想下做出改變又是何等困難 。
    4.部署也不易,也許有人會說,把那兩個程序集傳到bin下就行了 ,可是無論我怎么整,ajax效果總是失效,也許這與ajax工具包早期版本有關這是我放棄UpdatePanel的原因后來聽同學說ajaxpro也不錯,ok 就用了 ,對他這種簡單的客戶端調(diào)用服務器端的方法感覺很驚奇,想看看ajaxpro的源碼,可是reflector進入了更新的死路,更新了N次都沒成 [ 這里的各位如果誰的reflector能用 請給我發(fā)一個chenxumi@hotmail.com ] 看ajaxpro的風格潛意識里猜測好像使用了反射技術。用了一段時間,但是面對實際問題時,最終還是棄用,棄用原因有:
    1、ajaxpro會生成4個ashx文件,感覺它應該生成1個文件比較好,因為大家都知道IIS有并發(fā)連接數(shù)的限制,尤其是虛擬主機更是規(guī)定在一定范圍內(nèi)[記得150元的主機大多規(guī)定在200個并發(fā)連接數(shù)],而且ashx文件和服務器的連接時效很長,讓我覺得ajaxpro并不完美[也許編程珠璣看多了,要求得過于苛刻,雖然我們現(xiàn)在的軟件環(huán)境和硬件環(huán)境已經(jīng)不像以前的程序員那么艱苦了,但是對于web這種講究高性能的程序還是較真要好]
    2、我曾跟蹤調(diào)試ajaxpro發(fā)送數(shù)據(jù)的過程,感覺的有些慢,只是感覺而已,也沒仔細研究具體代碼,只是自己一面之詞,不知大家有沒有這種感覺,估計這是個有爭議的地方3、ajaxpro是小巧吸引了我 ,至今還記得23kb小巧精致 正合吾心,可是當我要面對動態(tài)加載一些數(shù)據(jù)控件時,他卻根本做不到, 通過反射機制的ajaxpro反過去執(zhí)行類里的特定控件可不是容易事,所以即使在partial里用ajaxpro訪問cookie也只能這樣HttpContext.Current.Request.Cookies["name"].Value.ToString();得到,ajaxpro現(xiàn)在的確也支持dataset這些復雜的數(shù)據(jù)類型,今天我也訪問過他們網(wǎng)站(http://www.ajaxpro.info),也有很多對應的例子,可是實現(xiàn)dataset可不是簡單事,服務器端代碼的編寫,客戶端代碼的編寫,都是復雜的繁雜的而且有些技術含量的東西,不利于快速的項目開發(fā),等到了ajaxpro.2 的時候程序集已經(jīng)增加到140kb了 ,我懷疑是不是內(nèi)置了js庫呢,或是我下了山寨版的ajaxpro ?
    終于ajaxpro廢棄了第三款ajax框架JQuery都說小巧優(yōu)雅,于是用了,可是失望,在純ajax方面比ajaxpro好不了多少 ,120kb的加載量也是我不能忍受的第四款也是剛看到了,原來還有個Anthem.net 驚鴻一瞥了一下 ,失望,又是個模板式的東東,不過據(jù)反映在服務器端方法的執(zhí)行上和加載量上有優(yōu)勢 ,這點讓我心動。
    但是事實上還有更好的一款ajax框架,他幾乎具備了以上的所有優(yōu)點和不具備以上的所有缺點他就是XCallback 是對callback的擴展他很簡單很優(yōu)雅很高效,通過return的分割就完美實現(xiàn)了在一個方法里共存ajax調(diào)用前的方法和數(shù)據(jù)返回后執(zhí)行的方法,這樣有很多優(yōu)點 ,大家看看下面兩幅圖 ,看看是不是簡單,如果覺得ajax實現(xiàn)的很簡單請繼續(xù),如果還是覺得麻煩 ,沒什么價值,也不強求你看下去了
    這是前臺頁面,數(shù)據(jù)從服務器返回后將執(zhí)行return之后的函數(shù)體
    
    這是后臺頁面,只需初始化InitAjaxStyle()就可完成服務器端函數(shù)調(diào)用