這年頭,“不是我不明白,這世界變化快”。用戶端一會兒“瘦”(thin)了,一會兒又“胖”(rich)了。
當初從單機應用程式發展到網絡應用程式後,C/S架構的設計和開發應運而生。然而随着應用向網際網路上遷移,用戶端數量劇增,維護和更新成為一件極其困難的事情。這個時候,人們想到了要給用戶端“瘦身”,就是把業務層邏輯交給伺服器端來完成,用戶端僅僅完成人機互動界面和用于呈現運算結果。于是 B/S 模式誕生了,用戶端被浏覽器所代替。
然而,随着開發和應用的發展,人們又發現:B/S 應用因為有 HTML、CSS 和 Javascript 的支撐,又有 Flash 動畫助陣(最初還有 Java 的 Applet 等,後來敗下陣來),其界面雖然可以做得無比華麗,然而華而不實的東西實在太多,浏覽器上的應用程式,其人機互動的感覺和效果怎麼也比不上C/S類型的桌面應用程式。原因很明顯,“B”和“C”之間隔着一朵巨大的網絡“雲”,連接配接它們的交換機和路由器,誰都不知道什麼時候、什麼原因就會減速甚至停止工作。更糟糕的是,進入B/S時代後,一直沒有一款像 B/S 時代的 Delphi 們那樣的全能開發工具。所有開發工具,要麼專注于伺服器端忽視用戶端,例如 Java、VS.NET;要麼相反,例如 Dreameweaver、Flash。像過去邏輯編寫和界面制作可以用同一個工具幾乎同時完成的情況,在B/S開發中幾乎見不到了,B/S開發最終多了個“整合”的工作,就是把程式邏輯和界面腳本進行嵌套和融合,使它們能協同工作。好點的,例如 Struts 和 PHP 等,強調“模闆”的概念,通過 MVC 架構把業務邏輯和界面完美隔離。差點的,例如最初 ASP 的開發形式,HTML、CSS、Javascript 代碼和背景 VBScript 腳本交合在一起,完全是一種肉搏的狀态。
“瘦用戶端”還有一個緻命的缺點,就是對伺服器端造成的巨大壓力和對用戶端計算資源的浪費。本來可以在用戶端完成的運算非要送到網絡另一頭去完成,網絡帶寬和伺服器資源同時被額外消耗了。
于是,用戶端的技術空白就有了發展的必要和商機。首先是 Ajax 在 Web2.0 時代的突圍。Ajax 确實在改善浏覽器使用者體驗方面出手不凡,表現卓越。有了 Ajax 技術,在與 Web 伺服器進行少量資料交換時,浏覽器不必出現一段時間的“休克”狀态。特别是類似“網頁聊天室”的應用,完全不用浏覽器自己不停的刷呀刷呀的重新整理自己。
然而 Ajax 的力量還太單薄了。為了改善浏覽器 Web 前端界面的互動性和提高開發效率,一些基于 Javascript 腳本的開發架構誕生了,例如 Ext 和 JQuery、Prototype 等。我們完全可以繼續采用 Javascript 原生代碼去編寫自己的代碼,甚至發誓建造我們自己的代碼庫直至形成另一個架構式的東西,但這些現有的、成熟的前端架構無疑提高了我們的開發效率,至少我們不必再去考慮浏覽器的相容性。
在 Javascript 如火如荼的時候(“如火如荼”的例證就是2008年網頁遊戲莫名其妙的轉熱),另一個Web前端技術-Flash的新東家 Adobe 自然不甘心坐失良機。Adobe 當初收買 Macromedia 的時候可能正是看中這一塊了。Dreameweaver 看起來沒有多少油水可粘了,因為許多人寫 Html 就是用記事本一類的純文字編輯器去搞。而 Flash 就不是誰随便就能寫個工具就能在上邊搞二次、三次開發的了,盡管 Flash 的 API 和 SDK 号稱是公開的。事實上,現在我們見到的優秀的 Flash 開發工具也不多,有個 Swish 軟體是用來快速制作 Flash 動畫的,被盜版得不成樣子。PHP 4.0以後,背景提供一個 ming.dll 庫,提供 Flash 的背景生成,但似乎用的人也不多。
于是,Adobe 在收購 Macromedia 後,加快了研發“富用戶端”(RIA)開發工具的步伐。
Flex系列産品包括編譯工具和IDE(Flex Builder),通過編寫MXML(一種類XML标記語言)和ActionScript(AS,Flex的腳本語言,從Flash移植過來)代碼,用編譯器來生成SWF檔案,使用浏覽器的Flash Player插件就可以進行觀看。
随着 Flex3.0 的推出,Flash Player 更新到 9.0 版本,并号稱包含一個真正的“虛拟機”。ActionScript 釋出了3.0版本,開發工具也更新到 Flex Builder3.0。
特别是為了支援真正的用戶端應用開發,Adobe 開發了被人贊為“激動人心”的 AIR(Adobe Integrated Runtime)平台,中文釋義為“Adobe運作時環境”。Adobe 官方的解釋是:
AIR 是一個跨作業系統運作時, 可以使開發人員能夠使用熟悉的 Web 技術 (包括 HTML、Ajax、Adobe Flash 和Adobe Flex)來建構桌面上的豐富的網際網路應用程式。借助 Adobe AIR, 開發人員可以使用他們的現有技能和工具來建構引人入勝的、視覺效果豐富的應用程式, 這些應用程式将本地資源的強大功能與 Web 的觸及力結合到一起。
很明顯,不像 Flash 主要是作為網絡應用運作在浏覽器裡,AIR 程式是類似“電腦”一樣的桌面程式。而且更像 Java 桌面程式是運作在 java 虛拟機裡一樣,AIR 應用正是運作在 AIR 這個虛拟機平台上。AIR 程式跨作業系統操作、網絡通信等低級服務都由 AIR 來代勞,于是 AIR 應用也号稱“平台無關”。
但是 Adobe AIR - 現在正式版是1.1版本,最新測試版是 1.5版 - 現在的功能還十分有限,FB3.0 開發工具隻提供了 6 個元件,這 6 個元件離開發一個強大的桌面應用差的還很遠。現有的6個元件,能實作一些基本功能,但離“好用”的目标還有距離,例如那個檔案系統的 Tree 控件就很醜陋 - 不僅僅是界面醜陋,功能也停留在 Windows 早期的水準上,根本不能模拟到目前 Windows 資料總管的樣式,在裡面根本找不到“桌面”“我的電腦”等樣式。模拟可能不是根本辦法,将來需要能夠引用 ActiveX 等 Windows COM 元件才是根本出路。但是對于“跨平台”的 AIR 來說,Linux、MAC 平台怎麼辦?如果每個作業系統、每個檔案系統都搞一套元件,那代價何其大呀!
本文轉自網眼51CTO部落格,原文連結:http://blog.51cto.com/itwatch/286432,如需轉載請自行聯系原作者