65.9K
CodeProject 正在变化。 阅读更多。
Home

Silverlight 技术基础知识

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (89投票s)

2010 年 6 月 12 日

CPOL

32分钟阅读

viewsIcon

283934

在本文中,您将了解 Silverlight 技术的基础知识。

目录

  1. 什么是 Microsoft Silverlight?
  2. 为什么使用 Silverlight?
  3. Silverlight 支持哪些平台?
  4. Silverlight 支持哪些浏览器?
  5. Silverlight 的系统要求是什么?
  6. 什么是 Moonlight?
  7. Moonlight 的目标是什么?
  8. Silverlight 是免费的吗?
  9. Silverlight 1.0 和 2 之间有什么区别?
  10. 什么是 Silverlight 插件?
  11. 什么是 Silverlight 运行时?
  12. 什么是 Silverlight SDK?
  13. 开发 Silverlight 应用程序需要哪些工具?
  14. 使用哪个工具 - Expression Studio 还是 Visual Studio?
  15. 到目前为止有哪些 Silverlight 版本可用?
  16. 什么是 .xap 文件?
  17. XAP 如何工作?
  18. 如何使用 .xap 文件?
  19. 我们可以在 Silverlight 应用程序项目中添加对类库项目的引用吗?
  20. 什么是 Silverlight.js 文件?
  21. ClientBin 文件夹的用途是什么?
  22. 如何更改 Silverlight 应用程序的默认页面?
  23. 什么是 XAML?
  24. 什么是 AppManifest.xml 文件?
  25. 一个 .xap 文件包含哪些文件?
  26. 什么是 app.xaml?
  27. Silverlight 的官方名称是什么?
  28. Silverlight 的主要功能和优点是什么?
  29. 什么是 MainPage.xaml?
  30. Silverlight 是用什么语言开发的?
  31. 我可以在 Silverlight 中使用 WCF 和 ASP.NET Web 服务吗?
  32. 什么是 Deep Zoom 和 Deep Zoom Composer?
  33. WPF 和 Silverlight 之间有什么区别?
  34. Silverlight 和 Flash 之间有什么区别?
  35. Silverlight 和 ASP.NET AJAX 之间有什么区别?
  36. Silverlight 应用程序中有哪些不同的布局控件?
  37. XAML 文件是在运行时编译还是构建的?
  38. Silverlight 的长期目标或愿景是什么?
  39. 我需要安装 .NET Framework 才能使用 Silverlight 吗?
  40. 除了 Silverlight 之外,还有哪些 RIA 技术?
  41. 什么是 RIA?
  42. 什么是 .NET RIA Services?
  43. Silverlight 中的设计文件和代码隐藏文件是什么?
  44. 谁在使用 Silverlight?
  45. Silverlight 的表示标记中缺少哪些将在 WPF 中支持的功能?
  46. 我需要更多内存、更快的处理器或更好的图形处理单元 (GPU) 吗?
  47. Silverlight 如何改进 Microsoft 的开发系统?
  48. Silverlight 和 ASP.NET 之间的关系和区别是什么?
  49. 何时使用 Silverlight、ASP.NET 或两者兼而有之?
  50. Silverlight 4 的新功能有哪些?

概述

最近,我一直在深入研究 Silverlight,并浏览了一些网站,找到了一些资料,我想与大家分享。在这篇文章中,我除了花几个小时将所有问题汇总到一个地方外,没有做什么了不起的事情。

在本文中,您将了解 Silverlight 技术的基础知识。

谁应该阅读本文?

本文适合所有希望通过 Silverlight 技术提升技能的人。

  • 如果您正在为 Microsoft 面试做准备,本文将会有所帮助。
  • 如果您是 Silverlight 新手并想了解更多信息,本文将会有所帮助。
  • 如果您已经熟悉 Silverlight 但正在寻找复习知识,本文将会有所帮助。
  • 如果您正在寻找 Silverlight 技术的快速教程,本文将会有所帮助。
  • 如果您正在寻找 Silverlight 技术的常见问题解答 (FAQ),本文将会有所帮助。

您可以在此处阅读我关于 Silverlight 的其他文章

1. 什么是 Microsoft Silverlight?

  • Silverlight 是一项基于 Web 的技术,由 Microsoft 于 2007 年 4 月推出。Silverlight 被认为是 Adobe Flash 的竞争对手。
  • Silverlight 是 Microsoft 的跨浏览器、跨平台客户端框架实现,它允许设计人员和开发人员在网页中嵌入富 Internet 应用程序 (RIA)。
  • Silverlight 是一个浏览器插件,大小约为 6MB;它是客户端免费软件,可在任何客户端浏览器上轻松快速地(不到 10 秒)进行一次安装。
  • 它支持高级数据集成、多线程、使用 IIS Smooth Streaming 进行高清视频播放以及内置内容保护。Silverlight 为广泛的业务和消费者场景提供了在线和离线应用程序。
  • Silverlight 技术的设计目标之一是填补 Windows 应用程序和 Web 应用程序在创建图形用户界面 (GUI) 方面的差距。
  • Silverlight 应用程序作为客户端应用程序运行,无需刷新浏览器即可更新 UI。但是,由于内置了 .NET Framework,Silverlight 应用程序可以轻松地与服务器端控件和服务集成。通过使用 Silverlight 的 .NET Framework 实现,开发人员可以轻松地将现有库和代码集成到 Silverlight 应用程序中。

2. 为什么使用 Silverlight?

  • 支持 .NET Framework - 如果您已经是 .NET 开发人员,那么开始编写 Silverlight 程序很容易。
  • 支持托管代码 - 您可以使用 .NET CLR 支持的任何语言编写程序,如 C#、VB.NET、动态语言(IronPython、IronRuby)。
  • 更好的开发工具 - Visual Studio 2010、Expression Blend。
  • 庞大的社区 - 与 Flash 相比,有更多的学习资源可用。
  • 与 WPF、LINQ 等企业级技术集成……
  • Silverlight 将 XAML 声明性语言与 .NET Framework 相结合。
  • 它是一项跨浏览器、跨平台的 [technology],可在任何运行它的地方提供一致的用户体验。
  • Silverlight 插件可在几秒钟内安装,并且占用空间很小。
  • 安装插件后,用户无需在工作站上安装任何内容即可运行 Silverlight 应用程序。用户可以从他们正在访问的任何浏览器访问这些应用程序。
  • 它运行一个客户端应用程序,可以读取数据并更新 UI,而无需刷新整个页面来打断用户。
  • 它可以与服务器进行异步通信,从而使 UI 在等待服务器响应时能够继续运行。
  • 它提供丰富的视频、音频和图形。

3. Silverlight 支持哪些平台?

  • Mac OS
  • Windows Vista
  • Windows XP SP2
  • Windows 2000
  • Windows Server 2003
  • Linux (Moonlight)

4. Silverlight 支持哪些浏览器?

  • Microsoft - Internet Explorer 6、7、8
  • Mozilla - Firefox 2 和 3
  • Apple - Safari 3 和 4
  • Google - Chrome

5. Silverlight 的系统要求是什么?

Microsoft Silverlight 及相关技术的系统要求如下。

Windows

  • 操作系统:Windows 7、Windows Vista、Windows XP Service Pack 2
  • Intel® Pentium® III 450MHz 或更快的处理器(或同等产品)
  • 128MB RAM

Mac OS

  • 操作系统:Apple Mac OS X 10.4.8 或更高版本
  • Intel Core™ Duo 1.83GHz 或更快的处理器
  • 128MB RAM

Linux

  • Moonlight

6. 什么是 Moonlight?

Moonlight 是 Silverlight 的开源实现,主要用于 Linux 和其他基于 Unix/X11 的操作系统。2007 年 9 月,Microsoft 和 Novell 宣布了技术合作,其中包括访问 Microsoft 的 Silverlight 测试套件以及为 Linux 用户分发包含视频和音频的许可编解码器的媒体包。

Moonlight 2 于 2009 年 12 月 17 日发布

7. Moonlight 的目标是什么?

  • 在 Linux 上运行 Silverlight 应用程序。
  • 提供 Linux SDK 来构建 Silverlight 应用程序。
  • 重用为桌面应用程序构建的 Silverlight 引擎。

8. Silverlight 是免费的吗?

是的,Microsoft 已免费提供 Silverlight 浏览器插件,适用于所有支持的平台和浏览器。

9. Silverlight 1.0 和 2 之间有什么区别?

  • Silverlight 1 完全基于 AJAX 和 JavaScript。所有代码都必须用 JavaScript 和 XAML 编写。
  • Silverlight 2 支持托管代码。安装 Silverlight 2 运行时时,它会在客户端计算机上安装一个受限版本的 .NET 运行时。这允许 .NET 程序员编写将在客户端 PC 上执行的托管代码,并为用户提供更好的用户体验。当然,其中内置了安全限制,以限制代码对客户端计算机的访问。
  • 最大的变化是 .NET Framework 的实现。如果您熟悉 Silverlight 1.0,那么您会习惯于用 JavaScript 编写应用程序功能。您仍然可以使用 JavaScript 实现功能;但是,您现在也可以使用 C#、Visual Basic、Python、Ruby 和托管 JavaScript 来实现功能。
  • 另一个主要变化是引入了 XAP 包。在 Silverlight 1.0 中,Silverlight 对象直接引用嵌入在浏览器中的 XAML 代码。然而,在 Silverlight 2 中,嵌入对象引用了一个 XAP 包,其中包含运行 Silverlight 应用程序所需的 XAP 文件、程序集和资源。

10. 什么是 Silverlight 插件?

  • Silverlight 插件是一个非常轻量级的组件,用户访问 Silverlight 应用程序需要它。插件的下载和安装只需几分钟,并且不占用太多硬盘空间。
  • Silverlight 插件负责访问网页中的 Silverlight 对象,下载并访问 XAP 包,设置程序环境,并开始应用程序执行。
  • 当显示包含 Silverlight 应用程序的网页时,如果插件尚未安装,应为用户提供一个链接,以便从 Microsoft 下载该插件。

11. 什么是 Silverlight 运行时?

Silverlight 运行时是一个浏览器插件,用于支持启用了 Silverlight 的应用程序。如果未安装 Silverlight 运行时,浏览器将无法在浏览器中运行 Silverlight 元素。您可以设置 Silverlight 标签,以便在浏览器中启动应用程序时,浏览器会自动提示用户下载并安装 Silverlight 插件。

