Microsoft Silverlight

Microsoft Silverlight是微軟已停止支援的Web前端應用程式開發解決方案，曾是微軟豐富型網際網路應用程式（Rich Internet Application）策略的主要應用程式開發平台之一，以瀏覽器的外掛元件方式提供Web應用程式中多媒體（含影音串流與音效串流）與高度互動性前端應用程式的解決方案。它曾是微軟UX（使用者體驗）策略中的一環，也是微軟試圖將美術設計和程式開發人員的工作明確切分與協同合作發展應用程式的嘗試之一（另一個為WPF）。

目前Silverlight已經逐步停止被各主流瀏覽器支援，包含Internet Explorer、Firefox、Opera與Safari等，同時也包括macOS作業系統。與Silverlight相同的開放原始碼解決方案「Mono」則提供在Linux上的支援。

Microsoft Silverlight被視為與Adobe Flash Player和Unity競爭的WEB技術。

台灣微軟為推廣Silverlight技術而推出擬人化形象藍澤光。

由於Silverlight安全性和效能不甚理想，微軟在2013年已明確不再開發新功能，僅修補漏洞，而在2021年10月12日終止其支援。

## 特色

Silverlight是微軟前端使用者介面技術Windows Presentation Foundation（WPF）的一個子集，同時也是XAML（eXtensible Application Markup Language）的子集，具有向量式的繪圖能力，以及多媒體與圖形顯示的支援，開發人員能夠使用宣告式開發（declarating development）來發展Silverlight應用程式，而宣告式開發的特性也讓它能夠和設計工具來整合，因此微軟特別為Silverlight和WPF發展了Microsoft Expression Blend工具供設計人員使用。

Silverlight支援串流媒體能力，特別是針對Windows Media的Streamming Media支援，以及MP3等音效串流支援，讓企業得以使用Silverlight發展出多媒體型應用程式，在圖像支援方面，Silverlight 2.0的Deep Zoom技術可以讓大型的圖片或影像得以利用分段下載的瀏覽方式來顯示在前端，台灣國立故宮博物院在2008年曾開發出以Deep Zoom技術的清明上河圖Silverlight版本。

在Windows平台上，Silverlight的底層是透過XNA Framework來處理繪圖。一種將DirectX Graphics封裝成.Net Framework的版本的類別庫。

## 版本

### Silverlight 1.0

Silverlight 1.0由許多核心展示層架構組成，這關係到使用者界面（UI），使用者輸入（user input），基本使用者介面控制元件（basic UI controls），圖形（graphics）和動畫（animation）、媒體播放（media playback），數位權管理（DRM）的支援，以及DOM的整合。其組件如下：

- 輸入（Input）：處理諸如鍵盤、滑鼠、手寫筆等輸入裝置的輸入。
- 使用者介面核心（UI core）：管理點陣圖像渲染（包括JPEG之類的壓縮圖像）、向量圖形、文字及動畫。
- 媒體（Media）：MP3的回放、Windows Media及VC-1串流。
- XAML：允許使用XAML創建UI布局。

一個銀光程式（Silverlight）的起點是從網頁呼叫銀光元件（Silverlight control）開始，必須載入XAML檔。The XAML file包含一個Canvas物件，扮演著一個placeholder的角色。Silverlight提供各種不同的幾何基元，像是：線、橢圓以及其它形狀

一個典型的Silverlight 1.0程式的HTML hosting如下：

```html4strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>UntitledProject1</title>
	<script type="text/javascript" src="Silverlight.js"></script>
	<script type="text/javascript" src="Page.xaml.js"></script>
	<style type="text/css">
		.silverlightHost {
			height: 480px;
			width: 640px;
		}
	</style>
	<script type="text/javascript">
	    function createSilverlight()
        {
            var scene = new UntitledProject1.Page();
            Silverlight.createObjectEx({
	            source: "Page.xaml",
	            parentElement: document.getElementById("SilverlightControlHost"),
	            id: "SilverlightControl",
	            properties: {
		            width: "100%",
		            height: "100%",
		            version: "1.0"
	            },
	            events: {
		            onLoad: Silverlight.createDelegate(scene, scene.handleLoad)
	            }
            });
        }

        if (!window.Silverlight)
            window.Silverlight = {};

        Silverlight.createDelegate = function(instance, method) {
            return function() {
	            return method.apply(instance, arguments);
            }
        }
	</script>
</head>

<body>
	<div id="SilverlightControlHost" class="silverlightHost">
		<script type="text/javascript">
			createSilverlight();
		</script>
	</div>
</body>
</html>
```

