DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> Ajax技術是否即將沒落?
Ajax技術是否即將沒落?
編輯:AJAX詳解     
在孟巖老師11月21日的blog(http://blog.csdn.Net/myan/archive/2006/11/21/1402346.ASPx)中說他驚艷於微軟公司新近推出的界面開發工具Expression,並且預言基於Web標准(通常即XHtml+CSS+JavaScript)的界面開發技術很快就會沒落。孟巖預測:“最遲不超過2008年,在WPF、Flash(Apollo)等RIA技術的夾攻之下,越來越多的Web應用將同時部署傳統Web頁面和新的RIA UI。”

  對於這個預測,我和一些朋友認為孟巖老師過於樂觀了。我預測至少到2010年,基於Web標准的界面開發技術仍然將是Web界面開發的主流技術,而這些技術的集大成者就是Ajax。Ajax技術在最近兩年中取得了很大的發展,並且仍然在迅速發展的過程中,現在就斷言AJax技術即將沒落還為時尚早。

  誠然,從純技術的角度來看,我們也早就認為XUL/XAML一類使用XML來描述界面組件和布局的技術肯定是Web界面開發技術的發展趨勢。W3C今年成立了一個工作組,希望將XUL、XAML、MXML等幾種界面描述語言統一為一種標准的格式(http://www.w3.org/2006/appformats/)。所以我們認為孟巖老師所看到的趨勢是沒有大問題的。從純技術的角度來看,將來的Web界面開發肯定會發展到這種技術。

  然而,能看到趨勢當然很重要,但是我們還是需要解決很多現實的問題。我在這裡提出幾個問題來與大家探討。

  第一個問題是:這種趨勢將會以多快的速度成為現實?

  技術的發展和演進往往都是一個長期的過程。面向對象開發取代面向過程開發、Java取代C++、Ruby逐漸取代Java都是一個長期的過程。孟巖老師所預測的2年和我所預測的4年似乎相差不大,但是對於我們現階段所要采取的行動其實影響很大。

  即使正如孟巖老師所預言的,這確實是技術發展的趨勢又能怎樣?我們是否一定要在今天為明天和後天發生的事情而買單。過早為將來發生的事情買單,很可能會代價高昂。這跟炒股差不多,有經驗的玩家會在最適當的時機入手。過早入手、過晚入手,都會蒙受損失。在這種趨勢成為現實之前,我們是否坐等共產主義的實現?我認為等待並不是一種積極的態度。


  第二個問題是:AJax有何優點?

  我認為孟巖老師並沒有充分地看到Ajax的優點。孟巖說:“昨天我還在說AJax是過渡技術,沒想到幾個小時之後就得到印證。” 其實嚴格說來,任何的技術都可以稱為是過渡技術,但是這並不會妨礙使用這種技術來為用戶創造價值。孟巖只看到了使用基於Web標准的界面開發技術開發效率低下的一面。但是目前國內做界面開發的開發者有多少人真正理解了Web標准呢?根據筆者的經驗,采用完全的CSS布局,將頁面的結構、表現、行為三部分分離開,注重頁面各部分的重用。經過一段時間的積累之後,基於Web標准的界面開發完全可以達到比較理想的開發效率。而配合使用Dojo、Scriptaculous、YUI等成熟的AJax組件庫,還可以更進一步提高界面的開發效率。在筆者看來,影響開發效率的問題主要有兩個方面:

  1 Web界面開發者沒有充分理解Web標准。
  2 Web界面開發者沒有嘗試過組件化的開發方式。
  相對於其他技術而言,AJax最大的優點有這三點:

  1 Ajax是完全基於Web標准的技術,AJax所用到的所有的技術都是真正的Web標准。
  2 AJax應用可以毫無障礙地部署到幾乎所有的桌面電腦上。
  3 AJax應用的開發和部署成本很低。
  對於第一個優點,有人可能會爭論說,標准其實並不重要。例如EJB 2.x是標准又如何,現在不是也一樣被拋棄了嗎?但是這兩種標准是不可相提並論的。EJB的標准在推出之時,完全沒有經過開發實踐的檢驗,與開發實踐嚴重脫節。然而Web標准卻是從開發實踐中積累而來的。AJax所基於的這些Web標准都是先有了非常成熟的應用和成功的商業案例之後才會形成標准。Web標准之所以成為了今天這個樣子,是經得起歷史考驗的。如同TCP/IP標准一樣,它仍然會長期沿用下去。

  第二個優點其實是第一個優點所派生的。上世紀90年代末,在Web標准組織和W3C的不懈努力下,結束了浏覽器大戰,各種浏覽器都承諾支持真正的Web標准。今天這種支持到了開花結果的時候,結出的果實就是誕生了一種稱作AJax的新技術。正是因為今天所有主流的浏覽器都已經能夠很好地支持Web標准(通常即XHtml+CSS+JavaScript),而幾乎所有桌面電腦上都安裝了某種主流的浏覽器(IE、Firefox/Mozilla、Opera、Safari、etc.),因此AJax應用可以無痛地部署到幾乎所有的桌面電腦上。盡管今天不同的浏覽器對於Web標准某些部分的理解還略有歧義,實現上略有差異。但是只要基於成熟的組件庫來做開發,這些差異可以被最小化,已經不會成為開發的障礙。

  如果我在這兩三年內想建立一個電子商務網站,卻只能部署到幾百萬個安裝了XAML render引擎的用戶機器上(而不是像AJax那樣幾乎所有的桌面電腦)。除非我的腦子壞掉了,我不會做出這樣的選擇。對於面向互聯網的應用而言,基於真正Web標准來做開發,並且隨著Web標准及其浏覽器實現的發展而演進,是實現最大商業利益的必然選擇。

  AJax應用可以被部署到幾乎所有桌面電腦上這個事實是其他所有技術多年來夢寐以求而不可達的理想國。另外一種現實的選擇是Flash UI,Flash的部署范圍也已經達到了足以大規模應用的程度。出於現實的商業考慮,我在幾年之內都不會選擇基於XAML建造我們的應用,除非它的部署范圍達到了某個臨界值,並且有朝一日成為真正的Web標准。

  第三個優點是因為,開發Ajax應用所需要的工具幾乎全部都是開源軟件,可以免費獲得,因此不必花錢去購買昂貴的開發工具。其實開發簡單的Ajax應用,一個主流的浏覽器,再加上一個文本編輯器就已經足夠了。只要你所開發的代碼質量足夠高,AJax應用的部署可以達到完全的零成本。

  第三個問題是:基於浏覽器和Web標准的開發技術是否一定會沒落?

  我和孟巖老師的一個主要的分歧在於,我並不認為基於浏覽器和Web標准的開發技術一定會沒落。其實早在3年之前,當我嘗試基於XMLHttpRequest來設計我們的架構和開發我們的應用時,當時已經有很多人預言基於HTML(或者XHtml)+Javascript的開發方式必然會很快沒落,對於我對JavaScript如此熱衷很不理解。但是幾年過去了,這種開發技術非但沒有沒落,反而煥發出了勃勃的生機。這是在其沒落或滅亡之前的回光返照嗎?至少在我看來並不是這樣,而是有其內在的規律。正是因為上面我所說到的這種開發技術的優點,今天幾乎所有的Web用戶都在使用這種技術。有龐大用戶量廣泛使用的技術必然會不斷發展,而不可能很快沒落。其實XAML最終是否會取代AJax,這並不是一個純技術的考量,而是涉及到整個Web應用生態系統的遷移。今天90%以上(我的保守估計)的Web應用都建立在基於Web標准的界面開發技術之上,輕言這種技術在兩年之內必然會沒落是不嚴肅的。單靠微軟等幾個大公司想要扭轉這種長期以來自然形成的狀況,談何容易?我認為不大可能。

  所以在我看來,這種開發技術仍然會不斷地發展和進步,自然地演化到一些新的Web標准(例如XHtml 2.0、CSS 3.0、JavaScript 2.0)。它的生命力會歷久彌新,我敢與任何人打這個賭,至少到2010年,這種技術仍然將會是Web開發技術的主流。當然到了那個時候,XAML也可能會發展為web開發技術的主流,因此會出現一種百花齊放的狀況。這並不是一場零和的游戲,只會出現一個贏家,其他人都會輸,贏家通吃的情況我認為並不會出現。

  第四個問題是:是否深入學習AJax就無法得到“這一代Web技術和體系的理解”?

  孟巖老師說:“我們今天所說的web開發高手,有多少是把自己的身家性命押寶在對這一代Web技術和體系的理解上?”

  這句話有很大的誤導性,似乎深入學習Ajax就無法得到“這一代Web技術和體系的理解”。至少根據我的個人經驗,深入學習Ajax可以幫助我們更好的獲得“這一代Web技術和體系的理解”。我今年組織翻譯了《Ajax in Action》、《Ajax Practices and Best Practices》,還將要從台灣引進《AJax Design Patterns》。這幾本書使得我對於國外的web開發高手的水平歎服不已,並且很大地加深了我對於“這一代Web技術和體系的理解”。

  孟巖老師還說:“且不說他們日常工作中大多數時間花在了界面開發之上,就算是很多人引以為傲的所謂“大負載量Web站點架構”,也將隨著 RIA的興起而發生一場巨大變革。大量頁面狀態將前移到客戶端,Web服務端將以全新的觀點重新組織資源,逐漸變成真正意義上的Web Services集合。舊的知識和經驗迅速貶值,新的機會快速湧現,有的人沉下去,有的人飄起來,歷史又要重來一遍了”


  我可以肯定孟巖老師並沒有深入研究過Ajax應用的架構,因此才會誤以為“大量頁面狀態將前移到客戶端,Web服務端將以全新的觀點重新組織資源,逐漸變成真正意義上的Web Services集合。”與AJax是完全矛盾的。與孟巖老師這種大開大合的革命性預測不同,我認為技術從來都不是以這種方式進步的。技術進步是一個自然的緩慢演化過程,面向對象逐漸取代面向過程、Java逐漸取代C++、Ruby逐漸取代Java,都有很大的傳承關系在裡面。將某種技術描述為橫空出世的“天生石猴孫悟空”,我認為是不嚴肅的,也是沒有做深入研究的體現。我並不認為以前在傳統Web開發技術方面所積累的知識就會很快貶值。只要自己與時俱進,不斷補充新的營養,“大負載Web站點架構”的經驗永遠都是很寶貴的實踐經驗。AJax技術,正是目前絕大多數傳統的web開發團隊向RIA時代遷移的最自然的選擇路徑。

  第五個問題是:程序員做界面開發是否是不可能的?這是否就是Web應用開發效率的瓶頸所在?

  孟巖老師說:“因為今天web開發中,設計人員基本只是解決頁面布局與圖片效果的設計,而大量動態界面效果還需要開發者來完成。 Expression + Visual Studio的模型則將“與用戶交互的界面部分”與“後台業務邏輯”完全分開。設計人員憑借類似Flash的方式,就可以開發出類似視頻游戲那樣的用戶界面。”

  我是做Java開發的,如果我作為技術負責人,我的團隊中將會有這些分工:

  1 業務邏輯開發人員,使用Java和Spring等框架做開發。
  2 界面邏輯開發人員,負責VIEw的開發,精通FreeMarker、XHtml、CSS、JavaScript等技術。
  3 美工,負責制作圖片,對於頁面的樣式和配色提供指導,用Photoshop設計出頁面樣式,交給界面邏輯開發人員來制作。
  由界面邏輯開發人員來制作頁面,制作的頁面必須達到我的要求。例如,完全基於CSS的布局,在各種主流浏覽器上都要正常顯示等等。在我這裡,業務邏輯開發人員和界面邏輯開發人員並不存在誰高誰低之分,薪水也是基本相同的水平。孟巖認為在基於Web標准的開發過程中,程序員不應該做頁面,這個看法是錯誤的。程序員是否做頁面也並不是開發效率的瓶頸。如果某個程序員精通了上述這些技術,他完全可以迅速開發出美觀的頁面。特別是在注重頁面中XHtml/CSS/JavaScript各部分的重用的情況下,積累上一年之後,要開發的很多東西都是相似的。孟巖老師認為完全的分工可以達到最大的開發效率,這是一種幻想。為什麼web開發從J2EE非常清晰的分層又變成了在RoR中不是很清晰的分層?軟件開發並不是流水線式生產。分工應該適當,分工太細,不同層次之間溝通的成本就會迅速上升。這又回到了《人月神話》中的命題:主要的成本在於溝通的成本。依靠細致的分工降低對開發人員素質的要求,實現流水線式生產,創造大批軟件藍領,這本身就是一個幻想。Ruby解決問題的思路與此是不同的,Ruby的思路是提高抽象的層次,使得一個開發人員有能力承擔更多功能的開發。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved