日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
技術(shù)角度論Flex與Silverlight優(yōu)劣

這樣的比較有意義嗎?個(gè)人意見,只要別把自己當(dāng)成宗教教徒,將語言看作工具而不是信仰,那么比較就是有意義的。

創(chuàng)新互聯(lián)公司自2013年起,先為申扎等服務(wù)建站,申扎等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為申扎企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

語言(Silverlight以C#為準(zhǔn))

特性

比較

勝出

Flex

Silverlight

語法

Flex的編程語言ActionScript在變量與屬性聲明的方面語法有一點(diǎn)羅嗦(有些類似VB):

public var varName : int;

相比之下C#就要簡潔一些:

public int varName;

不過,ActionScript支持以字面量的方式聲明字典,這方面又比C#的Dictionary來得簡明:

public var dict = { x: 1, y: 2 };

語言特性

ActionScript支持動態(tài)類屬性,這是C#目前所不支持的,因此在動態(tài)編程方面,F(xiàn)lex要簡潔得多,也減少了很多代碼生成的工作。

OO特性

ActionScript不支持抽象類和抽象方法。雖然對一般性的編程來說沒有太大問題,但是對框架設(shè)計(jì)來說這是一個(gè)嚴(yán)重的缺點(diǎn)。

反射

反射對于元編程是相當(dāng)重要的。Flex的反射機(jī)制比較原始,只支持有限的反射方法,并且代碼中沒有明確引用的類在編譯階段會被排除,這使得動態(tài)創(chuàng)建類更為麻煩。

不過得益于語言的動態(tài)特性,F(xiàn)lex反射代碼比同等的C#代碼要更加簡明。

Silverlight也排除了一些高級反射特性(比如TypeDescriptor相關(guān)的一些方法),不過總體來說反射機(jī)制還是比較完整的,但同時(shí)反射的語法比較羅嗦。

基本類庫

Flex的基本類庫相當(dāng)精簡,精簡的代價(jià)就是有些基本功能(如字符串的trim、日期的格式化)都欠奉,不得不求助于工具類庫。Flex的集合類庫功能也有一些薄弱。

Silverlight類庫也比完整的.Net類庫精簡了許多,有些時(shí)候如操作Xml的時(shí)候不大順手。不過大體上來說還是夠用的。

擴(kuò)充特性

E4X是Flex的獨(dú)有特性,在Flex中使用XML簡單到了讓Linq to XML也相形見絀的地步。

Silverlight勝于Flex之處包括:Linq to object、lambda表達(dá)式和顯式多線程,這些都是Flex所不支持的。

語言支持

Flex只支持ActionScript,Silverlight則支持C#、VB、IronPython、IronRuby、JScript等多種語言。但不論Visual Studio還是Expression Blend都沒有為腳本語言創(chuàng)建項(xiàng)目提供任何支持,這使得Silverlight的多語言優(yōu)勢打了一個(gè)很大的折扣

總的來說,語言方面是Silverlight大勝Flex。

框架

特性

比較

勝出

Flex

Silverlight

界面組件

經(jīng)過幾年發(fā)展,F(xiàn)lex的界面組件已經(jīng)比較完整?;究蚣苤邪ǔ^50個(gè)界面組件,遠(yuǎn)遠(yuǎn)超過Silverlight的組件數(shù)量。但是Flex里也缺少如AutoComplete等少數(shù)重要組件。

Silverlight本身就組件數(shù)量和功能方面遠(yuǎn)遜于Flex,不過添加Silverlight Toolkit以后可以在一定程度上彌補(bǔ)其不足。

布局

Flex的布局機(jī)制簡單且靈活。Canvas支持多種對齊和擺放方式,靈活性遠(yuǎn)遠(yuǎn)超過Silverlight Canvas,是布局中最常使用的組件。Canvas、HBox和VBox三個(gè)組件基本上可以包攬90%上界面布局的工作。

此外,F(xiàn)lex中還有一些布局組件如Panel、Form和ViewStack是Silverlight所缺乏的。Flex還支持基于輔助線的布局,Silverlight里面沒有這樣的功能。

Silverlight的布局組件不僅數(shù)量少,基于附加屬性的語法也比較冗長拖沓。

樣式

Flex的樣式語法基于CSS,非常簡潔,且對于熟悉HTML的用戶來說馬上可以上手。

Silverlight的樣式聲明語法相當(dāng)繁瑣。比較一下Flex/Silverlight的樣式設(shè)置:

Button { margin: 10; }

Silverlight:

動畫

Flex有多達(dá)10多種動畫。Silverlight基于依賴屬性的動畫只相當(dāng)于Flex的AnimationProperty,數(shù)量和功能都比較受限,并且只對于Dependency Property有效。

數(shù)據(jù)綁定

Flex的數(shù)據(jù)綁定語法直觀且簡潔,可以使用幾乎任意的表達(dá)式。聲明綁定屬性的語法也相當(dāng)簡單,任何屬性只要加上一個(gè)[Bindable]標(biāo)簽即可。

Silverlight的數(shù)據(jù)綁定語法相當(dāng)累贅,至少造成了兩個(gè)嚴(yán)重后果:1、大量數(shù)據(jù)綁定屬性是造成XAML冗長難讀的罪魁禍?zhǔn)祝?、依賴屬性編寫很麻煩,需要大量樣本代碼,而許多框架特性又嚴(yán)重依賴于依賴屬性,使得編寫Silverlight組件成為相當(dāng)累人的工作。