### Silverlight 2

2008年10月13日，微軟推出了Silverlight 2.0的RTW版，並提供了相應程式及文件的下載安裝。

Silverlight 2.0支援下列新功能特色，彌補了Silverlight 1.0所欠缺的功能：

- 具備一個.NET Framework縮小版的基礎類別函式庫。
- 大量內建的Silverlight控制項：在Silverlight 1.0時，所有UI物件都必須透過XAML來自行描述繪製，並缺乏許多內建的Silverlight向量控制項，針對這點，Silverlight 2.0強化控制項方面的能力，內建許多向量控制項供開發人員直接使用。
- Skinning and Templating外觀樣板的進階支援：透過Skinning and Templating的支援，可以自訂控制項之外觀與樣板，可以迅速及動態地套用不同的外觀。
- Deep Zoom：一個高解析度的影像縮放技術，能夠在Silverlight進行深度的圖片影像縮放功能。
- 廣泛的網路Networking支援能力：舉例來說支援REST、SOAP、POX、RSS及標準HTTP服務等網路技術的呼叫，這部分對前端的Silverlight特別重要，透過網路程式才能存取後端Server的資料，以回傳繫結顯示在UI之上。
- 擴展的.NET語言支援：Silverlight 2.0不僅僅支援主流的C#及VB程式開發，亦進一步支援動態語言，例如IronPython、IronRuby等等。
- Silverlight DRM的支援：Silverlight 2.0對於影音媒體內容的保護，是透過DRM技術來逹成，透過它就可以提供Content內容保護。
- 改善伺服端的延展性及擴展廣告客戶支援：Silverligt 2.0針對串流傳送資料方式、效率、下載播放方式再進一步強化改善其能力。
- 活躍的的合作夥伴生態系統：微軟全球知名的Visual Studio Industry Partners合作夥伴包括了ComponentOne LLC、Infragistics Inc及Telerik，提供了Silverlight 2.0的商業元件，可在Visual Studio 2008的環境中使用。
- 跨平台及跨瀏覽器支援：支援Mac、Windows及Linux等平台和Firefox、Safari與Windows Internet Explorer等瀏覽器。

### Silverlight 3

2009年7月10日，微軟正式放出Silverlight 3 RTW（3.0.40624.0）的下載，改進包括：

- 平滑影片流技術：微軟表示其新影片流功能提高了瀏覽器上的影片質量，已經可以和電視影片相比。Silverlight 3的平滑影片功能已經在流行音樂天王邁克。傑克遜的悼念晚會、溫布爾登網球公開賽網路直播上大顯身手。
- 數字版權管理：Silverlight 3在數字內容保護上做了提高。內容生產商從發布內容之始就可以跟蹤並保護其發布的內容。
- 現場感：Silverlight 3支持更強大的3D顯示功能，新增加的一些功能可以用於圖片的深度縮放，現場感更強。
- 可在瀏覽器之外運行：在2007年剛推出Silverlight的時候，使用Silverlight必須基於瀏覽器。在Silverlight 3中已經沒有這種限制，用Silverlight 3開發的應用可以直接運行。
- 升級的Expression Studio 3：Expression Studio是微軟提供給開發者開發Silverlight應用的工具套件。新發布的Silverlight 3升級了Expression Studio，提供了新工具Sketchflow。
- 增強對企業使用者的支持。

### Silverlight 4

- 支援Google Chrome瀏覽器
- 支援網路攝像頭和麥克風
- 支援列印功能
- 強化滑鼠的右鍵與滾輪功能
- WCF RIA Services：WCF RIA Service Preview，內建於Visual Studio 2010的開發環境。
- 執行效能較Silverlight 3快200%
- 與HTML整合
- 支持脫離瀏覽器功能
- data binding再加強
- 動畫效果再加強
- 剪貼簿（Clipboard）與拖曳功能
- 視界放大（Deep Zoom）
- H.264的內容保護

### Silverlight 5

2010年12月2日有Silverlight更新的傳聞，Silverlight 5 beta英文版於2011年4月13日釋出，而正式版本於2011年12月9日公布。

Silverlight 5的新功能有：

- 支援GPU加速影像壓縮
- 內建3D graphics
- 改善電源管理
- 內建遠端控制
- 更快的程式啟動（application startup）
- 提供64位元的瀏覽器
- 加強Visual Studio 2010的使用者界面自動化測試
- 文字檢錯系統
- 可以讓開發人員在data-binding時設定偵錯中斷點

## 開發工具

