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