通信機(jī)制

Flex和Silverlight都支持大量標(biāo)準(zhǔn)化的通信機(jī)制,包括XML、Web Service和二進(jìn)制數(shù)據(jù)等,支持程度也大致在同一水平上。

Flex略微勝過Silverlight的地方在于Flex有一個(gè)標(biāo)準(zhǔn)化的二進(jìn)制通訊標(biāo)準(zhǔn):AMF,基于AMF的服務(wù)框架不論開源或商業(yè)的目前都有廣泛的應(yīng)用。Silverlight在這方面還是一片空白。

異常處理

Flex的一個(gè)問題是不支持全局異常處理,對框架設(shè)計(jì)而言這是明顯的缺憾。

Silverlight支持應(yīng)用程序級別的全局異常處理。不過這個(gè)異常處理似乎也不是非常完整,有個(gè)別異常還是會漏網(wǎng),造成Silverlight插件出錯。

國際化

Flex對國際化的支持比較完整,使用上也很方便。唯一的小問題是支持額外的語言需要要執(zhí)行一次copylocale命令行。

Silverlight對國際化的支持是有問題的,雖然可以使用,但要做很多手工工作,并且需要一些work around才能成功執(zhí)行。

其他特性

Flex包括一個(gè)非常方便的界面特性:State,在界面有少量變化的時(shí)候使用非常方便,可以避免很多不必要的編碼。這是Silverlight所欠缺的。

Silverlight的DeepZoom是Flex所沒有的功能。

外觀

外觀是否好看應(yīng)該說是個(gè)見仁見智的問題。不過Flex似乎在細(xì)節(jié)方面做得更好,請看Flex/Silverlight默認(rèn)按鈕外觀的比較:


Flex組件默認(rèn)情況下就有一個(gè)相當(dāng)合適的邊距,看起來很舒服,基本上不用再作什么調(diào)整。Silverlight就差多了,密密麻麻的擠在一起,顯得非常局促,必須在樣式上作很多調(diào)整才會比較好看。在這些細(xì)節(jié)上Silverlight明顯不如Flex。

框架方面Flex可以說是大優(yōu)勢戰(zhàn)勝Silverlight。

IDE

特性

比較

勝出

Flex

Silverlight

可視化設(shè)計(jì)器

具有諷刺意味的是,號稱Visual的微軟開發(fā)環(huán)境在WPF時(shí)代就再也難以自稱Visual了。Visual Studio中的Silverlight可視化設(shè)計(jì)器目前只能說是一個(gè)廢品,拖拉不能用,屬性設(shè)置不能用,預(yù)覽也不能用,并且常常假死,微軟自己都似乎不好意思把它顯示出來了。Expression Blend說實(shí)話也并不好用,不過它編輯XAML時(shí)的性能倒是比Visual Studio好多了,至少不會出現(xiàn)經(jīng)常假死的情況。

Flex Builder編輯器經(jīng)過幾年發(fā)展,在可視化設(shè)計(jì)上已經(jīng)達(dá)到不錯的水準(zhǔn),使用也相當(dāng)方便。不足之處在于不能同時(shí)打開太多頁面,不然內(nèi)存的耗用會相當(dāng)驚人。