Silverlight的開發工具分為兩個部份：

- 設計人員：使用Microsoft Expression Blend來進行設計。
- Expression Blend 2.0支援Silverlight 1.0的設計。
- Expression Blend 2.0 Service Pack 1支援Silverlight 2.0的設計。
- 開發人員：使用Microsoft Visual Studio來開發。
- Visual Studio 2008支援Silverlight 1.0的應用程式開發。
- Silverlight Tools for Visual Studio 2008（外掛於Visual Studio 2008 SP1）支援Silverlight 2.0的應用程式開發。

Eclipse也有支援Silverlight開發的計畫。

## 藍澤光

藍澤光是由臺灣微軟分公司推出的Microsoft Silverlight萌擬人化代言人，在臺灣及日本地區影響較大。隨著微軟對於Silverlight 5的產品支援已經逐步結束，官方活動小組已經於2014年9月宣布，使藍澤光轉型成為Microsoft Azure的台灣區虛擬化代言人。

## 瀏覽器相容性

下表為各作業系統及各大網頁瀏覽器對於Silverlight各版本的支援性

系統/瀏覽器｜IE 6 SP1｜IE 6 SP2以上｜IE 7｜IE 8以上｜Mozilla Firefox 3以上｜SeaMonkey｜Safari｜Opera｜Google Chrome｜Edge

Windows 7以上｜N/A｜N/A｜N/A｜1, 2, 3, 4, 5｜1, 2, 3, 4, 5｜1, 2｜1, 2;透過NPAPI｜非官方支援｜2, 3, 4, 5｜不支持

Windows Server 2008 R2｜N/A｜N/A｜N/A｜1, 2, 3, 4, 5｜5｜1, 2｜1, 2;透過NPAPI｜非官方支援｜2, 3, 4, 5｜不支持

Windows Vista｜N/A｜N/A｜1, 2, 3, 4, 5｜1, 2, 3, 4, 5｜1, 2, 3, 4, 5｜1, 2｜1, 2;透過NPAPI｜非官方支援｜2, 3, 4, 5｜不適用

Windows Server 2008｜N/A｜N/A｜1, 2, 3, 4, 5｜1, 2, 3, 4｜1, 2, 3, 4, 5｜1, 2｜1, 2;透過NPAPI｜非官方支援｜2, 3, 4, 5｜不適用

Windows XP / 2003 / Home Server｜1, 2, 3, 4｜1, 2, 3, 4, 5｜1, 2, 3, 4, 5｜1, 2, 3, 4, 5｜1, 2, 3, 4, 5｜2非官方支援｜1, 2;透過NPAPI｜非官方支援｜2, 3, 4, 5｜不適用

Windows 2000（需安裝 KB891861）｜2, 3, 4｜N/A｜N/A｜N/A｜非官方支援｜N/A｜2;透過NPAPI｜已計劃｜N/A｜不適用

Windows Phone 7｜N/A｜N/A｜已計劃｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜不適用

S60｜已計劃｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜不適用

FreeBSD｜N/A｜N/A｜N/A｜N/A｜2｜N/A｜N/A｜N/A｜N/A｜不適用

Linux｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜N/A｜不適用

Mac OS 10.4/10.5 PowerPC｜N/A｜N/A｜N/A｜N/A｜1｜N/A｜1｜已計劃｜N/A｜不適用

Mac OS 10.4/10.5 Intel｜N/A｜N/A｜N/A｜N/A｜1, 2, 3, 4, 5｜N/A｜1, 2, 3, 4, 5｜已計劃｜2, 3, 4, 5｜不適用

## 外部連結

- https://www.microsoft.com/silverlight/
- Silverlight終止支援的說明與常見問題
- Microsoft Silverlight Release History
- MSDN Silverlight Dev Center
- The Official Microsoft Silverlight Site
- CNET - More than meets the eye in Microsoft plan
- Silverlight 1.1 is Now Silverlight 2.0 （2007/11/29）
- Silverlight - ProgWiki
- ScottGu's Blog
- Comparison between Silverlight, Flash and HTML5

## 基本資料

- 開發者：微軟
- released version：1.0.20816
- 發行日期：2007年9月5日
- 軟體版本週期：5.1.50918.0 (2019年1月15日)
- 程式語言：C++、C#
- 作業系統：跨平台、（Microsoft Windows、Linux、macOS；Symbian OS）
- 類型：Web應用程式開發框架
- 許可協議： Silverlight許可協議
- 網站：http://www.microsoft.com/silverlight/、www.silverlight.net