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