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

<image>

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