案例分析:Silverlight在中國人壽的應用

來源: InfoQ  發布時間: 2010-12-21 16:13  閱讀: 1617 次  推薦: 0   原文鏈接   [收藏]  
摘要:現在開心網和騰訊QQ等商業應用中已經運用了RIA技術在其社交網站中得到應用,但這畢竟還是少數,大多數互聯網應用特別是企業級應用仍然選擇傳統高穩定性與高響應能力的Html應用路線,那未來的互聯網應用,特別是企業應用能夠迎來RIA的春天,綻放出漫山遍野的花朵呢?

  筆者自2003年首次聽到Macromedia公司提起RIA(富互聯網應用)一詞到現在整整7年了。一度被認為是互聯網應用趨勢的RIA經歷了7年之癢,但仍然沒有在互聯網上得到大規模普及,特別是企業應用就更加少見。做個不恰當的比喻,傳統基于Html的應用就像互聯網應用中的綠葉一樣,而RIA技術由于酷炫的用戶體驗效果就像是美麗的花朵。現在開心網和騰訊QQ等商業應用中已經運用了RIA技術在其社交網站中得到應用,但這畢竟還是少數,大多數互聯網應用特別是企業級應用仍然選擇傳統高穩定性與高響應能力的Html應用路線,那未來的互聯網應用,特別是企業應用能夠迎來RIA的春天,綻放出漫山遍野的花朵呢?

  還記得2000年剛接觸Flash開發,發現ActionScript可以通過面向對象的方式實現MIS系統應用,但Macromedia公司對Flash的定位仍然是面向設計人員,在面向開發方面的進展不得不用緩慢來形容,直到2004年在被Adobe公司收購的頭一年才真正意義上推出了面向開發者的Flex 1.0版本。筆者雖然對當時FLEX Store應用所振奮,但很快發現其第一個版本在大數據量下低迷的表現。

  而Flash+AS和FLEX這兩條路線,使得開發者很難去抉擇。當我還在一邊看著LUAR編寫的《Flash MX 2004 ActionScript 2.0與RIA應用程序開發》,LUAR本人卻在博客上發表了《Flash未來未有來》的文章,作為中國Flash應用開發的領軍人物,主動得出"Flash沒有幫助開發者開發RIA"的結論。當然現在的Flash經過10年的苦心經營,應用已經非常廣泛,特別是在一些Web頁面的應用上面。

  RIA技術選型

  2008年,中國人壽養老保險公司提出開發面向企業客戶的養老金精算咨詢系統(PACS),但由于養老金咨詢中的方案數據采集與精算過程非常復雜,使用傳統B/S架構很難實現。由于多年來的RIA開發經歷,作為項目經理的我提出在此項目中嘗試使用RIA技術進行開發,以到達客戶友好性與易用性的目的。微軟發布一年的Silverlight引起了項目組的注意,由于企業B/S開發的兩大陣營,一個是Java,另一個是.NET平臺。

  針對主流RIA技術筆者進行了對比,當時Java平臺的JavaFX仍然處于beta階段,而在此前筆者已經在一些項目中運用了ExtJS等通過JS實現的類RIA應用,但實際開發效率較低,而且腳本出錯概率較高,JS調試相對困難,企業架構要求的穩定性得不到很好的保障。因此,我們將目光集中在了.NET框架下的Silverlight上,經過與微軟中國的多次溝通交流,并進行了必要的性能測試。以下是通過實際測試當中的性能對比(對比基準為Flash):

  測試一:后臺運算性能測試,使用相同的素數查找算法

測試項目

Silverlight

Flash

查找100萬以內

單線程:0 .423 秒

雙線程: 0.267 秒

1.335秒

查找1000萬以內

單線程 9.833秒

雙線程: 6.144 秒

35.62秒

  在線測試及源代碼下載地址:http://www.itwriting.com/primetest

  測試二:UI性能測試,使用小球碰撞模擬

測試項目

Silverlight2

Silverlight 3(cached)

Flash

Flash(cached)

16個小球

238FPS

116FPS

64FPS

64FPS

32個小球

133FPS

112FPS

54FPS

64FPS

64個小球

62FPS

107FPS

41FPS

64FPS

128個小球

35FPS

99FPS

18FPS

57FPS

  在線測試及源代碼下載地址:http://bubblemark.com

  注:在最新公布的Silverlight 4.0中,官方指出UI線程性能提升了5.5倍,Worker線程處理性能提高870倍。

  這里要特別說明一個問題,Silverlight與Flash本身的運行時都在客戶端,以前我也在Silverlight發布會中提出Silverlight后臺語言支持能力更強,但被很多人誤認為是服務器端語言,其實Silverlight與Flash一樣可以通過多種網絡協議連接不同技術架構的服務端程序,但就客戶端的運行時來說,Silverlight是基于.NET的JIT Compiler的,而且有CLR基礎類庫支持,所以與Flash前端運行時有很大差別。

  Silverlight 實現RIA端到端的優勢

  談到微軟專門為Silverlight包裝的Core CLR運行時環境,就不得不說到整個.NET框架的優勢,很多人將.NET CLR與 JRE做比較,兩者都具有相當強大的基礎類庫支持,可以說為企業開發提供了基礎,而Silverlight享受到了這樣的基礎類庫,但為了減小運行時文件大小,提高用戶下載安裝體驗,微軟去除了無用的服務器端基類,保留了主要的客戶端類庫,下面我將結合Core CLR來說明Silverlight在企業級開發中的優劣勢。

  下表是筆者總結的在企業級應用開發方面Silverlight的優勢:

  其中最為重要的一點就是前端Core CLR的支持,大家可以參見MSDN來獲得Silverlight 4基礎類庫的全部資料

  本文不會對CoreCLR做過多介紹,結合客戶端架構將Silverlight主要基礎類庫總結如下:

層次

基類庫支持程度

XAML表現層

豐富的原生控件(System.Windows.Controls 超過100種控件類)與自定義控件庫( System.Windows.Controls. UserControl),支持全局樣式修改與資源管理(System.Resources),支持動畫(System.Windows.Media.Animation),效果(System.Windows.Media.Effects)

客戶端控制邏輯層

.Net Framework多種基本類庫支持,包括多線程類庫(System.Threading),安全類庫(System.Security),反射類庫(System.Reflection),Linq類庫(System.Linq),數據流操作類庫(System.IO),XML操作類庫

通訊層

包括ADO.Net交互類庫(System.Data.Services),WCF交互類庫(System.ServiceModel),網絡類庫(System.Net )等等

  而使我們選擇Silverlight的另外一點是,結合.NET服務器端技術,可以在一個技術體系下構建端到端的RIA應用,在開發上由于語言的一致性可以共享類庫,而同樣的IDE環境能夠提供方便的前后端一體化調試功能等功能。

  通過Silverlight如何加強數據展現能力

  要構建企業級應用,就必須要使得數據的展現和編輯更加方便直觀,傳統基于HTML標簽語言的web應用,可以通過input和Table等來實現數據編輯與展現,但無法超出其能力之外,很多第三方的Web應用控件都是利用JS腳本來實現排序,拖拽等效果,但腳本語言畢竟是低效的,并且具有許多外部原因(如瀏覽器環境等)使得其穩定性不高,而Silverlight原生的控件在數據展現與編輯上面具有良好的表現。

  以PACS系統中的數據列表為例,使用Silverlight的DataGrid控件,原生支持列排序,列拖拽,也可以通過代碼實現過濾,分頁。由于我們在一些應用場景中需要對每一條記錄都有對應的處理流程和功能按鈕,因此使用DataGrid控件中定義行模板(DataGrid.RowDetailsTemplate)就可以實現自定義行樣式的效果。而在< DataTemplate />中你可以加入任何XAML元素,使得Silverlight應用可以簡單快速的實現以前難于實現的效果。

  當然除了數據列表的展現方式,Silverlight提供更多的圖形化展現方式,比如原生的各種統計圖表,以下是Silverlight的Chart控件應用,在拖動各種參數時,圖表將以動畫形式變換,而不需要寫任何代碼。

  Silverlight Do It in Naturally

  除數據展示以外,在傳統WEB應用中,可能會遇到更多的數據錄入上的限制,比如一種分段設置參數的應用場景,當我們要輸入任意年齡段的對應參數時,傳統Web應用沒有好的解決方案,可能只會通過下面的方式來進行數據錄入:

  但如果使用Silverlight自定義控件就可以實現如下更加人性化的設計:

  通過點擊就可以簡單實現在分段的中間插入分段,拖拽就能刪除分段,這樣的設計符合"do it naturally"用戶體驗設計原則。而且Silverlight"一切皆為用戶控件"的思路,使得開發者可以很簡單的開發一個用戶控件,而且這些用戶控件可以被整個項目充分復用。

  "體驗先行"的開發流程

  Silverlight基于"體驗先行"的設計,顛覆了傳統業務需求模式,改變傳統開發流程,是開發團隊可以選擇以界面而非功能為起點的開發模式。在PACS項目需求分析中,我們沒有采用需求規格說明書面向功能的闡述方法,因為業務與IT的認識隔閡往往會導致項目失敗。在Silverlight設計工具Blend中包含了原型開發工具SketchFlow,通過簡單的原型控件拖拽就可以快速開發系統原型,使得業務部門迅速理解界面與邏輯關系,避免了業務與IT在最終交付物認識上的差異。以下是PACS在需求分析過程中的原型與最終系統截圖對比:

  Silverlight在PACS開發中帶來了開發過程的革命,經過最終評估,采用快速原型的方式大大減少了需求變更,確保了業務滿意度。

  展望未來

  展望Silverlight技術未來發展,在剛剛結束MIX10大會上,微軟已經將Silverlight定位為未來Windows Mobile的主要開發技術,加之以前在跨瀏覽器,跨平臺的策略,實際上已經實現"手機、PC、電視"三屏合一,可以很清晰地看到微軟有使用Silverlight實現客戶端應用大統一,從而全面收復Web應用失地的趨勢。因此,未來微軟肯定還會不斷加大此項技術的認知度,而Adobe公司不會放棄通過占有率全面反擊的機會。這也是我們作為企業開發者希望看到的競爭態勢,那么RIA在經歷7年之癢后,春天是否真的要來了,我們拭目以待!

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()