在客户端安装运行时是一次性操作。安装后,当浏览器中加载任何 Silverlight 应用程序时,它都会自动启动。

注意:Silverlight 插件和运行时是相同的;但我在此处给出了两个定义。

12. 什么是 Silverlight SDK?

Silverlight SDK 是一套工具、文档、示例和模板,供 Web 开发人员轻松开发启用 Silverlight 的应用程序。SDK 对于开发 Silverlight 应用程序来说并非强制性;但是,SDK 将使开发更加容易。

13. 开发 Silverlight 应用程序需要哪些工具?

要在 Web 浏览器中运行 Silverlight 应用程序,您需要在客户端浏览器上安装 Silverlight 运行时作为插件。这是 .NET 运行时的轻量级版本。

但是,要开发 Silverlight 应用程序,您需要更多东西。

Silverlight SDK:这包括编译和构建 Silverlight 控件所需的工具集。

如果您习惯于使用记事本编写 HTML 并从控制台工具编译 .NET 应用程序,那么您只需要 Silverlight SDK 即可开发 Silverlight 应用程序。

然而,大多数人使用某种 IDE 来更快地开发应用程序。

Microsoft 提供两种独立的工具来开发 Silverlight 应用程序

  • Microsoft Expression Studio - 此工具专为 Web 设计人员创建 Silverlight 应用程序的丰富视觉元素而设计。推荐 Expression Studio 用于创建具有增强视觉内容和图形的富 Internet 应用程序的 Web 设计人员。提供了许多用于创建增强图形元素的功能,以及大量用于选择颜色、字体等的选项。
  • Microsoft Visual Studio - 这是 Microsoft 用于开发 .NET 应用程序的集成开发环境。程序员可以使用 Visual Studio 开发需要编程的 Silverlight 应用程序。Visual Studio 允许程序员使用任何 .NET 语言(如 C#、VB.NET 等)开发复杂的 Silverlight 应用程序。

以下是您可以使用的一些其他工具

  • 安装 Deep Zoom Composer - 此工具允许您准备图像以用于 Silverlight 3 中的 Deep Zoom 功能。
  • 下载 Silverlight Toolkit - 此工具包是 Microsoft 的一个项目,包含 Silverlight 控件、组件和实用程序,可以下载并在 Silverlight 应用程序中使用。它包括完整的源代码、示例和测试。
  • 下载 .NET RIA Services - Microsoft .NET RIA Services 通过整合 ASP.NET 和 Silverlight 平台来简化传统的 N 层应用程序模式。RIA Services 提供了一种编写在中层运行的应用程序逻辑并控制对查询、更改和自定义操作的数据访问的模式。

14. 使用哪个工具 - Expression Studio 还是 Visual Studio?

如果您的 Silverlight 应用程序仅包含图形和视觉元素,则可以使用 Expression Studio。但是,如果您是程序员,并且您的 Silverlight 应用程序包含编程逻辑,那么您可能更倾向于选择 Visual Studio。

15. 到目前为止有哪些 Silverlight 版本可用?

  • Silverlight 1.0:Silverlight 1.0,代号为 Windows Presentation Foundation/Everywhere (WPF/E),包含负责用户界面 (UI)、交互性和用户输入、基本 UI 控件、图形和动画、媒体播放、数字版权管理 (DRM) 以及 DOM 集成的核心表示框架。
  • Silverlight 2:Silverlight 2(以前称为 1.1 版本)包含 .NET Framework 的一个版本,实现了与 .NET Framework 3.0 相同的完整公共语言运行时 (CLR) 版本。XAML 标记和代码都被编译成 .NET 程序集,然后使用 Zip 压缩并存储在 .xap 文件中。
  • Silverlight 3:Silverlight 版本 3 于 2009 年 7 月 9 日发布,它是 Silverlight 2.0 的扩展,主要在图形功能、媒体管理、应用程序开发领域(附加控件、增强的绑定支持和浏览器外功能)以及与设计人员的 Expression Blend 3 工具集成方面提供了改进。
  • Silverlight 4:Silverlight 版本 4 于 2010 年 4 月 15 日发布(同时发布了 Silverlight 4 开发人员工具)。

16. 什么是 .xap 文件?

一个 .xap 文件是一个基于 Silverlight 的应用程序包 (.xap),在构建 Silverlight 项目时生成。一个 .xap 文件是 Silverlight 应用程序的压缩输出文件。该 .xap 文件包含 AppManifest.xaml、Silverlight 项目的编译输出程序集 (.dll) 以及 Silverlight 应用程序引用的资源文件。

  • 像 .aspx 文件和 .html 文件这样的网页通过在 HTML 中使用 `<object>` 标签或在 ASP.NET 页面中使用 `` 标签来加载 .xap 文件来使用 Silverlight 组件。
  • “.xap”文件(发音为“zap”)使用标准的 Zip 压缩算法来最小化客户端下载大小。

将此文件重命名为 SilverlightTest.zip 并使用任何解压缩工具打开它。您可以看到它与其他 zip 文件一样,并且包含项目的输出 DLL 和另一个名为“AppManifest.xaml”的文件。

17. XAP 如何工作?

创建 .xap 文件(如下所述)后,Silverlight 2 插件会下载该文件并在单独的工作空间中运行它。

18. 如何使用 .xap 文件?

一个 .xap 文件用于包含和传输托管代码应用程序的程序集和资源。此托管代码应用程序必须在 Silverlight 2 浏览器插件中运行。

19. 我们可以在 Silverlight 应用程序项目中添加对类库项目的引用吗?

否,您不能将类库项目添加到 Silverlight 应用程序项目中。您只能将另一个 Silverlight 应用程序项目的引用添加到 Silverlight 应用程序项目中。

但是,您可以添加对 Web 服务或 WCF 服务的引用。

20. 什么是 Silverlight.js 文件?

Silverlight.js 是一个辅助文件,它使网站能够创建高级 Silverlight 安装和实例化体验。您可以调用此文件中定义的 `createObject` 和 `createObjectEx` 函数来将 Silverlight 插件嵌入到网页中。

21. ClientBin 文件夹的用途是什么?

ClientBin 文件夹用于放置 Silverlight 应用程序的 .xap 文件。您可以将其放在 Web 应用程序的任何位置,但这是 Silverlight 使用的默认位置。

22. 如何更改 Silverlight 应用程序的默认页面?

要更改 Silverlight 应用程序的默认页面,您需要在 `App.xaml` 文件的 `Application_Startup` 事件中设置 `RootVisual` 属性。

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new MainPage();
}

