現在A(yíng)JAX比較火,很多大的公司在推出相關(guān)的開(kāi)發(fā)庫和工具。本人前一段碰巧有機會(huì )從頭開(kāi)發(fā)一個(gè)網(wǎng)絡(luò )應用,對AJAX相關(guān)資料進(jìn)行了一番評估,結果沒(méi)有采用。主要的感受就是:AJAX實(shí)在是一個(gè)雞肋。
最開(kāi)始留意AJAX是在使用Gmail 的時(shí)候,覺(jué)得很順手,沒(méi)有一般的網(wǎng)絡(luò )應用那種礙手礙腳的感覺(jué)。后來(lái)看了一下 Google 和 Microsoft 的地圖服務(wù),如果不是用AJAX一定會(huì )操作非常繁瑣。這些都是AJAX的殺手應用,正是這些讓開(kāi)發(fā)人員重新燃起了對DHTML的熱情。因應市場(chǎng)需要,開(kāi)源社區和一些大公司如 Microsoft, Yahoo 等都開(kāi)始提供開(kāi)發(fā)工具,現在可以使用的已經(jīng)很多了。
之所以我在開(kāi)發(fā)目前的軟件最終放棄了AJAX,有幾點(diǎn)原因:
首先,AJAX的開(kāi)發(fā)和維護成本太高。部分原因在于目前可用的開(kāi)發(fā)庫很不完善,你必須理解不用這些庫,直接使用 Java Script, CSS, DOM, XML 和 XHTTP 如何開(kāi)發(fā),因為有些功能你在庫里是找不到的。這對于項目組的要求很高,所有的成員必須要有一個(gè)長(cháng)時(shí)間的適應過(guò)程。不同的庫使用方法和架構很不同,很難借用不同庫里較好的功能,Copy / Paste 大法不起作用?;贘ava Script 的編程實(shí)在是軟件工程的一個(gè)倒退,小的界面不復雜的應用還好(當然,這種程序也不必要用AJAX),大的程序編起來(lái)簡(jiǎn)直是惡夢(mèng),代碼的封裝和邏輯的分離很困難,又跟HTML攪在一起,很難讀的懂,又沒(méi)有工具可以顯示一下類(lèi)圖等,可以說(shuō)用傳統的ASP.NET或JSP可以幾天干完的活,用AJAX得至少多一倍時(shí)間。
其次,性能調優(yōu)比較麻煩??蛻?hù)端與服務(wù)器的交互必須很好的設計,否則速度還不如ASP的好,刷新局部比整個(gè)頁(yè)面還慢。調整個(gè)別地方的性能常會(huì )導致整個(gè)架構的變化。
另外,瀏覽器兼容的問(wèn)題很麻煩。要知道很多對瀏覽器敏感的代碼并避免使用,而且,有時(shí)候必須要分別對不同瀏覽器實(shí)現同一邏輯。測試的工作真的很煩人。
回過(guò)頭來(lái)想一想,AJAX確實(shí)可以使用戶(hù)的體驗上一個(gè)層次,但能否帶來(lái)很多新的客戶(hù)是一個(gè)問(wèn)題。如果Gmail仍然有大容量郵箱,免費而且可以使用POP3收發(fā),即使沒(méi)有AJAX我還會(huì )使用,也沒(méi)有人會(huì )僅僅因為這個(gè)就換郵箱。對Google來(lái)說(shuō),他有錢(qián),可以提升企業(yè)形象,有長(cháng)遠的好處。對大多數開(kāi)發(fā)企業(yè)應用的企業(yè),這是比較虛的投資。
從長(cháng)遠的角度看,AJAX 只是不得已而使用的,而且目前可用的 UI 設計解決方案。用戶(hù)界面編程必將向實(shí)現目前的桌面程序所能達到的可用性發(fā)展,AJAX再怎樣進(jìn)步,也不能擺脫DHTML的能力。最終的解決方案最可能的是設計新的UI描述語(yǔ)言,可以完整的支持與桌面應用類(lèi)似的用戶(hù)體驗,同時(shí)支持程序員們熟悉已久的類(lèi)似 JAVA 或 MS.NET 的 OO 設計方法和工具??梢钥吹?,微軟已經(jīng)推出了XAML的測試版本,其他開(kāi)源組織和大公司也在朝著(zhù)這一方向努力。當然,在新的標準亂戰的時(shí)候,AJAX會(huì )憑借其即存的廣泛支持有一個(gè)不錯的發(fā)展,尤其是在門(mén)戶(hù)網(wǎng)站上取得更多的應用。但是,警鐘已經(jīng)敲響,AJAX在企業(yè)軟件市場(chǎng)將很快過(guò)時(shí)。比如,SAP就已經(jīng)要在后續開(kāi)發(fā)中使用一種基于Flash的UI開(kāi)發(fā)環(huán)境了,它可以提供超過(guò)桌面應用的用戶(hù)體驗。我的一個(gè)朋友說(shuō),AJAX只是半個(gè)RIA,他說(shuō)的不錯。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=602509