Silverlight技术全面解析:特性、工具与应用
立即解锁
发布时间: 2025-08-26 01:40:43 阅读量: 3 订阅数: 18 

# Silverlight技术全面解析:特性、工具与应用
## 1. Silverlight概述
Silverlight是微软基于.NET平台的插件式Web编程环境,最初作为Flash的竞争对手出现,如今可用于构建需要高性能图形、动画和视频的丰富应用程序。与HTML5相比,虽然HTML5有诸多可能性,但管理起来较为困难,JavaScript对语法错误的容忍度高,动画例程需手动编写,多线程支持也较为笨拙。而Silverlight具有顶级的开发工具,借助Visual Studio能像构建桌面程序一样轻松构建应用程序,结合Expression Blend还能定义和自定义丰富的图形效果。同时,Silverlight提供ASP.NET集成,便于通过Web服务查询服务器端数据库,因此即便HTML5普及,它仍可能是企业内部网络业务开发的首选。
不过,Silverlight的未来并不明确。它可能继续作为.NET开发者创建业务应用程序的首选平台,也可能逐渐转变为用于前沿游戏和视频播放器的专业工具。但可以确定的是,它不会取代HTML成为创建传统公共网站的主要语言。
## 2. Silverlight与其他技术对比
### 2.1 Silverlight vs. Metro(和Windows 8)
当微软推出Windows 8并附带新的富客户端应用程序编程模型Metro时,Silverlight开发者曾有所疑虑,担心Metro会取代Silverlight。但实际上,Metro旨在开发轻量级、以触摸为中心、消耗数据的应用程序,适用于未来基于Windows 8的平板电脑,是iPad原生应用的竞争对手,也是WPF的潜在继任者。然而,Metro应用只能在Windows 8上运行,对Silverlight开发者吸引力不大。未来,Silverlight应用的范围可能会因跨平台HTML5应用和移动设备原生应用的挤压而变窄,但目前它仍在这些技术之间占据重要地位。
### 2.2 Silverlight与WPF
Silverlight借鉴了WPF用于丰富客户端用户界面的模型。WPF是用于构建丰富Windows应用程序的工具包,它不仅通过强大的高级功能简化开发,还通过DirectX管道渲染提高性能。Silverlight无法复制WPF的所有功能,因为很多功能依赖于操作系统,如特定的显示驱动和DirectX技术。但它使用了WPF模型的子集,与WPF有很多相似之处:
- **用户界面定义**:都使用XAML标记定义用户界面,且数据绑定语法相同。
- **控件和样式**:借用了许多相同的基本控件、样式系统和模板机制。
- **2D图形绘制**:使用相似的形状、路径、变换、几何图形和画笔。
- **动画模型**:都基于故事板的声明式动画模型。
- **媒体播放**:都使用MediaElement类播放视频和音频文件。
需要注意的是,WPF允许开发者创建浏览器托管的应用程序XBAPs,但它仅适用于Windows系统,而Silverlight具有跨平台特性。
## 3. Silverlight的发展历程
### 3.1 Silverlight 1
Silverlight 1功能相对有限,包含2D绘图和媒体播放支持,但没有CLR引擎,也不支持.NET语言,开发者只能使用JavaScript编码。
### 3.2 Silverlight 2
Silverlight 2是一个重大变革,它添加了CLR、.NET Framework类的子集以及基于WPF的用户界面模型,是微软历史上备受期待的版本之一。
### 3.3 Silverlight 5
Silverlight 5沿用了Silverlight 2的开发模型,并增加了一系列精选的功能和性能改进:
| 改进特性 | 详细描述 |
| --- | --- |
| 性能提升 | 启动更快,支持64位浏览器,小尺寸文本渲染更清晰。 |
| 矢量打印 | 在打印驱动支持PostScript时,采用矢量打印,提高打印速度并减少内存开销。 |
| 硬件加速3D图形 | 移植了用于构建Xbox游戏的Microsoft XNA框架的一部分,提供强大的3D场景渲染能力,由显卡完成工作,性能出色。 |
| 低延迟音效 | 支持低延迟音效播放,对游戏尤为有用。 |
| 特效播放 | 可快速或慢速播放视频,且不改变音频音调。 |
| 双击和三击识别 | 解决了长期以来的困扰,能轻松区分单击、双击和三击。 |
| 远程媒体控制支持 | 在全屏模式下,可响应来自遥控器或带媒体控制按钮的增强键盘的播放命令。 |
| 透视查看器 | 提供了一种独特的方式来展示大量数据,结合可缩放图片、数据过滤和流畅动画,几乎无需额外编写代码。 |
| XAML调试 | 可在数据绑定表达式中设置断点来排查数据绑定错误。 |
| 子窗口 | 浏览器外应用程序可显示二级窗口,无需提升信任级别。 |
| 完整文件访问和P/Invoke | 具有提升信任级别的应用程序可轻松访问用户能访问的硬盘文件,还能在Windows计算机上使用P/Invoke调用遗留C函数或Windows API。 |
| 提升信任级别的浏览器内应用程序 | 结合了提升信任级别的优势和普通Silverlight应用程序的无安装部署特性,但仅适用于可配置客户端证书的受控环境。 |
## 4. Silverlight 5的向后兼容性
安装了Silverlight 5插件的计算机能否运行早期版本的Silverlight应用程序是一个常见问题。Silverlight 5通过其怪异模式特性解决了这个问题。当Silverlight 5插件加载为早期版本编译的应用程序时,会自动切换到怪异模式,尝试模拟相应Silverlight运行时环境的行为。若需了解Silverlight 5与Silverlight 4之间的重大更改详情,可参考http://tinyurl.com/6hkgtmp。
## 5. 开发工具
### 5.1 Visual Studio
Visual Studio是编写Silverlight应用程序的最佳起点,它具备开发所需的一切工具,拥有Silverlight页面的可视化设计器,可通过拖放和绘制创建用户界面,并能实时预览效果。
### 5.2 Expression Blend
Expression Blend是面向图形设计师的工具,提供丰富的功能用于设计视觉丰富的用户界面,其视觉工具优于Visual Studio,还支持SketchFlow应用程序原型设计工具和类似Visual Studio的代码编辑器。但它缺乏调试、代码重构和项目源代码控制等高级开发工具。
### 5.3 Visual Studio LightSwitch
微软正在开发的另一个使用Silverlight的开发工具,强调使用模板和代码生成快速构建复杂应用程序,适合希望快速创建具有Silverlight前端的数据驱动应用程序的业务开发者,也可作为在Visual Studio中进一步完善和定制项目的起点。
以下是使用Visual Studio和Expression Blend的工作流程mermaid图:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(开发者用Visual Studio创建基础用户界面):::process
B --> C(设计团队用Expression Blend进行界面优化):::process
C --> D(开发者继续在Visual Studio中编写和优化代码):::process
D --> E([结束]):::startend
```
## 6. Silverlight网站类型
### 6.1 普通HTML网站
Silverlight应用程序的入口是包含Silverlight内容区域的基本HTML文件。
### 6.2 ASP.NET网站
Visual Studio会创建两个项目,一个包含Silverlight应用程序文件,另一个包含与Silverlight文件一起部署的服务器端ASP.NET网站。入口可以是普通HTML文件或包含服务器生成内容的ASP.NET网页。
选择哪种方法取决于具体需求。如果需要同时包含ASP.NET网页和Silverlight增强页面、创建调用Web服务的Silverlight应用程序或使用专门的ASP.NET Web控件间接生成Silverlight内容,ASP.NET网站是更好的选择。如果不需要编写服务器端代码,创建普通HTML网站即可。
## 7. 将Silverlight内容添加到现有网站
在考虑Silverlight开发模型时,通常会用它来增强现有网站的内容,网站仍会包含大量HTML、CSS和JavaScript。例如,可以添加Silverlight内容区域来展示广告、提供网站部分功能的增强体验。当然,也可以创建纯Silverlight网站,但Silverlight的安装范围不如其他Web技术广泛,不支持一些旧操作系统,因此其覆盖范围不如普通HTML。许多采用Silverlight的企业用它来提供前沿内容以区别于竞争对手,但不会放弃传统网站。
## 8. 开发准备与工具下载
### 8.1 运行环境
要运行Silverlight应用程序,只需安装Silverlight浏览器插件,可从http://silverlight.net获取。
### 8.2 开发环境
创建Silverlight应用程序需要Visual Studio 2010和Silverlight 5 Tools for Visual Studio 2010,可在Microsoft Download Center搜索“Silverlight 5 tools”下载。也可以使用Expression Blend进行开发,当前使用Silverlight 5时需使用Expression Blend Preview for Silverlight 5的测试版。
### 8.3 Silverlight工具包
为了跟上Silverlight的最新发展,还应下载Microsoft的Silverlight Toolkit,它提供了一组扩展Silverlight功能的控件和组件,只需添加程序集引用即可在应用程序中使用。该工具包将控件分为四个质量等级:
- **成熟(Mature)**:控件不太可能改变,通常已包含在核心Silverlight插件中,可访问完整源代码进行定制。
- **稳定(Stable)**:适合大多数应用程序,但未来可能会有细微调整,如DockPanel、WrapPanel和Expander。
- **预览(Preview)**:对大多数应用程序来说比较可靠,但可能会根据开发者反馈进行更改,使用新版本时可能需要修改代码。
- **实验(Experimental)**:旨在征求开发者反馈的新控件,使用时需自行承担风险。
可访问http://silverlight.codeplex.com了解不同质量等级的详细信息、试用控件的实时演示或下载工具包。
## 9. 代码示例与反馈
为测试复杂的代码示例,建议从Apress网站或www.apress.com下载最新的代码示例。如果对内容有任何意见或建议,可发送至[email protected]。
Silverlight作为一种强大的Web开发技术,在特定领域具有独特的优势,尽管面临一些挑战,但仍将继续为构建令人印象深刻的富互联网应用程序提供支持。开发者可根据自身需求和项目特点,选择合适的开发工具和网站类型,充分发挥Silverlight的功能。
## 10. 开发Silverlight应用程序的具体操作步骤
### 10.1 使用Visual Studio创建Silverlight应用程序
以下是使用Visual Studio创建Silverlight应用程序的详细步骤:
1. **打开Visual Studio**:启动Visual Studio 2010,并确保已安装Silverlight 5 Tools for Visual Studio 2010。
2. **创建新项目**:选择“文件” -> “新建” -> “项目”。在项目模板中,选择“Silverlight”类别,然后选择合适的Silverlight应用程序模板(如“Silverlight Application”)。
3. **配置项目**:设置项目名称和保存位置,点击“确定”。在弹出的配置窗口中,可选择是否创建ASP.NET网站项目,根据需求进行选择。
4. **设计用户界面**:在解决方案资源管理器中,打开主页面(通常是MainPage.xaml),使用可视化设计器或直接编辑XAML代码来设计用户界面。可通过拖放控件到设计区域来快速创建界面元素。
5. **编写代码逻辑**:在对应的代码文件(如MainPage.xaml.cs)中编写C#代码来实现业务逻辑,处理事件等。
6. **编译和运行**:点击“调试” -> “开始调试”或使用快捷键F5来编译并运行应用程序。
### 10.2 使用Expression Blend设计用户界面
如果需要使用Expression Blend设计用户界面,可按以下步骤操作:
1. **打开Expression Blend**:启动Expression Blend Preview for Silverlight 5。
2. **打开项目**:选择“文件” -> “打开项目”,找到之前在Visual Studio中创建的Silverlight项目文件。
3. **设计界面**:使用Expression Blend的丰富工具进行界面设计,如创建渐变填充、设计动画等。可以使用SketchFlow工具进行应用程序原型设计。
4. **保存和同步**:设计完成后,保存更改。Expression Blend和Visual Studio之间可以通过保存和刷新来同步项目文件。
### 10.3 添加Silverlight Toolkit控件
要在Silverlight应用程序中添加Silverlight Toolkit控件,可按以下步骤操作:
1. **下载和安装Silverlight Toolkit**:访问http://silverlight.codeplex.com下载并安装Silverlight Toolkit。
2. **添加引用**:在Visual Studio的解决方案资源管理器中,右键点击项目,选择“添加引用”。在“引用管理器”中,浏览到Silverlight Toolkit的程序集文件,添加所需的引用。
3. **使用控件**:在XAML文件中,添加相应的命名空间引用,然后就可以使用Silverlight Toolkit中的控件了。例如:
```xml
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
```
然后在界面中使用控件:
```xml
<toolkit:AutoCompleteBox />
```
## 11. 不同类型网站中Silverlight应用的部署
### 11.1 普通HTML网站部署
将Silverlight应用程序部署到普通HTML网站的步骤如下:
1. **生成XAP文件**:在Visual Studio中编译Silverlight项目,生成XAP文件(通常位于项目的Bin目录下)。
2. **创建HTML文件**:在网站目录下创建一个HTML文件,添加以下代码来嵌入Silverlight应用程序:
```html
<!DOCTYPE html>
<html>
<head>
<title>Silverlight Application</title>
</head>
<body>
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2">
<param name="source" value="YourSilverlightApp.xap" />
</object>
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style: none" />
</a>
</body>
</html>
```
3. **上传文件**:将生成的XAP文件和HTML文件上传到网站服务器。
### 11.2 ASP.NET网站部署
将Silverlight应用程序部署到ASP.NET网站的步骤如下:
1. **生成项目**:在Visual Studio中编译Silverlight项目和ASP.NET项目。
2. **配置ASP.NET项目**:确保ASP.NET项目的配置正确,如设置正确的Web服务地址等。
3. **部署到服务器**:将生成的文件(包括Silverlight的XAP文件和ASP.NET的相关文件)部署到服务器的相应目录。
## 12. Silverlight应用的性能优化建议
### 12.1 代码优化
- **减少不必要的代码**:避免编写冗余的代码,对公共功能进行封装和复用。
- **优化算法**:使用高效的算法来处理数据,减少计算量。
### 12.2 资源管理
- **合理使用图片**:使用合适的图片格式和分辨率,避免使用过大的图片。可以使用图片压缩工具对图片进行优化。
- **释放资源**:在不需要使用资源时,及时释放,如关闭文件流、释放内存等。
### 12.3 布局优化
- **简化布局**:避免使用过于复杂的布局结构,减少布局计算的复杂度。
- **使用虚拟化**:对于大量数据的列表或集合,使用虚拟化技术来提高性能。
## 13. 总结
Silverlight作为微软推出的基于.NET平台的插件式Web编程环境,具有丰富的功能和强大的性能。它在图形处理、动画效果、视频播放等方面表现出色,适用于构建各种富互联网应用程序。
### 13.1 优势总结
- **开发工具丰富**:Visual Studio和Expression Blend提供了强大的开发和设计功能,方便开发者和设计师进行协作。
- **功能特性强大**:Silverlight 5增加了许多实用的功能,如硬件加速3D图形、低延迟音效等。
- **向后兼容性好**:通过怪异模式特性,能确保早期版本的应用程序在Silverlight 5环境下正常运行。
### 13.2 挑战与应对
- **安装范围有限**:相对于其他Web技术,Silverlight的安装范围较窄,不支持一些旧操作系统。开发者可以结合传统HTML内容,为不支持Silverlight的用户提供替代方案。
- **面临竞争**:面临HTML5等技术的竞争,开发者需要不断提升Silverlight应用的性能和用户体验,发挥其在特定领域的优势。
开发者在选择使用Silverlight时,应根据项目需求、目标用户群体等因素综合考虑,合理选择开发工具和网站类型,充分发挥Silverlight的优势,为用户带来优质的应用体验。
以下是一个简单的mermaid流程图,展示了从创建Silverlight项目到部署的整体流程:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(使用Visual Studio创建项目):::process
B --> C(设计用户界面):::process
C --> D(编写代码逻辑):::process
D --> E(编译和测试):::process
E --> F{选择网站类型}:::process
F -->|普通HTML网站| G(部署到HTML网站):::process
F -->|ASP.NET网站| H(部署到ASP.NET网站):::process
G --> I([结束]):::startend
H --> I
```
通过以上内容,开发者可以全面了解Silverlight技术,掌握开发、部署和优化Silverlight应用程序的方法,为实际项目开发提供有力支持。
0
0
复制全文
相关推荐