23. 什么是 XAML?

XAML 代表 eXtended Application Markup Language。XAML 包含 XML,用于声明性地指定 Silverlight 或 WPF 应用程序的用户界面。例如,如果您需要显示一个矩形,您需要使用以下 XAML:

<UserControl x:Class="SilverlightApplication1.SilverlightControl1" 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  Width="400" Height="300">
    <Canvas Width="500" Height="500" Background="White">
        <Rectangle Canvas.Left="75" Canvas.Top="90" 
                  Fill="red" Width="100" Height="100" />
    </Canvas>
</UserControl>
输出

当上述 XAML 执行时,它将显示一个填充红色的矩形。您可能会注意到 XAML 在性质上与 HTML 非常相似。

XAML 代表可扩展应用程序标记语言,它是一种声明性标记语言,遵循 XML 规则,用于在 WPF 和 Silverlight 技术中开发用户界面。XAML 文件是通常具有 .xaml 扩展名的 XML 文件,它通过使用代码隐藏文件将 UI 定义与运行时逻辑分开,并通过部分类定义与标记连接。

XAML 具有一组规则,这些规则将对象元素映射到类或结构,将属性映射到属性或事件,将 XML 命名空间映射到 CLR 命名空间。XAML 元素映射到引用的程序集中定义的 Microsoft .NET 类型,而属性映射到这些类型的成员。

24. 什么是 AppManifest.xml 文件?

首先,让我们看一个 `AppManifest.xaml` 文件的示例

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  EntryPointAssembly="SilverlightApplication1" 
  EntryPointType="SilverlightApplication1.App" 
  RuntimeVersion="2.0.30226.2">
    <Deployment.Parts>
        <AssemblyPart x:Name="SilverlightApplication1" 
           Source="SilverlightApplication1.dll" />
        <AssemblyPart x:Name="System.Windows.Controls" 
           Source="System.Windows.Controls.dll" />
        <AssemblyPart x:Name="System.Windows.Controls.Extended" 
           Source="System.Windows.Controls.Extended.dll" />
    </Deployment.Parts>
</Deploymnt>

`AppManifest.xaml` 中的第一个元素是 `Deployment` 节点。此节点定义了应用程序,并包含子 `AssemblyPart` 节点。

如您所见,`AssemblyPart` 节点定义了 .xap 文件中包含哪些程序集(DLL),并为它们各自命名。

现在,如果您回顾顶部,您会看到 `Deployment` 节点具有 `EntryPointAssembly` 和 `EntryPointType` 属性。`EntryPointAssembly` 属性定义了下面(作为子 `AssemblyPart` 节点)定义的哪个程序集是应用程序的主程序集(DLL)。而 `EntryPointType` 属性指定了在 `EntryPointAssembly` 属性中定义的程序集(DLL)中的类是启动应用程序要实例化的主类。

`Deployment` 节点还有一个 `RuntimeVersion` 属性,用于定义应用程序所构建的 Silverlight 版本。

25. 一个 .xap 文件包含哪些文件?

该 .xap 文件包含一个应用程序清单 (`AppManifest.xaml`) 文件以及应用程序所需的所有必需 DLL。包含的第一个 DLL 是您的应用程序的编译版本,其名称与您的应用程序名称相同。在我的测试中,我创建了一个名为“SilverlightApplication1”的应用程序,因此 DLL 名为“SilverlightApplication1.dll”。其余的 DLL 是应用程序所需的依赖项。

26. 什么是 app.xaml?

`App.xaml` 是 Silverlight 应用程序用于声明共享资源的 XAML 文件,如画笔、各种样式对象、模板等。此外,`app.xaml.cs` 的代码隐藏文件用于处理全局应用程序级别的事件,如 `Application_Startup`、`Application_Exit` 和 `Application_UnhandledException`(类似于 ASP.NET 应用程序的 `Global.asax` 文件)。

