天天看點

轉:web應用開發的發展方向

HTML讓我越來越郁悶,說實話,對于用html做web應用開發,本人已經覺得很累了!無窮的浏覽器相容問題,CSS與JS在不同環境下的不同表現,這些就夠讓人郁悶的!更因為,HTML做為一門文本标記語言,其發明的初衷隻是用來格式化文本而已,而我們在這種變态的大環境下發明了用HTML表現用戶端應用的N種方法,并且能夠将其玩得轉的高人還為此洋洋自得!而我要說,這不是王道!

曾經有段時間對CSS的hack技術感到無比牛X,在網上看了N多技術資料,并以能寫出*html{}為榮。但當我在項目裡寫下越來越多的*html招數時,才發現原來這些讓人如此厭倦!我們為這個混亂的web世界付出了太多努力,可是我們的努力卻什麼都沒有換回!

如果看看這個世界,你會發現,無論何一種語言,都會提供健壯的文法,一緻的實作。從C到vb,從java到彙編,當程式出中出現莫名其妙的錯誤的時候,程式員們無一不是對這語言或是編譯器的公司破口大罵,或者轉投别的語言或編譯器。于是,迫于市場帶來的壓力,最終問題得到解決!而浏覽器中的情況卻不一而緻,基本上構成web世界的三要素,HTML/CSS/JavaScript都每個浏覽器裡都能表現得千差萬别!兄弟們,這是誰的錯?你可曾遇到過你寫的VB程式在計算1+1時在window98和window XP下一個等于2一個等于3的情況?為何明明一件很簡單的事,卻被市場的原因搞得千差萬别?

如果沒有netspace公司的liveScript,會有今天的ajax的輝煌嗎?在web構成的世界裡,每一項創新都可能把你推到世界的頂峰,這裡實在有太多機會!是以商業公司都才如此的急于釋出具有新功能的浏覽器。開放的web世界接受一切,開放帶了了web世界的強大,也帶來了web世界的混亂!

W3C組織是如此“強而有力”,它制定了無數标準,可是浏覽器制造商顯然對此視若無睹!每一個标準的制定都帶給人們希望,可是,這似乎永遠都隻是希望而已,web從神壇走向現實,還有多久的路要走?現今為止,做一個能在多個平台下正常顯示的web應用的最佳方式仍然是用無窮的垃圾代碼來堆砌!(我承認可以用div+css做出垃圾代碼很少的web應用來,但相對于傳統C/S開發方式而言,在界面互動設計方面,顯得成本高昂而且進度緩慢)

我是如此鐘愛fireFox,它帶給我無數美夢!我以為它能改變這世界,然而,我卻忘了,B/S模式的開發環境在B的方向是由客戶掌握的!程式員們枉想改變世界,可是手裡卻沒能握有一支鋒利的劍!IT經理們站在路口,目光茫然!然而firefox仍然值得人們尊敬!它在混亂世界裡尤如一道光芒,雖然不足以點亮夜空,但足以給人方向!

不知道還有多少個夜晚得浪費在無窮的JS代碼調試與CSS相容測試裡!為了一個簡單的tab分頁效果我們付出多少努力?一個簡單的div居中居然要為ie和firefox各準備一句代碼!美工與互動設計師們不想過上寫CSS的日子!我們需要一個所見即所得的界面開發環境!而不是在PS裡畫好圖再切片再一個個寫進代碼裡面!而不是在firefox的标準與ie6的野蠻之間求生存!

希望之光終于出現了,AIR騰空出世!adobe的Apollo/flex、MS的WPF/silverLight、sun的javaFX,新世界裡的三劍客向我們走來!三者之中,無論何一種方案,都能提供統一的實作方案,不用再為不同的浏覽器準備不同的代碼了!美工終于可以真正專注于美工,而互動設計師再也不用因為某些浏覽器不支援某功能而放棄某種互動設計了,這真讓人高興!而在B/S架構的B方面,我們終于可以用一個插件下載下傳提示框溫柔的影響我們的使用者了,雖然可能讓我們一某些客戶郁悶,但好處顯然更多!而且使用者付出的成本非常之小,至少大部分人會接受!

