RIA和未來的軟件開發架構

 

從97年左右開始,分佈式軟件分化爲B/S和C/S這兩種涇渭分明的設計架構。B/S架構的軟件的用途主要是一些Internet應用,而C/S架構的軟件用途則主要是一些企業應用。但那時候B/S應用還比較少,大量的分佈式應用依然還是C/S架構。而到了2000年以後,隨着Internet的普及,B/S應用軟件的發展速度越來越快。因爲B/S程序有一些天生優勢,比如無須大規模部署客戶端,導致很多企業應用也紛紛轉向採用B/S架構。那時候B/S架構一度成爲先進技術的代名詞。而在近一到兩年來,一個新名詞在B/S軟件開發中慢慢升溫直到大紅大紫,那就是Ajax。很多人覺得Ajax是新瓶裝舊酒,因爲Ajax所採用的技術早在幾年前就有人使用,只是那時候還沒有這樣一個響亮的名字而已。但我覺得,不應該站在技術的角度去看待Ajax現象,Ajax的流行不是因爲出現了一個什麼新技術,而是代表了用戶對體驗需求的提升,用戶已經不滿足於有這個功能就可以,而是還要求要用得舒服。

從軟件架構的發展趨勢來看,以前純B/S結構的應用程序,由於客戶對體驗的需求提高,導致客戶端越來越複雜,各軟件開發商都在想方設法的增加客戶端的處理量,Ajax技術的流行正是這個結果。而從純C/S結構的應用來看,由於受到客戶對無須部署的要求和一些開發上的限制,導致客戶端越來越瘦,除了完全轉換到B/S的開發商以外,剩下的也慢慢轉成了C/S/S這樣的結構(比如SmartClient技術)。

如果說B/S代表了Internet應用,而C/S代表了企業應用(其實企業應用對Internet的依賴也慢慢增加)。則近十年來的發展趨勢可以證明,無論是互聯網應用還是企業應用,其實大家都在向着同一個中間點靠攏:RIA。

RIA的全稱是Rich Internet Application,直接翻譯過來就是富互聯網應用。這裏的富其實是一個專有詞,相對於Thin(瘦)來說的,指的是應用軟件客戶端的複雜程度。我認爲一個可以被稱之爲RIA的應用必須具有以下幾個特點:

 

1、零部署

 

客戶無須安裝任何專用的軟件,可以用一個通用解釋程序負責界面的展現和程序的執行,比如瀏覽器可以展現HTML,並可以執行JS腳本。

 

2、良好的用戶體驗

 

要求在大部分情況下能達到和桌面應用差不多的客戶端體驗。包括操作便捷性,響應速度等。除了無全屏刷新這種基本要求外,對流媒體,矢量圖形,即時動畫等支持也是很必要的。

 

3、最好能跨平臺

 

如果能支持Windows的話,這個要求不是必須。但是如果能支持多種操作系統,則可以應付將來可能會發生的關於操作系統的變化。

其實總而言之,RIA也就是在保留B/S架構的所有優勢情況下,儘量提升瘦客戶端的處理能力,以達到和桌面應用差不多的效果。

再來看看到底有那些技術符合這幾項要求。

SmartClient:微軟在2002年大力推廣的技術,客戶端使用.Net的Winform,後臺不直接連數據庫,而是通過遠程調用(比如WEB SERVICE)連接應用服務器。優點是可以完全達到桌面級的用戶體驗,但是主要缺點是需要安裝客戶端,雖然客戶端可以通過自動更新等機制完成部署,但是終歸是沒有零部署爽快。而且客戶端還需要安裝一個20多M的.Net Framework,也很難跨平臺(但不是沒有可能)。

Ajax:Ajax可以看成是普通的B/S應用的增強版,繼承了所有B/S應用的優點,天生跨平臺。但是,即便是最近Ajax大紅大紫,但是我覺得Ajax還是有很致命的缺陷。那就是受限制於HTML和Javascript。HTML起初是爲瀏覽靜態文檔而設計的,並不適合於提供內容豐富、交互性強和數據驅動的應用程序,而且Javascript開發複雜,運行速度慢,無法適應未來對更復雜的軟件應用要求。

WPF:如果除去對客戶端操作系統的要求,我覺得WPF可能是最好的RIA平臺。她無與倫比的界面展現能力,讓任何人看了都會心動。但因爲她對客戶端的要求太高,只有可能會是下下一代的RIA主流,而在近三年內都無法成爲RIA的首選平臺。

Flex+Flash:Flex是Adobe在收購Dream Weaver之後推出的以Flash爲核心的RIA整體架構。Flex擁有成熟的技術,龐大的體系和數量衆多的Flash設計人員作爲後盾。但我覺得Flex成也蕭何,敗也蕭何。Flash是二進制的,如果整個應用完全用Flash來搭建的話,那麼搜索引擎無法搜索到裏面的任何內容。當然,這個缺點對企業應用來說無所謂。

Silverlight:原名是叫做WPF/E,也就是WPF的一個精簡版。雖然Silverlight和WPF都是採用XAML作爲界面描述語言。但是他們的體系有很大不同,WPF需要藉助安裝在客戶端的.Net 3.0來進行解釋和執行代碼。而Silverlight則是專門由一個只有4M大小的瀏覽器插件來進行繪圖和運行程序。雖然Silverlight體積不大,但是功能卻很強,不僅可以將XAML表述爲高質量的圖形和動畫,並且還自帶了一個小型的.Net運行時,支持VB,PYTHON,RUBY等動態語言,還支持LINQ等高級特性。而且還是跨平臺的。

 

就目前來說,我覺得Flex和Silverlight是目前最有前途的兩個RIA平臺。Flex的優勢是成熟的Flash技術和大量的設計人員,而Silverlight的優勢是更先進的技術和大量的開發人員。未來或許是一場設計人員vs開發人員的對決。

 

下面預測一下未來軟件開發架構的趨勢。

 

1、雖然RIA將會成爲未來的最主要的軟件使用方式,但桌面應用依然存在。對於一些比較特殊的需求,比如對於需要極大數據量的傳輸,需要極高的操作響應速度,需要客戶端進行極其複雜的數據處理等領域,卻不得不交給專門開發的的客戶端來進行處理。所以,我覺得未來依然會有SmartClient這樣的軟件生存機會。Adobe不是也還要推出Apollo嗎?這是Adobe向桌面領域進攻的一個標誌。

 

2、由於客戶端處理能力變強了,所以服務器端慢慢向功能單一化發展。WEB服務器不再過多考慮如何展現數據,而是專注於如何提供數據。Web服務會大行其道,而像REST這樣的純資源服務也將會慢慢多起來。

 

3、整個Internet會變成一個巨大的應用服務器。提供各種各樣的標準格式的數據管理接口,接口趨向於穩定和高效率。

 

4、動態語言作爲使用方便,高效率的黏合器,會運行在各種各樣的客戶端上。而動態語言的無須編譯,開發方便,靈活的特性將得到極大的發揮。

 

5、HTML和Ajax面臨淘汰。

發佈了33 篇原創文章 · 獲贊 1 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章