当 Visual Studio 自动创建 `app.xaml` 文件时,它会创建一些带有默认代码的事件处理程序。您可以适当地更改代码。

private void Application_Startup(object sender, StartupEventArgs e)
{
}

private void Application_Exit(object sender, EventArgs e)
{
}

private void Application_UnhandledException(object sender, 
             ApplicationUnhandledExceptionEventArgs e)
{
}

对于 ASP.NET 开发人员来说,上面的代码看起来会很熟悉。这类似于 `Global.asax` 中的应用程序级别事件处理程序。

27. Silverlight 的官方名称是什么?

Silverlight 以前的代号是“WPF/E”。

28. Silverlight 的主要功能和优点是什么?

  • 引人注目的跨平台用户体验。
  • 灵活的编程模型,支持协作工具。
  • 高质量媒体,低成本交付。
  • 连接到数据、服务器和服务。

29. 什么是 MainPage.xaml?

当您使用 Visual Studio 创建 Silverlight 项目时,它会创建一个名为“MainPage.xaml”的默认 XAML 文件。这只是 Visual Studio 创建的一个占位符起始页,不包含任何可见的 UI 元素。 `MainPage.xaml` 文件的默认内容如下所示:

<UserControl x:Class="SilverlightApplication1.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
    </Grid>
</UserControl>

30. Silverlight 是用什么语言开发的?

它是使用 C# 和 C++ 的组合开发的。

31. 我可以在 Silverlight 中使用 WCF 和 ASP.NET Web 服务吗?

是的,您可以。

32. 什么是 Deep Zoom 和 Deep Zoom Composer?

Deep Zoom 提供了在 Silverlight 中交互式查看高分辨率图像的功能。您可以快速地放大和缩小图像,而不会影响应用程序的性能。Deep Zoom 提供平滑的就地缩放和平移。

DeepZoom Composer 允许您创建为平滑缩放和平移而构建的高分辨率图像合成。DeepZoom Composer 完全免费且易于使用 - 只需加载所有高分辨率图像并在屏幕上创建合成。

Deep Zoom Composer 是一个允许准备图像以用于 Silverlight 3 中 Deep Zoom 功能的工具。

33. WPF 和 Silverlight 之间有什么区别?

Silverlight 和 Windows Presentation Foundation (WPF) 是 Microsoft 的两个不同产品,但有很多重叠。Silverlight 在功能和特性方面是 WPF 的一个子集。

Silverlight 是一项 Microsoft 技术,与 Adobe 的 Flash 竞争,旨在开发基于 Web 的丰富 Internet 应用程序。

WPF 是一项 Microsoft 技术,旨在为桌面平台开发增强的图形应用程序。此外,WPF 应用程序还可以托管在提供丰富图形功能的 Web 浏览器中。基于 WPF 技术开发的 Web 浏览器应用程序 (WBA) 使用 XAML 为浏览器应用程序托管用户界面。XAML 代表可扩展应用程序标记语言,它是 Microsoft 的一种新型声明性编程模型。XAML 文件作为独立文件托管在 Web 服务器上,但会下载到浏览器,并由客户端浏览器中的 .NET 运行时转换为用户界面。

WPF 在 .NET 运行时上运行,开发人员可以利用丰富的 .NET Framework 和 WPF 库来构建非常出色的 Windows 应用程序。WPF 支持 3D 图形、复杂的动画、硬件加速等。

Silverlight 使用 XAML 解析器的特定实现,该解析器是 Silverlight 核心安装的一部分。在某些情况下,解析行为与 Windows Presentation Foundation (WPF) 中的解析行为不同,WPF 也具有特定的实现。

以表格形式

Silverlight WPF

定义

Silverlight 是 Microsoft 用于构建下一代 Web 客户端应用程序的最新开发平台。

Windows Presentation Foundation (WPF) 是 Microsoft 用于构建下一代 Windows 客户端应用程序的最新开发平台。

子集

Silverlight 通常被认为是 WPF 的子集,它是一种基于 XAML 的技术,运行在浏览器插件的沙盒环境中。

WPF 通常被认为是 .NET Framework 的子集,它是一种基于 XAML 的技术。

GUI

Silverlight 将用于为 Web 客户端用户开发富 Internet 应用程序 (RIA)。

WPF 将用于为 Windows 客户端用户开发丰富的 Windows 图形用户界面 (GUI)。

支持

跨操作系统、跨浏览器、跨设备。

仅限 Windows。

所需软件

Silverlight 是大多数浏览器可用的附加机制;为了在客户端计算机上运行 Silverlight 应用程序,我们需要在客户端计算机上安装一次 Silverlight 软件。

另一方面,WPF 不支持任何插件机制;相反,我们需要安装一个完整的 WPF 客户端应用程序才能在客户端使用 WPF 应用程序。

框架支持

Silverlight 拥有一个非常小、自有的丰富基类库,以使插件尽可能小。它针对大小进行了高度优化,并且是完整 .NET Framework 的一小部分,用于嵌入到应用程序中。