在未來的時間裡,網站仍然會被HTML統治着(HTML的強大緣于世界上任何一種浏覽器都能良好的支援它)!然而如果你需要一個強大的資料展示與互動工具,那麼AIR是你的不二之選!而在基于B/S架構的富網際網路/區域網路應用方面,AIR方案是當之無愧的王者!快速的開發模式與超酷表現形式,在開發者與使用者兩方面,都将極大的讨好!千萬别忘了,HTML隻是一門不具備擴充能力的格式化資料的基本語言,它不具有任何表現複雜資料結構與進階藝術效果的能力!如果離開JS和CSS,它早已被淘汰!HTML發展到如今,它的潛力已被發掘殆盡!人們急于将各種應用搬上web平台,而AIR利劍來得正是時候!

然而風險繼續存在!MS的WPF/silverLight仍然隻能在MS的作業系統+IE組合中運作!這讓人感覺又回到舊世紀!任何一位對使用者負責任的開放者都應抵制這種野蠻的行徑!别忘了,三支利劍中選哪一支來做為我們稱手的武器,得聽我們的!千萬也别忘了那些為不同浏覽器準備不同版本代碼的日子。

如果你要問AIR帶給我們的好處有哪些,那麼我們可以羅列以下幾點:

  • 所見即所得的開發環境(不信你就玩玩flex)

    告别浏覽器相容問題(它曾讓我惡夢連連)

    更多可靠而且酷的資料展現形式

    分工更明确!美工真正隻做美工,互動更能大展手腳

    一場新的互動革命!(隻有AIR橫行之時,我們才可以真正坐下來,認真的談一談互動!)

    最後一點,不用加班了!(我老闆最喜歡這一點,因為加班是雙倍工資呀!)

Ajax、FLex、Silverlight 和 JavaFx 在 RIA(Rich Internet Application)世界中扮演着主流角色。

  下面來看一組關于這些技術的比較:

 AJAX  Flex  Silverlight  JavaFx
 用戶端引擎  浏覽器内置  Flash Player  Silverlight  Java SE/ME
 程式語言  JavaScript  ActionScript+MXML  XAML+JavaScript  JavaFx Script
 元件庫  無  内置,強大  有限  依賴 Swing
 多媒體支援  無

 支援高清視訊,FLV 格式,

 支援 MP3 和 AAC 音頻

 支援高清視訊 WMV 格式  依賴 JMF,不支援高清 HD264
 IDE  Eclipse 等  Flex Builder  Visual Studio  NetBeans
 IDE 可視化編輯  無  有  無  無

  哪一種技術更好?這個問題很難一概而論。事實上,其中若幹技術的組合使用将會帶來更好的效果。

