Silverlight評測相關結果分析
Silverlight的出現對于開發(fā)人員來說是一個具有非常重要意義的工具。那么它的性能到底表現在哪里呢?我們可以通過對Silverlight評測來詳細的分析其中的性能特點,從另一角度來詳細的了解這工具。#t#
一年多以前,微軟的Silverlight粉墨登場,被業(yè)界人士稱為“Flash殺手”,其競爭對手包括Adobe的Flash和Flex,以及其它幾種富互聯網應用和AJAX框架。
Silverlight 1.0的多媒體功能和WPF用戶界面,給人留下深刻印象。隨后微軟推出了Silverlight 1.1測試版,增加了對編譯.Net語言的支持,以及增加了對更多.Net API的支持。
當Silverlight 2推出時,人們發(fā)現,對微軟來說,Silverlight 1.1是一個如此重要的更新版本。正如我們現在所看到的,Silverlight 2支持所有.Net語言,其中包括諸如IronPython和IronRuby之類的動態(tài)語言,它還包含大量的.Net基類,包括諸如LINQ(集成語言查詢)之類的新功能。
除了的一系列豐富的管理功能之外,它還通過API實現了全面的網絡功能支持,其中包括對REST、SOAP、RSS和HTTP等的支持;它還包含了本地數據緩存和存儲支持;以及開始支持高清視頻。H.264視頻和AAC(高級音頻編碼)音頻支持將在Silverlight 3中實現。
在今年8月份的北京2008奧運會上,Silverlight無疑是最出風頭的技術,得到了很好的檢驗并受到了不錯的評價。當然也有很多人聲稱它對某些硬件和操作系統不夠兼容,但是這并不令人意外。在微軟看來,至少,Silverlight互聯網視頻流技術已經被美國國家廣播公司(NBC)、中國中央電視臺和其它10個國家的電視傳媒機構所采用,這本身就是一個巨大的成功。最近,Blockbusterye也正在他們的MovieLink應用中把Flash換成Silverlight 2。
Silverlight評測之功能和控件
鑒于Silverlight 2的強大語言支持和類庫,以及非常高的運行時(runtime)性能,它最終可以被人們應用于各個領域的RIA開發(fā),而不僅僅局限于視頻流應用。
目前,它可能還缺少某些應用所需要的一些用戶界面控件功能,在標準的Silverlight控件工具箱中只有28個控件,另外在Silverlight工具箱中還有12個,不過在未來數月中微軟計劃將控件的數量增加到100個以上。另外,制作新的Silverlight控件并不困難,許多第三方獨立軟件廠商已經制作出自己的控件,不過,如果你不多點耐心的話,你會發(fā)現微軟最終會提供你所需要的任何控件。
在進行跨域訪問時會面臨安全問題,這是任何基于瀏覽器的應用都存在的一個潛在難題,不管它是使用的Silverlight插件還是使用的Flash插件。Silverlight有自己的跨域安全機制,通過一個清晰明了的文件設置進行控制,默認設置下就具有最安全的設置。
盡管有這種安全機制的保護,我依然在網上看到很多批評的聲音,認為Silverlight本地數據存儲非常容易受到跨域攻擊,我沒有去對此進行考證,不過我想指出的一點是,批評者們也同樣指出,Flash的本地對象同樣無法防御類似的攻擊,因此這并非Silverlight自身所獨有的問題。
Silverlight評測之開發(fā)和設計
我使用了Visual Studio 2008 SP1和Expression Blend 2 SP1嘗試了Silverlight 2開發(fā),開發(fā)工具很易上手,使用其開發(fā)也非常簡單,當然這或許是因為我已經非常熟悉Visual Studio、C#、.NET框架和XAML。因此我相信,其它熟悉.Net語言和XML開發(fā)的朋友,也應該可以很輕松的學習和開發(fā)Silverlight應用。
XAML編程的基本方法就是賦予對象一個x:Name標簽,例如:
- < TextBlock x:Name="message1"
Text="Message:" >- < /TextBlock>
一旦設定了x:Name屬性,程序可以操作這個元素的屬性,這一點與JavaScript在DHTML中操作HTML元素在原理上是相同的:
- message1.Text = "Hello, " + name1.Text;
在程序和XAML元素之間通過名稱建立起來的這種聯系,對于開發(fā)團隊和設計團隊開發(fā)Silverlight和WPF應用來說,是非常關鍵的。只要這個名稱沒有改變,程序員就可以修改其后端代碼文件,設計者也可以修改XAML文件,而不會破壞兩者之間的通訊接口。他們甚至可以使用相同的工具。
不過我發(fā)現了一個美中不足的地方,雖然我是一個程序員,但也偶爾自己做一些設計工作,我失望的發(fā)現,在Visual Studio XAML設計器中,我無法拖拽控件到圖形面板上;它的圖形面板只能具有預覽作用,因此我智能拖拽空間到XAML文本內容中。不過從另一方面來說,在Visual Studio中的XAML編輯功能具有很好的智能感知支持,這個即時預覽面板可以讓你非常及時的看到頁面的外觀效果。
Expression Blend為XAML頁面提供了一個圖形化設計界面,不過它沒有提供太多編程功能支持。它肯定會成為多數設計者選擇的Silverlight工具。我所希望的更完美情況是,能有一個工具可以同時滿足設計者和開發(fā)者的需要。不過Visual Studio和Express Blend兩者的集成性也非常好,只是它們可能更加專注于提供自身用戶對象所需功能。
Silverlight評測之對比Silverlight和Flash、AJAX
除了Silverlight之外,還有一些其它RIA技術,其中最為大家所熟悉的有AJAX、Adobe Flash和Adobe Flex等,它們之間的區(qū)別是非常明顯的。AJAX的優(yōu)勢之一是無需安裝任何插件,另外目前已經擁有大量的AJAX工具和控件。不過它也有自己的缺點,例如AJAX應用一般依賴于瀏覽器類型和版本,而且AJAX頁面設計工具相對比較簡單,同時還有性能問題:多數瀏覽器的JavaScript解釋器運行速度相對較慢。
Flash更專注于設計者而非開發(fā)者,而Flex則相反,當然人們可以組合使用這兩個工具。盡管多數Flash設計者一般會忠于自己所選擇的技術,但是他們可能會發(fā)現,Expression Blend可以更好的滿足他們的Silverlight開發(fā)需要。Flex程序員則會發(fā)現,在Visual Studio中編寫Silverlight XAML代碼文件,與在Flex Builder中使用ActionScript編寫MXML具有異曲同工之妙;當然,除非他們在開發(fā).Net應用,否則不會選擇更換自己的工具。程序員在很多時候是非常保守的。
根據我個人的對比來看,Silverlight 2要比本文中提到的任何其它RIA技術都強大,具有更強大的功能、更高的計算性能和更快的顯示速度。不過,我也曾經看到過與我的結論完全相悖的測試,這可能與測試的內容和方法有關系。在某些硬件上,Silverlight應用的運行速度可能比較慢。另外,XAML支持許多復雜的圖形特效,它們需要一個好的圖形處理芯片來獲得足夠的渲染速度。
Flash插件已經被普遍安裝在多數計算機上,這一直是其支持者們看好它的一個重要原因。不過,這并不是什么不可改變的事情,現在網絡速度已經越來越快,下載并安裝Silverlight插件并不是什么麻煩的事情。據有關媒體調查數據顯示,盡管Flash的安裝率依然在90%以上,但Silverlight在很短時間的安裝率也達到了33%以上。
當Silverlight問世之際,很多人稱它為Flash殺手,我認為并非如此,原因有二:一是許多單位已經在Flash視頻服務器上進行了大量的投資;二是Flash和Flex設計者和開發(fā)者們已習慣于使用自己熟悉的工具,因此會繼續(xù)忠于Adobe。他們不會關心微軟是否可以為他們提供一個更好的技術或工具,因為他們不會放棄已經熟悉的工具而去花更多的時間來熟悉另一個新工具。
盡管如此,經過Silverlight評測,我們可以知道,Silverlight的確具有強大的技術優(yōu)勢和相對更好的性能。它是一個非常值得選擇使用的RIA技術,尤其對那些具有.Net開發(fā)經驗的程序員和XAML使用經驗的設計者來說,更是如此。