另一方面,WPF 可以完全访问主 .NET Framework 及其所有关联的程序集。

部署

Silverlight 应用程序托管在 Web 服务器和网页中。为了最小化客户端下载大小,Silverlight 使用 XAP 存档。XAP 存档是 Silverlight 应用程序的 zip 压缩存档,外加一个描述内容的清单文件。使用 Silverlight 项目模板时,Visual Studio 会自动生成 XAP 存档。

WPF 应用程序可以部署为独立应用程序、ClickOnce 应用程序或 XAML 浏览器应用程序。

34. Silverlight 和 Flash 之间有什么区别?

Adobe Flash 是 Silverlight 最受欢迎的竞争对手,支持浏览器插件并允许执行丰富的 Web 内容。Flash 不是一项新技术,与 Silverlight 相比,它已经存在了很长时间。但它的社区规模并没有预期的那么大;这可能是因为开发者对有限的开发工具不太了解。Flash 使用 ActionScript 作为编程语言,使用 Flex 作为编程环境,而大多数开发人员对这些技术并不熟悉。

对于 ASP.NET 开发人员来说,使用 Flash 内容扩展他们的网站并不那么简单。他们需要学习 ActionScript 和 Flex 等开发环境。除此之外,没有办法使用服务器端 .NET 代码生成 Flash 内容,这意味着集成 ASP.NET 内容和 Flash 内容很困难。

Silverlight 旨在为 .NET 开发人员提供更好的创建丰富 Web 内容的选项。Silverlight 提供了一个功能与 Flash 类似但专为 .NET 从头设计的浏览器插件。Silverlight 原生支持 C# 语言,并使用一系列 .NET 概念。因此,开发人员可以使用他们用于服务器端代码(如 C# 和 VB)的相同语言编写 Silverlight 的客户端代码,并使用许多相同的抽象(包括流、控件、集合、泛型和 LINQ)。

35. Silverlight 和 ASP.NET AJAX 之间有什么区别?

Microsoft ASP.NET AJAX,一组内置于 ASP.NET 3.5 的 JavaScript 库,可作为 ASP.NET 2.0 的独立下载。作为 ASP.NET 3.5 和 ASP.NET 3.5 的 AJAX 控件工具包的组成部分,ASP.NET AJAX 客户端和服务器端库现在与 Visual Studio 2008 集成得更好。客户端库允许您实现客户端级别的处理,例如处理和验证最终用户输入的信息、刷新网页的一部分以及开发丰富、交互式的用户界面。您还可以有效地将客户端库组件与服务器端 ASP.NET 控件库在异步模式下集成。ASP.NET AJAX 的关键技术驱动因素是脚本。总的来说,基于脚本的 Web 应用程序会因不同的浏览器设置(例如,默认情况下未启用 JavaScript)而在 PC 和移动设备上遇到各种挑战。因此,对于企业来说,脚本通常不是开发安全且可扩展的 RIA 的最佳策略。

ASP.NET AJAX 支持有限的 RIA 功能,不支持有效的多媒体集成、托管代码隐藏集成或元数据和信息管理。Microsoft ASP.NET AJAX 是构建 RIA 的一种广泛接受的模型,但很有可能,由于有了 Silverlight 这个选项,.NET 开发人员会将 ASP.NET AJAX 应用程序迁移到 Silverlight RIA。如果您想了解更多关于 Microsoft ASP.NET AJAX 的信息,请访问 www.asp.net/ajax/。

36. Silverlight 中有哪些不同的布局控件?

Silverlight 提供了三种不同类型的布局控件

  • Canvas - 在 x、y 空间中绝对定位子元素。
  • StackPanel - 在水平或垂直堆栈中相对定位子元素。
  • Grid - 在行和列中定位子元素。

您必须将布局面板添加到您创建的每个 XAML 页面中。所有其他 UI 元素都必须添加到布局面板之一中。每个页面只能有一个布局面板控件。

37. XAML 文件是在运行时编译还是构建的?

XAML 文件通常是在运行时编译而不是解析的。但它也支持运行时解析。当我们构建一个基于 XAML 的项目时,您会在 obi\Debug 文件夹中看到一个扩展名为 .g.cs 的文件。因此,对于每个 XAML 文件,您都会找到一个 .g.cs 文件。例如,MainPage.XAML 在 obi\Debug 文件夹中会有一个 MainPage.g.cs 文件。简而言之,在运行时,您实际上看不到 XAML 文件。但是,如果您想在运行时解析 XAML 文件,它也允许这样做。

38. Silverlight 的长期目标或愿景是什么?

  • Microsoft Silverlight 是一个跨浏览器、跨平台、跨设备的插件,用于为 Web 提供下一代基于 .NET 的媒体体验和丰富的交互式应用程序。
  • Silverlight 提供了一个灵活的编程模型,支持 AJAX、VB、C#、IronPython 和 IronRuby,并与现有的 Web 应用程序集成。
  • 通过使用 Expression Studio 和 Visual Studio,设计人员和开发人员可以利用他们今天的技能更有效地协作,以照亮明天的 Web。
  • 通过利用 Silverlight 对 .NET、高清视频、经济高效的高级流媒体、通过 Deep Zoom 技术无与伦比的高分辨率交互性以及控件的支持,企业可以触达 Web、桌面和设备上的新市场。