什麼是RIA 技術?

   RIA :Rich Internet Application ,富網絡應用,最近比較火熱。我和一個做視訊會議的朋友聯系,問他在關注什麼,告訴我在關注RIA。那麼什麼叫RIA富網絡應用呢?    1.RIA的定義   RIA是Rich Internet Applications的縮寫,翻譯成中文為富網際網路 應用程式 (Macromedia中文網站翻譯為Rich Internet應用程式)。   傳統網絡程式的開發是基于頁面的、伺服器端資料傳遞的模式,把網絡程式的表示層建立于HTML頁面之上,而HTML是适合于文本的,傳統的基于頁面的系統已經漸漸不能滿足網絡浏覽者的更高的、全方位的體驗要求了,這就是被Macromedia公司稱之為的“體驗問題”("Experience Matters"),而富網際網路應用程式(Rich Internet Applications,縮寫為RIA)的出現也就是為了解決這個問題。RIA(Rich Internet Application,富網際網路應用系統)技術允許我們在網際網路上以一種象使用Web一樣簡單的方式來部署富用戶端程式。這是一個使用者接口,它比用 HTML 能實作的接口更加健壯、反應更加靈敏和更具有令人感興趣的可視化特性。無論将來RIA是否能夠如人們所猜測的那樣完全代替HTML應用系統,對于那些采用 胖用戶端 技術運作複雜應用系統的機構來說,RIA确實提供了一種廉價的選擇。    2. RIA的産生背景  基于HTML的應用程式之是以變得流行是由于應用系統的部署成本低、結構簡單,且HTML易于學習和使用。很多使用者和開發人員都樂于放棄由 桌面 計算機帶來的使用者界面改進,來實作對新資料和應用系統的快速通路。與喪失一些重要的UI功能相比,基于Web的方式所帶來的好處要更大得多。   然而,某些應用系統并不完全适合采用HTML技術。複雜的應用系統可能要求多次提取網頁來完成一項事務處理,在某些領域中,如醫藥和财務領域,這往往導緻互動速度低得無法接受。讓我考慮一個 項目管理系統 :我們可以将其實作為一個HTML應用系統,但是如果使用者可以看到并且操作圖表、進度表和各種層次結構,那麼顯然會工作得更好。 此外,雖然HTML開始走向簡單,但是即使簡單的互動活動也仍然需要用很多的 腳本 來完成。即使一個輸入 窗體 經過仔細的布置和全面的腳本設計,它從 浏覽器 所能發送的也僅僅是簡單的"名字/值"對。如果一個HTML窗體能夠以XML文檔形式發送和接收更複雜的 資料結構 ,那就好多了。   RIA利用相對健壯的 用戶端 描述引擎,這個引擎能夠提供内容密集、響應速度快和圖形豐富的使用者界面。除了提供一個具有各種控件(滑标、日期選擇器、視窗、頁籤、微調控制器和标尺等)的界面之外,RIA一般還允許使用SVG(Scalable Vector Graphics,可伸縮向量圖)或其他技術來随時建構圖形。一些RIA技術甚至能夠提供全活動的動畫來對資料變化作出響應。   RIA的另一個好處在于,資料能夠被緩存在用戶端,進而可以實作一個比基于HTML的響應速度更快且資料往返于伺服器的次數更少的使用者界面。對于無線裝置和需要偶爾連接配接的裝置來說,将來的趨勢肯定是向 富用戶端 的方向發展,并且會逐漸遠離基于文本的Web用戶端。那些運作在膝上裝置上的應用系統,可以被設計成以離線方式工作,或者至少當連接配接丢失的時候能基本上以離線的方式工作。   最開始的網頁,都是html靜态網頁,浏覽者隻是看,内容有圖檔和文字,有超連結,相比書本而言強大百倍。但浏覽者沒法互動和回報。後面腳本語言和CGI得到大量應用,就叫動态網頁了。以.net,jsp,asp,php等技術為代表,結合css和資料庫,ActiveX,Ajax,Flash等,使網頁功能相當強大。   RIA技術,類似于單機版的應用程式,在很大程度上跳出了浏覽器的限制,具有豐富美觀的界面和互動能力,但它又是地道地道的網絡程式,具有快速修改和部署的能力。它基于XMl,腳本語言和web service,可以産生豐富而強大的應用。在沒有RIA的時代,要制作強大的界面,單機版應用程式很費力氣,學過VC6.0的就知道,做個界面不容易。做花哨一點的界面更是費 九牛二虎之力 。網絡上做界面相對容易,采用dreamweaver等工具布局,畫出什麼就是什麼。但網絡上的程式又不夠強大,或受到某些安全限制。flash網頁美觀,功能也強。但用其做網頁工作量還是挺大。   RIA技術,基于XML,界面上采用Flash等技術,用ActionScript腳本做動态響應。編寫時和編寫普通網頁差不多,但最終界面卻玄的多,會生成flash可以播放執行的swf檔案。這代表了以後網絡界面技術的方向。   現在,兩家主要的RIA技術力量,一是Adobe的Flex,另一家是 微軟 的silver light,銀光。另外 javaFX 也支援,但java程式的單調界面沒法和flash比,是以java愛好者認為基于java技術的RIA是用于工業應用的。Adobe是一家做圖檔和視訊處理的超級廠商,其代表産品Adobe Photoshop和Adobe PDF reader成為人們離不開的産品。收購macromedia後,強強聯合,網絡 圖像處理 的力量得到空前加強。基于 macromedia Flash的Flex,實力強勁,已經釋出到4.0版。Flex基于eclipse開發,現在已經開源。但其企業版還是要600多美元。   silver light 是基于.net的,是.net的一個 插件 ,支援跨平台和跨浏覽器。支援高清視訊(藍光DVD, HD-DVD )播放。支援多種腳本語言如ruby,python,javascript,c#等。它采用微軟提供的visual studio和expression studio(類似flash用來生成矢量圖形界面的) 來編寫。但也可直接用 文本編輯器 來編寫,可以生成矢量圖形。