代碼編輯

在代碼編輯的方面則是Visual Studio要比Flex Builder表現(xiàn)更好。對于代碼輔助和編輯提示方面,Visual Studio比Flex Builder表現(xiàn)更加成熟。

不過Flex Builder也有Visual Studio所不及之處:1、類導(dǎo)航的功能更加豐富,使用快捷鍵比Visual Studio中更迅捷;2、無論設(shè)計(jì)還是代碼視圖都支持文檔大綱,瀏覽和跳轉(zhuǎn)更加方便;3、指定文件編碼也要比Visual Studio要容易。

代碼隱藏

由于Flex Builder并不直接支持Code Behind模型,因此在界面和對應(yīng)代碼的管理上要比Visual Studio麻煩一些。

編輯器性能

對于可視化編輯器而言,F(xiàn)lex Builder的性能要比Visual Studio好得多。對代碼編輯器而言Visual Studio和Flex Builder表現(xiàn)差不多,但Flex Builder占用內(nèi)存比較厲害。

編譯器性能

Flex編譯性能一直都是一個(gè)飽受詬病的重大問題。在項(xiàng)目大到一定程度,編譯效率就開始急劇下降,編譯一次需要三四十秒是常有的事。(據(jù)說有人編譯一次甚至需要20分鐘以上,不過我還沒有遇到)

Flex編譯慢是有原因的,因?yàn)榫幾g器替程序員完成了相當(dāng)多的工作。如果你打開-keep=true編譯開關(guān),檢查一下生成的代碼,就知道編譯器的工作有多繁重了。如果愿意放棄一些可視化特性,手工編寫ActionScript組件而避免使用MXML組件,就可以在很大程度上提高編譯效率。

從長遠(yuǎn)角度來說,我認(rèn)同F(xiàn)lex這種設(shè)計(jì)思路,用機(jī)器效率來換取程序員效率是值得的(Unix格言:寧用計(jì)算機(jī)一分,不花程序員一秒。)但對于眼下的機(jī)器性能來說,F(xiàn)lex編譯性能還是一個(gè)無法忽略的問題,編譯速度太慢會拖慢迭代開發(fā)的節(jié)奏,對程序員的心理也不能不說是一種折磨。

Silverlight編譯效率還是不錯的,代價(jià)就是冗長的程序代碼需要程序員自求多福了,編譯器的工作實(shí)際上是很輕松的。

調(diào)試

在開發(fā)環(huán)境的支持下,F(xiàn)lex和Silverlight的調(diào)試都比較方便。Flex的一個(gè)小問題是開發(fā)人員需要單獨(dú)安裝一個(gè)Debug版本的Flash Player,Silverlight則不用,所以Silverlight更加方便一些。

Silverlight缺少Flex Builder內(nèi)置的Profiler,沒有簡單的方法進(jìn)行性能測試。傳統(tǒng)的.Net性能測試工具基本上都不支持Silverlight

開放性

基于Eclipse的Flex Builder開放性明顯要優(yōu)于封閉的Visual Studio,有大量免費(fèi)的Eclipse插件可以直接拿來使用。不過有少量插件會與Flex Builder產(chǎn)生沖突。如果沒有大量的Java開發(fā)工作,那么安裝Flex Builder完整版要比插件版更加穩(wěn)妥并且簡單。

Visual Studio的插件數(shù)量不多,配合Silverlight Tools使用的目前基本上還沒有看到。

IDE方面Flex和Silverlight各擅勝場。

環(huán)境

特性

比較

勝出

Flex

Silverlight

插件大小

目前Flash插件安裝包大小為 1.8M左右,這么小的體積包含了完整的插件功能可以說是一個(gè)了不起的成就。但Air的安裝包就有點(diǎn)大到離譜了(約 15M),這是因?yàn)锳ir還附帶了一個(gè)內(nèi)嵌的HTML解析引擎WebKit。

Silverlight插件安裝包大小為 4M出頭,比Flash大了一倍還多。我比較不理解的一點(diǎn)是既然體積已經(jīng)這么大了,為什么不干脆把DockPanel、TreeView和DatePicker這些重要的組件加進(jìn)去,反倒是MultiScaleImage這樣未必有多常用的東西成了核心組件?讓大量插件用戶去另外下載System.Windows.Controls.dll實(shí)在是個(gè)不小的負(fù)擔(dān)。

