Flash與Silverlight 性能全方位比拼
自Silverlight 1.0發布以來,Web開發與設計者們關于該選擇Flash和Silverlight的爭論便開始了,在成熟的Flash面前,Silverlight面臨著如何贏得市場的難題。然而Silverlight中包含了一些開發設計者們一直希望Flash能擁有的功能,諸如SEO。(51CTO編者注:近日微軟牽手Adobe,在其新一代嵌入式系統Windows Phone 7上應用Flash)。
動畫功能
Flash使用基于幀的動畫模式,在逐幀動畫模式中,我們為每個幀創建對象并生成動畫序列。比如你想讓一個對象在3秒內穿過屏幕,計算一下3秒一共有多少幀,然后計算每幀需要的矩陣。不過Flash在實際播放中并不會真實地按設定的幀率播放,除非你在動畫中插入一條空白的音軌。
Silverlight基于WPF動畫模式,WPF是基于時間線,而不是幀的,你定義好起始于結束狀態,WPF幫你計算中間該怎么做,不必象Flash那樣同矩陣打交道,也不必計算在不同幀對象的位置。
文件尺寸
Flash使用壓縮格式,文字和圖片內嵌在整個文件中,因此Flash的文件尺寸非常小巧。
Silverlight使用XAML作為描述語言,未經過壓縮,因此Silverlight的文件尺寸通常要大一些。
#p#
腳本
Flash使用ActionScript,ActionScript面向對象,對用戶界面設計有全面的控制,還可以同其它后端語言,如PHP,ASP,RubyOnRails進行集成交流,擁有一個強大的開發庫。
Silverlight的腳本可以選擇多種開發語言,Visual C# .Netand Visual Basic .Net,也包括客戶端語言JavaScript。C#和VB.Net可以用來編寫托管代碼,并可以全面使用.net框架庫。
視頻和音頻
Flash支持多種音頻格式,最新的音頻解碼器質量非常高,而帶寬占用也非常出色。它的視頻解碼器,Sorenson的專用H.263是H.263的變種,壓縮也接近,但去掉了一些功能。
Silverlight使用的是行業標準VC-1視頻解碼,并支持WMV和WMA,Windows Movie Maker可以很容易產生這兩種格式,同時微軟還提供免費的WMV,WMA編碼器。
聲音處理
ActionScript提供了一套聲音類庫,可以用來在動畫中生成或控制聲音,你可以在動畫播放期間從資源庫加入聲音,同時Flash還有一些方法在整個動畫中控制聲音。
Silverlight沒有底層聲音控制API,甚至無法播放一個WAV文件,因為.NET在音頻播放上很薄弱。 #p#
可訪問性
對那些有視覺或聽覺缺陷的人,Flash提供了豐富的可訪問性功能,視頻字幕可以幫助聽覺障礙者,而那些視覺障礙者需要通過鍵盤控制聲音的播放,人們可以使用鍵盤快捷鍵控制視頻播放。
Silverlight 3首次提供對全部系統配色的支持,那些視力不佳的人可以調整到高對比度配色方案,在可訪問性方面Silverligth比Flash差很多。
平臺兼容性
Flash支持WindowsVista/XP/2000,WindowsServer2003/2008,MacOS10.1/10.5(PowerPC),MacOS10.1/10.5(Intel),Linux5,openSUSE11,Ubuntu7.10orlaterandSolaris10.
Silverlight只支持WindowsVista/XP/2000,WindowsServer2003/2008,WindowsMobile6,MacOS10.1/10.5(PowerPC)andMacOS10.1/10.5(Intel)。由于不支持Linux和Solaris,因此這些平臺的用戶無法體驗Silverlight。
文字展示與SEO
Flash中的文字是基于圖形的,Flash播放器無法理解TTF,因此我們無法從Flash動畫中分離出文字。通常,Flash對SEO是不友好的,但Adobe已經做出一些努力讓Flash中的文字可以索引,而搜索引擎也開始嘗試索引Flash了。
目前,Google是唯一支持Flash索引的搜索引擎,他們同Adobe合作,設計相應的可以理解Flash內容的Google爬蟲。Yahoo正在進展中,鑒于微軟的Silverlight是Flash的競爭者,他們不可能在MSN中索引Flash,Silverlight是基于XAML的,Silverlight中的文字內容是獨立存放的,可以被任何搜索引擎索引,因此對搜索引擎更友好。
支持的圖片格式
Flash支持幾乎所有圖片格式。Silverlight只支持PNG與JPEG,其它格式提供有限的支持。
網絡編程
Flash使用XML Socket和服務器進行溝通。
Silverlight通過System.Net.Sockets命名空間,對網絡編程提供全面支持,Silverlight可以通過4502到4534端口異步傳輸數據,也支持跨域通訊。
攝像頭的支持
Flash支持網絡攝像頭和麥克風,使用Action Script可以很容易操控攝像頭或麥克風。Silverlight不支持攝像頭和麥克風。
部署
Flash的部署只包含一個獨立的SWF文件,這個文件已經包含了所有圖片,文字,動畫。Silverlight的部署要復雜一些,所有獨立的部件都要單獨部署,典型的Silverlight請求一般包含以下內容:
◆XML文件;
◆DLL文件(如果有);
◆Silverlight.js;
◆其它JavaScript文件;
◆資源文件(圖片,視頻,音頻)。
Windows可執行文件,Flash動畫可以編譯成獨立的Windows可執行程序,在桌面播放,Silverlight不支持。
流媒體服務
Flash不支持流媒體服務,微軟基于Windows Live的Silverlight流媒體服務可以讓設計和開發者分發富媒體,結合微軟的Expression Studio,開發與設計者們可以創建交互式Web程序。
結論
富Internet應用的技術選擇向來存在很多爭議,在Silverlight和Flash中選擇,完全要看你的需求,如果你的用戶包括Linux和Solaris平臺的,Flash是不二之選,如果希望你的網站可以被索引,Silverlight更好一些。
另外需要指出的是,安裝了Silverligth插件的用戶尚在少數,而絕大多數用戶的瀏覽器中都安裝了Flash插件,另外,SWF,FLA,FLV幾乎成了開發標準格式,而Silverligth還是100%私有格式。
【編輯推薦】