39. 我需要安装 .NET Framework 才能使用 Silverlight 吗?

答案是“否”——.NET Framework 的跨平台版本包含在 6MB 的 Silverlight 4 下载中,这意味着您无需在客户端安装任何额外的东西即可在浏览器中访问 Silverlight 应用程序。

Silverlight 版的 .NET Framework 包含与完整 .NET Framework 相同的 CLR 引擎(相同的 GC、类型系统、JIT 引擎)以及 .NET Framework 命名空间库的子集。您可以通过在 Visual Studio 中创建新的 Silverlight 应用程序时打开对象浏览器来查看所有类/命名空间的完整列表。

40. 除了 Silverlight 之外,还有哪些 RIA 技术?

Adobe Flex、Java FX、Adobe Flash 是除了 Silverlight 之外的一些其他 RIA 技术。

41. 什么是 RIA?

RIA 代表富 Internet 应用程序,它们是具有丰富用户界面(包括媒体元素,如音频、视频等)的 Web 应用程序。您可以将它们视为类似于强大而丰富的桌面应用程序,只是 RIA 应用程序是基于 Web 的。

42. 什么是 .NET RIA Services?

Microsoft .NET RIA Services 通过结合 ASP.NET 和 Silverlight 平台来帮助简化 N 层应用程序模式。RIA Services 提供了一种模式,您可以使用该模式编写可以在中层运行的应用程序逻辑,并控制对查询、更改和自定义操作的数据访问。它还通过与客户端的 Silverlight 组件和中间层的 ASP.NET 集成,为数据验证、身份验证和角色提供支持。

43. Silverlight 中的设计文件和代码隐藏文件是什么?

Silverlight 应用程序的用户界面元素在 XAML 文件中定义。Silverlight 应用程序的逻辑和功能使用托管的 .NET 代码隐藏文件实现,这些文件与 XAML 文件共享相同的类。

44. 谁在使用 Silverlight?

Yahoo! Japan、NBC、Continental Airlines、NASA、Indian Premier League 和 National Instruments 是目前使用 Silverlight 增强业务的一些组织。

45. Silverlight 的表示标记中缺少哪些将在 WPF 中支持的功能?

WPF 的一些高端 Windows 特定功能,如真实 3D、硬件加速视频以及完整的文档支持,将不会在 Silverlight 中支持。这是有意为之,目的是为了实现 Silverlight 的跨浏览器、跨平台覆盖场景,这需要一个轻量级的插件。话虽如此,Silverlight 将提供一个统一的运行时,可以在 Mac OS 和 Windows 的浏览器上呈现相同的体验。

46. 我需要更多内存、更快的处理器或更好的图形处理单元 (GPU) 吗?

Microsoft 在设计 Silverlight 时考虑了在最广泛的系统配置上提供高保真体验的能力。某些功能,如高清视频,可能受益于新式个人计算机的强大功能。

47. Silverlight 如何改进 Microsoft 的开发系统?

Silverlight 是一个跨浏览器、跨平台的插件,用于为 Web 提供下一代媒体体验和丰富的交互式应用程序 (RIA)。示例如下:

  • 对于基于 ASP.NET 的 Web 应用程序,Silverlight 提供了一个丰富的 UI 前端,通过一致的编程模型,增加了对更丰富的交互性、媒体和音频的支持。
  • 对于基于 Microsoft SharePoint 的内容,Silverlight 提供了创建丰富 Web 部件的能力。
  • 对于 Windows Live 服务,Silverlight 提供了更有效地消耗服务和 API 的能力。

48. Silverlight 和 ASP.NET 之间的关系和区别是什么?

从技术上讲,Silverlight 和 ASP.NET 完全不同。主要区别如下:

  • Silverlight 完全在客户端运行,而 ASP.NET 主要在服务器上运行,但也有一些部分在客户端运行。
  • 当事件触发时,Silverlight 在客户端处理该事件,但在 ASP.NET 中,浏览器将向服务器发出 HTTP POST 请求,在服务器处理完请求后,它会将新的 HTML 页面发送到客户端。
  • Silverlight 应用程序通过编写 XAML 或代码向 Silverlight 渲染引擎发送渲染命令,Silverlight 渲染引擎将处理渲染任务。另一方面,ASP.NET 没有渲染引擎。它在服务器上生成一个 HTML 文件,将其发送到客户端,然后允许浏览器解析 HTML 文件并渲染内容。
  • Silverlight 不能直接与数据库协同工作;相反,它从 Web 服务中消耗数据,而 ASP.NET 在直接处理数据库方面具有强大的支持。

最重要的一点是了解什么在客户端运行,什么在服务器上运行,因为这将影响您系统的几乎所有部分。Silverlight 在客户端运行,ASP.NET 在服务器上运行。它们可以协同工作并且彼此兼容,但这需要一些时间和精力。

49. 何时使用 Silverlight、ASP.NET 或两者兼而有之?