安裝

Flash的插件基本上可以做到全自動安裝升級,不必用戶手工參與。這也很容易理解為什么Flash Player能夠成為占據(jù)全球95%以上電腦的裝機(jī)量最大的軟件。

Silverlight插件要麻煩一些,必須用戶手工執(zhí)行安裝步驟,這勢必影響Silverlight插件的普及。當(dāng)然微軟也可以使用諸如捆綁安裝之類的市場手段,這就不再屬于技術(shù)討論的范疇了。

運(yùn)行性能

我沒有作過這方面的測試,就使用感覺來說還沒有發(fā)現(xiàn)明顯差別。不過我看到外國已經(jīng)有這方面的測試,結(jié)果認(rèn)為Flex在畫面渲染效率上優(yōu)于Silverlight,而Silverlight則在數(shù)學(xué)計(jì)算上效率高過Flex??紤]到Adobe/Macromedia就是以圖形起家的,而微軟在編譯器上已經(jīng)深耕多年,這個(gè)結(jié)果應(yīng)該不會讓人感到驚訝。由于瀏覽器插件的主要功能還是提供顯示,用于大量數(shù)學(xué)計(jì)算的場景并不多見,看起來Flex還是占有一定優(yōu)勢。

環(huán)境方面Flex仍然占有優(yōu)勢。

最后再說一些比較瑣碎的話題,因?yàn)椴惶梅诸?,并且主觀意味比較濃厚,就不再詳細(xì)比較,當(dāng)作姑妄言之好了。

Flex與Silverlight目前來看都是存在一些問題的。有些屬于語言設(shè)計(jì)的范疇,比如ActionScript的聲明語法比較羅嗦,而Silverlight則是綁定屬性的語法特別累贅,但這些問題受系統(tǒng)設(shè)計(jì)限制,基本上已經(jīng)沒有修改的余地了(除非整個(gè)框架推倒重來)。另外一些問題是比較嚴(yán)重但是有望解決的,F(xiàn)lex方面是大項(xiàng)目中的編譯速度讓人抓狂,不過在Flex Builder 4 beta中似乎已經(jīng)看到了改善的跡象。Silverlight則是框架還不夠完整,界面組件有限。Silverlight 3已經(jīng)比Silverlight 2有所提高,加上Silverlight Toolkit一類擴(kuò)展可以得到很大改進(jìn)。Silverlight的另一嚴(yán)重問題是IDE工具完全沒有達(dá)到應(yīng)有的水平,Visual Stuido插件可用性非常差,此問題從Silveright 2到3以后反而有惡化的趨勢,VS2010似乎又是個(gè)極其吃機(jī)器的怪獸,這個(gè)問題短期內(nèi)能否解決,實(shí)在讓人無法樂觀。

如果從程序員的觀點(diǎn)來看,Silverlight的語言特性要比Flex更佳:.Net框架結(jié)構(gòu)上更加完備、多種開發(fā)語言支持、Linq和客戶端多線程,這些都是Flex所欠缺的特性,應(yīng)該為Silverlight額外加分??上艿介_發(fā)工具和應(yīng)用范圍的限制,這些優(yōu)勢目前并沒有充分發(fā)揮出來。此外,從從業(yè)人員的現(xiàn)狀來看,F(xiàn)lex語法更加簡單、容易上手,對非程序員頗具吸引力,而C#對這些人來說門檻實(shí)在有點(diǎn)過高。所以這些特性是好是壞,眼下也不太好作出結(jié)論。

從社區(qū)來說,F(xiàn)lex目前已經(jīng)擁有相當(dāng)數(shù)量的用戶和開發(fā)社群,其獨(dú)有的特點(diǎn)是來自設(shè)計(jì)者和程序員兩個(gè)背景完全不同的群體,因此意見和風(fēng)格常常參差不齊,好處是能夠看到不同觀點(diǎn)的碰撞,比較有活力。Silverlight社區(qū)規(guī)模還比較小,基本上全部來自微軟開發(fā)者陣營,背景相當(dāng)一致,對程序設(shè)計(jì)通常能夠有很好的觀點(diǎn),缺點(diǎn)是對UI設(shè)計(jì)師的團(tuán)體和理念缺乏了解,解決思路大多是以程序員為本位的。另外一個(gè)似乎不利于Silverlight的現(xiàn)狀是:Java/開源陣營基本上不會考慮使用Silverlight,反或來說,以微軟技術(shù)為平臺的開發(fā)者倒是還有相當(dāng)一部分會采用Flex(從博客園的話題分類也可以看得出來)。

