Microsoft Silverlight 入门






4.43/5 (13投票s)
在本文中,我们将简要介绍 Microsoft Silverlight,了解它如何融入当今的其他技术,并观看它的实际运行。准备好了吗!
目录
- 概述
- 什么是 Silverlight
- 定义
- 平台支持
- 富交互应用程序
- RIA 统计
- 为什么选择 Silverlight
- Silverlight vs. Flash
- Silverlight vs. WPF
- 富(Rich)与触及(Reach)
- 展示
- Deep Zoom
- 深入了解
- Silverlight 和 XAML
- 部署过程
- Silverlight 架构
- Silverlight 5
- 工具
- Microsoft Visual Studio 2010
- Microsoft Expression Studio 4
- 下一步
- 演示
- 摘要
概述
在本文中,我们将简要介绍 Microsoft Silverlight,了解它如何融入当今的其他技术,并观看它的实际运行。准备好了吗!
什么是 Silverlight
定义
Silverlight 是一项 Microsoft 技术,旨在帮助开发人员创建具有最佳用户界面特性和功能的富交互 Web 应用程序。它可以作为插件安装在当今几乎所有流行的浏览器上,用于交付下一代媒体和 Web 应用程序。
当我们说“富”应用程序时,我们并不是指那些拥有惊人界面和大量图形的应用程序。事实上,我们说的“富”是指那些拥有标准 Web 应用程序所不具备的大量功能的应用程序。富应用程序的常见例子包括在线文档编辑器和图像处理器;它们都具有高度交互性,并提供大量通常在标准 Web 应用程序中不可用的功能。而这正是 Silverlight 的宗旨,其主要目标是允许为 Web 开发富交互应用程序。
平台支持
与其他许多 Microsoft 技术不同,Silverlight 应用程序可以运行在任何地方。它被认为是跨平台、跨浏览器、跨设备的。它可以运行在 Windows、Linux,甚至 Mac 上;可以运行在 Internet Explorer、Mozilla Firefox、Google Chrome 等浏览器上;还可以运行在 PC、移动设备和掌上设备上。它真的可以无需任何代码更改地运行在任何地方!
另一件有趣的事情是,Silverlight Web 应用程序可以托管在任何服务器上。您可以将 Silverlight 应用程序托管在 Windows、Linux 或 Mac 服务器上,而无需任何额外的代码更改或配置。
富交互应用程序
我们已经讨论了富交互应用程序一段时间了;现在让我们来看看富交互应用程序到底意味着什么。
富交互/互联网应用程序 (RIA) 是一种与用户进行高度交互且功能丰富的 Web 应用程序。它在交互性和功能方面与桌面应用程序非常相似;然而,它是在浏览器中运行的 Web 应用程序,而不是在桌面上运行。所以我们可以说,RIA 应用程序兼具桌面应用程序和 Web 应用程序的最佳功能和用户界面特性。
如今,有许多技术可用于创建 RIA 应用程序。最流行的平台是 Adobe Flash、Microsoft Silverlight 和 Sun Java。值得一提的是,上述每个平台(当然包括 Silverlight)都通过浏览器插件提供,因此用户机器上必须安装其运行时才能运行应用程序。
RIA 统计
现在有人会问:谁会赢得这场竞赛?哪种 RIA 平台最值得花费时间和精力去学习?
首先,让我们看看以下图表,它们代表了 Adobe Flash、Microsoft Silverlight 和 Sun Java 的渗透率。我们看到的第一张图表来自 http://riastats.com,显示 Adobe Flash 已安装在近 96% 的联网计算机上。Microsoft Silverlight 位居第二,约占联网计算机总数的 74%。Sun Java 位居第三,约占联网计算机总数的 73%。
StatOWL 显示的数据略有不同,但更详细。
从上面的图表中我们可以看到,Microsoft Silverlight 在很短的时间内(首次发布于 2007 年)取得了巨大的成功。然而,我们不能过多依赖这些数据,因为您知道,Microsoft Silverlight 通过 Windows Update 会自动安装在 Windows 机器上。
现在,让我们来看看 Microsoft Silverlight 的特性,看看它为什么是迄今为止最好的 RIA 平台。
为什么选择 Silverlight
除了由 Microsoft 提供之外,Silverlight 的一些特性还包括:
- 它是免费的。
- 它运行在所有流行的浏览器、平台和设备上。
- 它可以作为浏览器内应用程序或桌面应用程序运行。
- 易于创建看起来“惊艳”的出色 UI。
- 支持企业应用程序开发。
- 支持 2D/3D 动画/图形。
- 原生支持 CLR 和 .NET Framework。
- 可以使用 JavaScript 进行自动化。
- 支持多种媒体(音频/视频)格式,并具备流媒体功能。
- 支持多种丰富的控件,包括
DataGrid
。 - 支持多种企业技术,包括 WCF。
此外,Silverlight 被认为是 Windows Phone 的主要开发框架。
Silverlight vs. Flash
Silverlight 和 Flash 非常相似,那么哪个更好,Silverlight 还是 Flash?作为一名 Microsoft 开发者,并且您现在正在一个 .NET 博客上阅读,尽管我从未为 Flash 开发过,但我可以说 Silverlight 是有史以来最好的 RIA 平台!!!但是,我们需要更认真一些。
InfoWorld 进行了一次评测,并对 Silverlight 和 Flash 进行了比较,结果非常出色,Silverlight 以 8.3 分超越 Flash,而 Flash 仅获得 7.8 分。
Silverlight vs. WPF
Windows Presentation Foundation (WPF) 是一个利用 DirectX 为 Windows 应用程序中的 UI 进行渲染的图形子系统,由 Microsoft 开发,并作为 Microsoft .NET Framework 3.0 和 Windows Vista 的一部分推出。WPF 被认为是 WinForms(现在被认为是功能完备的)的替代品,而 WinForms 依赖于旧的 GDI 子系统,WPF 依赖于 DirectX。
另一方面,Silverlight 实际上是 WPF 的一个子集,以前 Silverlight 的代号是 WPF/E(WPF/Everywhere),因为它被认为是 WPF 的跨平台版本。虽然 WPF 专注于桌面开发,但 Silverlight 专注于 Web 开发。
富(Rich)与触及(Reach)
下图比较了一些可用的 Web 开发技术在丰富性(即 UI 功能)和触及范围(平台和浏览器支持)方面的差异。
从上图我们可以看出,WPF 拥有当今最好的 UI 功能。然而,它主要用于桌面开发,并且只能在 Windows 平台运行。
另一方面,ASP.NET 可以随处运行,但不幸的是,它不支持当今 Web 所需的 UI 功能。
最后,Silverlight 拥有最佳的 UI 功能,并且它还支持广泛的平台和浏览器(其平台/浏览器支持随着每个版本的发布而扩展)。
展示
要全面了解 Silverlight 的功能,请查看世界各地的一些 Silverlight 应用程序。
- Deep Earth (http://deepearth.codeplex.com)
一个利用 Bing Maps 的项目,允许您查看地图并获取路线。 - Hard Rock Memorabilia (http://memorabilia.hardrock.com/)
Hard Rock 纪念品。 - Sobees (http://sobees.com/web)
一个基于 Web 的社交媒体客户端。 - Bing Maps Streetside (http://www.bing.com/maps/explore/)
通过此应用程序查看地图、获取路线并在街道上漫步。 - PhotoSynth (http://photosynth.net)
捕捉地点,与朋友分享,并发布它们。 - PivotViewer (http://www.silverlight.net/learn/pivotviewer/)
在 Web 上查看海量数据并进行可视化。 - Fantasia (http://nokola.com/fantasia/)
一个基于 Web 的图像处理器。 - Nibbles Tutorials (http://www.nibblestutorials.net)
Silverlight 教程网站。 - SilverlightShow (http://www.silverlightshow.net/Books.aspx)
查看这本关于 Silverlight、WPF、XAML 和 Windows Phone 的精美图书合集。 - Shidonni (http://www.shidonni.com)
儿童游戏。 - Justin Angel (http://justinangel.net)
Justin Angel 的 Silverlight 博客。
其中一个最令人印象深刻的应用程序是 SilveOs (http://silveos.com/);一个 Web 上的迷你操作系统。
还有数千个 Silverlight 应用程序也在此提供: http://www.silverlight.net/showcase。
Deep Zoom
Silverlight 的另一个强大功能是 Microsoft 作为 Silverlight 的一部分推出的 DeepZoom 技术。DeepZoom 允许您查看非常大的高分辨率图像。它通过仅加载用户正在查看的区域并以显示的分辨率显示,从而减少了初始加载时间。当用户平移(或缩放)到后续区域时,会下载这些区域。
深入了解
Silverlight 和 XAML
与 WPF 一样,Silverlight 中的用户界面是在一种称为可扩展标记语言 (Extensible Markup Language) 的特定语言中声明的(或 XAML,发音为“Zammel”)。XAML 是一种由 Microsoft 创建的基于 XML 的语言,用于初始化结构化值和对象。XAML 元素直接映射到 CLR 对象(例如,<Button>
元素映射到 Button
对象)。
以前的 ASP.NET 开发者对 XAML 的性质有些熟悉。您有一个所见即所得 (WYSIWYG) 的 XAML 设计器,您可以使用它来设计应用程序的界面。此界面的代码通过一个代码隐藏文件提供,您可以在其中使用您喜欢的 .NET 语言编写代码。
一个页面有两个文件(例如,一个 XAML 文件用于界面,一个 CS 文件用于 C# 代码)的概念,将应用程序开发中的两个主要角色——设计和开发——分开。设计师可以在 XAML 文件中工作,开发者可以在代码文件中工作,并且这两个文件是链接在一起的。这也导致了一种松耦合的设计,将用户界面代码与业务逻辑分开。
部署过程
您将遵循哪些步骤来将 Silverlight 应用程序部署给用户?这正是本节的内容。
当您构建 Silverlight 应用程序时,XAML 标记、代码以及所有其他资源会被编译成 .NET 程序集,然后使用 ZIP 压缩并存储在 XAP(.xap)文件中。
然后,XAP 文件可以托管在 Web 服务器上,并通过声明 Silverlight 插件对象的网页进行引用。当用户导航到该页面时,XAP 文件将被下载到他的 PC,并在该网页上由 Silverlight 运行时执行。
所以,您只需要开发您的应用程序,获取 XAP 文件,将插件插入网页,然后将该页面和 XAP 文件发布到 Web 上。
Silverlight 架构
下图展示了 Microsoft Silverlight 的基本架构和组件。它显示了表示层(界面)核心组件如何与其他 .NET 和 Silverlight 组件集成,以及提供商提供的服务。
Silverlight 5
Silverlight 当前的稳定版本是 Silverlight 4。在 2010 年 PDC 上,Silverlight 的第 5 个版本被介绍,它仍处于 Beta 阶段,但预计很快就会发布。
有关 Silverlight 5 的更多信息可以在 http://www.microsoft.com/silverlight/future 上找到。
在 http://bit.ly/new-silverlight5-en 上详细阅读所有 Microsoft Silverlight 5 的新特性。
工具
用于 Silverlight 的最常用工具是 Microsoft Visual Studio 2010 和 Microsoft Expression Studio 4。
Microsoft Visual Studio 2010
对开发者而言是最佳选择,对设计师也很友好。请查看:http://www.microsoft.com/visualstudio/en-us。
Microsoft Expression Studio 4
包含 5 个工具:
- Microsoft Expression Blend
Silverlight 和 WPF 的可视化用户界面构建器。 - Microsoft Expression Web
所见即所得 (WYSIWYG) 的网站设计器和编辑器。 - Microsoft Expression Design
位图和矢量图形编辑器。 - Microsoft Expression Media
数字资产和媒体管理器。 - Microsoft Expression Encoder
专业媒体(视频/音频)编码器。
下一步
要开始使用 Silverlight,您需要安装以下组件:
- Silverlight SDK(仅核心组件)
http://bit.ly/silverlight-4-sdk - Silverlight 4 Tools for VS 2010(核心组件 + VS2010 的附加工具)
http://bit.ly/silverlight-4-tools - Silverlight 4 Toolkit(附加组件)
http://silverlight.codeplex.com
演示
在下面的示例中,我们将创建一个 Silverlight 的“Hello World”应用程序。请遵循以下步骤:
首先,确保您的 PC 上已安装 Silverlight SDK,然后启动 Visual Studio 2010 并选择“新建项目”。
在“新建项目”对话框中,从左侧选择您想要的语言,然后选择 Silverlight 作为项目类型。在中间窗格中,选择“Silverlight 应用程序”开始。
现在会出现另一个对话框,询问您是创建一个新的 Web 应用程序来托管 Silverlight 应用程序,还是不创建。如您所知,Silverlight 应用程序在 Web 页面中定义的插件中运行,该对话框询问是否为您创建一个新的 Web 应用程序项目来托管 Silverlight 应用程序,或者只创建一个简单的 HTML 页面来托管它。保持对话框不变,并确保您已从“Silverlight 版本”组合框中选择了 Silverlight 4,然后点击“确定”继续。
现在,让我们看看 Visual Studio 为我们创建了什么。在“解决方案资源管理器”中,我们可以看到 Visual Studio 创建了两个项目,一个是 Silverlight 项目,另一个是将用于托管此 Silverlight 应用程序的 Web 项目。
查看 Web 项目,我们可以看到 VS 在该项目中包含了两个测试页面,第一个是 ASPX 页面,第二个是简单的 HTML 页面,两者都定义了 Silverlight 插件,并且当您浏览到它们时,它们都准备好显示您的 Silverlight 应用程序。区别在于 ASPX 页面可以定义 ASP.NET 元素和代码,而简单的静态 HTML 则不能。
回到 Silverlight 应用程序,我们可以看到它定义了 4 个文件:
- App.xaml:
定义应用程序范围的界面元素。 - App.xaml.cs(C# 代码文件,链接到 App.xaml)
定义启动逻辑和任何其他应用程序范围的代码。 - MainPage.xaml:
主应用程序页面;包含界面元素。 - MainPage.xaml.cs(C# 代码文件,链接到 MainPage.cs)
主应用程序页面的业务逻辑和代码。
然后我们有两个页面,第一个是 App.xaml,它定义了应用程序范围的元素和代码(在 App.xaml.cs 中),第二个是 MainPage.xaml,它定义了应用程序的主页面,您可以在其中定义界面元素并在 MainPage.xaml.cs 中编写代码。
现在让我们设计我们的界面。转到 MainPage.xaml,并在 <Grid>
元素内,定义一个 Button
(您也可以将按钮从“工具箱”拖到设计器上进行定义)。
<Button Width="100" Height="25" Content="Say Hello" Click="Button_Click" />
从上面的代码行可以看出,我们使用 <Button>
元素定义了一个 Button
控件,并且我们还使用元素属性设置了控件的特性和属性。为了让我们的按钮响应用户单击,我们将 Click
事件连接到了 Button_Click()
函数,我们将在代码文件中定义它。
现在转到 MainPage.xaml.cs 并为按钮定义 Click
事件处理程序:
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hello, World!");
}
现在运行应用程序并进行尝试。
在我们离开本节之前,让我们看一下 Silverlight 所需的插件。转到 Web 项目的测试页面末尾,向下滚动直到找到定义插件的 <object>
元素。简单来说,Silverlight 应用程序只需要以下 HTML 代码来定义其插件:
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SilverlightApplication1.xap"/>
...
</object>
<iframe id="_sl_historyFrame"
style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>
正如您所见,我们通过使用 source 参数引用了页面中的 XAP 文件。当您在 Visual Studio 中构建应用程序时,它会在测试页面旁边创建一个名为 ClientBin
的文件夹,并将 XAP 文件放在其中,以便您可以在页面中引用它。
很清楚,不是吗?
摘要
- Silverlight 是一个用于编写和运行富互联网应用程序 (RIA) 的跨平台应用程序框架。
- 其运行时作为跨浏览器、跨平台、跨设备的插件提供。
- 它是 Windows Phone 的主要开发框架。
- 它是 WPF 的一个子集,因此依赖 XAML 进行 UI 设计。
- 您使用 XAML 定义界面,并使用您喜欢的 .NET 语言编写代码。
- XAML 标记和代码会被编译成 .NET 程序集,并压缩成 XAP 文件。
- 然后,XAP 文件会由一个准备好的网页引用,当用户导航到该页面时,XAP 文件会被下载到客户端 PC。
- 版本 4 是 Silverlight 当前的稳定版本。
- Silverlight 5 目前处于 Beta 阶段,并将很快发布。
- 您使用 Visual Studio 2010 和 Microsoft Expression Studio 来开发和设计您的 Silverlight 应用程序。
- 如果您是设计师,Microsoft Expression Studio 是更优的选择。
历史
- 2011 年 5 月 22 日:首次发布