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