Flex與Silverlight未來的趨勢如何?看一看這兩個(gè)技術(shù)近幾年的發(fā)展趨勢,F(xiàn)lex仍然具有領(lǐng)先優(yōu)勢,但該優(yōu)勢目前已經(jīng)有所縮?。?/p>

  • Flex 2和Silverlight 1沒有什么好比較的,Sliverlight 1功能實(shí)在太過貧弱,這時(shí)Flex遙遙領(lǐng)先;
  • Flex3和Silveright 2相比,Silverlight在框架結(jié)構(gòu)上比版本1已經(jīng)有改天換地的提高,拉近了和Flex的距離,但可用組件仍然嚴(yán)重不足;
  • Silveright 3在結(jié)構(gòu)上沒有什么重大改變,主要在于功能的完善。如果說Flex 2比Silverlight 1領(lǐng)先整整一步的話,那么到Siliverght 3,這個(gè)差距已經(jīng)縮小到半步,Silverlight在部分特性上甚至超越了Flex。

目前,Silveright 3剛剛出現(xiàn),各方面的支持仍然有待跟進(jìn),Silverlight 4眼下還看不到什么消息。而Adobe已經(jīng)開始準(zhǔn)備Flex 4,目前釋出了第一個(gè)beta版本,從已經(jīng)知道的情況分析,這個(gè)版本在框架上將會有相當(dāng)重大的修改,明顯意圖再度拉大與Silverlight的差距,在許多方面都設(shè)計(jì)得更加靈活。但兼容性究竟如何、能否允許從前的用戶平穩(wěn)過渡,將會是Flex 4面臨的主要問題。

我以前曾經(jīng)說過,現(xiàn)在仍然這樣認(rèn)為:鑒于微軟自身的市場定位,它絕不希望基于Web的技術(shù)強(qiáng)大到足以讓用戶忽略瀏覽器和操作系統(tǒng)的地步。因此Silverlight將來究竟能發(fā)展到什么程度,長遠(yuǎn)來看還是不得不打上一個(gè)很大的問號,即使目前來看微軟仍然在力推這門技術(shù)。不過已經(jīng)使用了Silverlight的同學(xué)也無須太過顧慮,只要是微軟推出的技術(shù),不論好或不好,就算是被放棄以后也還能夠生存相當(dāng)一段時(shí)間(看看眼下的IE6)。

眼下,F(xiàn)lash在諸如在線視頻等市場的領(lǐng)導(dǎo)地位是不爭的事實(shí),Silverlight暫時(shí)還沒有直接與其對抗的力量,并且它們還都面臨著一個(gè)共同的對手——Ajax,未來還會有HTML5來攪局。所以今后一段時(shí)間,我們大概只能看到它們之間發(fā)生一些小規(guī)模的局部戰(zhàn)爭。Flash Player在瀏覽器中的覆蓋率現(xiàn)在超過95%,地位已經(jīng)極其穩(wěn)固,有如今日之Windows,但同時(shí)也意味著基本上再沒有上升的空間,只能依勢固守。而Silverlight則有望以后起之秀的姿態(tài)從Flash中搶走一部分市場份額,然而考慮到其他廠商對微軟的警惕心理和Web標(biāo)準(zhǔn)領(lǐng)導(dǎo)話語權(quán)的力量,Silverlight恐怕也難以取得非常理想的戰(zhàn)績。作為用戶的我們,其實(shí)也沒有多大必要去在意誰會是最后的贏家(歷史為鑒,最終的贏家最初通常都在人們的視野之外。Google勃興而引導(dǎo)網(wǎng)絡(luò)時(shí)代,當(dāng)初沒有任何人預(yù)見到),只要領(lǐng)會時(shí)代和技術(shù)交鋒進(jìn)步的精彩之處就好了。

本文來自Shuhari的博客園文章《Flex/Silverlight的技術(shù)比較》


文章標(biāo)題:技術(shù)角度論Flex與Silverlight優(yōu)劣
鏈接分享:http://www.dlmjj.cn/article/cojjjjp.html