这取决于不同的场景。以下是一些常见的方法:

  • 纯 Silverlight

    一种方法是完全移除 ASP.NET。如果您正在进行新开发,此解决方案效果最佳。您只需要处理 Silverlight,而不必担心集成问题。如果您需要与服务器通信,则编写 Web 服务,例如 WCF。当您需要将系统的一部分或全部移植到另一个托管环境甚至另一个平台时,它也会有所帮助,因为客户端和服务器是完全分离的。

  • 主要 ASP.NET,加上一个 Silverlight 区域

    这种方法通常用于 Silverlight 内容和 ASP.NET 内容之间关系不大的情况。例如,一个带有 Silverlight 媒体播放器的 ASP.NET 博客引擎在一个博客文章中。这种方法非常容易实现,并且可以触达最广泛的受众。例如,如果用户尚未安装 Silverlight,他仍然可以阅读博客文章,但无法观看视频。

  • 使用 ASP.NET AJAX 而不是 Silverlight

    ASP.NET AJAX 旨在与 ASP.NET 协同工作。它是 ASP.NET 的主要扩展。虽然 AJAX 不能为您提供 Silverlight 那样的高级用户体验,但对于许多场景来说,它应该足够了。如果您在 ASP.NET 方面经验丰富,但对 Silverlight 仍相当陌生,此方法也有所帮助。

    在此方法中,有两个分支。一种是通过使用 `UpdatePanel`、AJAX 控件工具包等来混合客户端和服务器代码。另一种方法是采用纯 AJAX 方法,其中您编写 HTML 和 JavaScript 而不是使用服务器控件,并通过调用 Web 服务与服务器通信。前者分支更容易实现,特别是如果您在 ASP.NET 方面经验丰富但缺乏 JavaScript 知识。后者分支在您希望将 AJAX 应用程序移植到 Silverlight 等其他技术时,在架构上证明更好,特别是因为您只需要重写客户端代码,而可以保留 Web 服务不变。后者的编程模型与 Silverlight 类似。因此,如果您在 Silverlight 方面有经验,则很少采用此方法。

  • 混合 Silverlight 和 ASP.NET

    更常见的是,您可能希望将现有的 ASP.NET 应用程序移植到 Silverlight,但又不想完全重写整个应用程序。这是最困难的方法,因为您混合了客户端和服务器端技术。

    在采用此方法之前,请考虑上述方法是否可以解决您的问题。问自己以下问题:

    1. 您是否真的需要丰富的交互式用户体验?

      这通常是面向消费者的应用程序的要求,但对于大多数业务应用程序,您只需要一个“良好”的用户体验,AJAX 就可以提供。

    2. 您能否在现有的 ASP.NET 应用程序中添加 Silverlight 区域而不是混合内容?

      这应该适用于大多数场景。例如,Windows Live Mail 是用 ASP.NET 构建的,其中包含一些 Silverlight 区域,例如一个幻灯片放映程序,允许您以增强的体验查看照片附件(实际上,大多数 Microsoft 创建的 Web 应用程序都采用这种方法)。

    3. 这是否是修订架构的好机会?

      大多数传统的 ASP.NET 应用程序使用 B/S 或三层架构,其中应用程序直接或通过业务逻辑层与数据库协同工作。在移植应用程序到其他平台时,这些架构会带来许多问题。在研究 Silverlight 时,这也是采用 SOA 的好机会。在业务逻辑层之上添加一个服务外观层,您可以从几乎任何客户端(例如 ASP.NET 应用程序和 Silverlight 应用程序)访问服务。如果您已经在使用 SOA,那么移植到 Silverlight 应该很简单,因为您只需要重写一个客户端应用程序。使用 SOA,ASP.NET AJAX 方法和 Silverlight 区域方法也将更容易实现。

    如果以上任何方法都不适用,您可能需要混合 Silverlight 内容和 ASP.NET。使用此方法时,请记住 Silverlight 无法调用 ASP.NET 服务器端事件处理程序,并且每次回发(无论是部分还是完整)都会导致 Silverlight 应用程序重新加载。

50. Silverlight 4 的新功能有哪些?

  • 支持 Google Chrome 浏览器。
  • 网络摄像头和麦克风支持。
  • 打印支持。
  • 在全屏模式下运行时,实现完全键盘访问。
  • 以编程方式访问用户本地文档文件夹。
  • 改进的鼠标支持,包括右键支持和鼠标滚轮支持。
  • 提升的信任级别和对本地组件对象模型 (COM) 对象的支持。
  • 新的通知支持,用于向最终用户显示消息。
  • 新的和增强的控件,例如 `RichTextBox` 和增强的 `DataGrid` 控件。
  • 对控件隐式主题的新支持。
  • 新的托管浏览器支持,用于在 Silverlight 中渲染 HTML。
  • WCF 数据层增强。
  • 本地化增强,支持双向文本。
  • 对托管可扩展性框架 (Managed Extensibility Framework) 的支持。
  • 增强的数据绑定支持。
  • 增强的动画效果。
  • 剪贴板和拖放支持。
  • Deep Zoom 性能增强。
  • WCF 富 Internet 应用程序 (RIA) 服务。
  • H.264 的内容保护,以及播放离线 DRM 保护媒体的支持。

结论

希望您喜欢这篇文章;请不要忘记在本文中写下您的评论,这将有助于我在未来的文章中改进。

非常感谢您阅读本文。

© . All rights reserved.