WPF与Silverlight 3.0的比较

21

在拉斯维加斯的 Microsoft Mix 大会上,宣布了 Silverlight 3.0 beta 的推出。

新版 Silverlight 带来的两个特性是 3D 图形和能够在浏览器之外运行应用程序,这似乎是 WPF(Windows Presentation Foundation)之前提供的两个主要特性。

我目前正在评估 WPF 和 Silverlight 用于我们公司未来的开发活动,并且这个公告让我对这两种 UI 技术的预期方向感到困惑,以及为什么我会选择其中一种。

最近有人使用 WPF 实现了一个新应用程序吗?如果有,是什么原因促使你做出了这个决定?考虑到 Silverlight 的变化,如果现在做出这个决定,你的决定是否会改变,如果不会,为什么?

任何建议都将不胜感激。

10个回答

13

我发现最大的区别在于您必须在Silverlight应用程序中采用异步模型。 这似乎是一个优点(实际上它确实可以是),但有时生活还是很困难。

同时,也存在一些限制,可能会带来真正的挑战,比如没有打印支持。

我建议在以下情况下选择Silverlight而不是WPF:

- 无需最佳性能(包括图形) - 可以解决缺少打印支持的问题(它将出现,我们只是不知道什么时候) - 不需要摄像头/麦克风支持 - 可以容忍异步应用程序/开发模型 - 可以容忍WCF的限制(目前不支持WS-Security) - 不需要在客户端存储大量数据。 - 不需要与Office等客户端应用程序直接集成。 - 有一个服务器来托管您的应用程序。


哇,你用了一种奇怪的方式来表达。为什么不这样说:“当图形性能是首要考虑因素时,使用WPF而不是Silverlight”等等……使用肯定语气而不是否定语气。这只是一个想法。 - Arron S
我同意你的观点,但我只是提供决策所需的信息,而不是决策本身。另外,我是ESL,所以请原谅我的英语水平较差。 :-) - Klinger

11

我认为主要的区别在于WPF需要客户端安装 .Net 3.0+ 框架,而Silverlight只需要运行时。尽管如此,WPF更适用于受控环境(例如内部网络);而Silverlight则适用于公共网络。另一个区别是,Silverlight跨平台(Windows、Mac、Linux将来还有跨浏览器)。WPF仅适用于 Windows。

.NET框架对于某些用户来说是一个巨大的下载量。Silverlight仅为4-5 MB。这对于在Web上运行应用程序是很大的差异,但如果它是公司内部应用程序,则不是什么大问题。

Silverlight经过沙箱隔离,适用于网络使用。因此,如果您的应用程序需要更多权限,则需要WPF。

Silverlight代码与WPF之间也存在一些差异。但据我所知,最终目标是使Silverlight在最小程度的代码修改下运行在WPF中。但他们还没有达到这个目标。


好的回答。不过需要注意的是,WPF xbaps 也可以在火狐浏览器中运行。 - Jacob Adams

6

我刚刚参与了一个WPF项目,回想起来我们可能应该选择SilverLight。更重要的是要了解它们之间的区别,并选择最适合你所需的。

以下是一些重要区别的初步介绍 - 原本可用控件方面有一些差异,但现在已经基本平衡了。

Silverlight

  • 完全运行在客户端,通过 AJAX 调用服务器获取数据
  • 可以在任何服务器上运行,包括 Windows 和 Linux / Apache
  • 使用 COMPACT .NET 框架

WPF

  • 通常在客户端运行... 会调用服务获取数据
  • 在带有 .NET 3.5 的 Windows XP / Vista 上运行
  • 利用整个 .NET 框架

Silverlight 不应该使用 AJAX,除非你是个受虐狂!SL 的最大优势就是没有 JavaScript。异步 SL 通信与 AJAX 的思路相同,只是要容易得多。 - sipsorcery
1
Xbap和xaps都是静态资源。因此,它们都可以托管在任何地方,包括Windows、Linux等。 - Jacob Adams
为了更新这个答案,自从我写下这句话以来,我几乎完全在做 Web 应用程序方面工作。有趣的是事情是如何变化的! - Fenton

4

Silverlight基本上是WPF的简化版本,以使运行时库的下载尽可能小。

因此,WPF在功能上提供了更多功能,而在WPF中简单的任务在Silverlight中往往变得不那么简单。

如果不需要作为Web应用程序运行,则决定非常简单- WPF全程。


请注意,WPF也可以作为Web应用程序运行(通过部署为XBAP),但客户端必须拥有Windows,而使用Silverlight时,客户端可以是Windows、MacOS或Linux。 - Ray Burns

3
  • 最近有人使用WPF实现了新的应用程序吗?如果是,是什么促使你做出这个决定呢?:好吧,由于WPF只能用于桌面环境(或者使用XBAPS在浏览器中,但那更多地是部署系统而不是真正的系统),这是一个很好的理由。
  • "如果你现在做这个决定,你的决定会改变吗?如果不会,为什么?" - 即使在v3版本中桌面版Silverlight也是高度沙盒化的,所以由于沙盒的限制,某些功能将会很难甚至无法完成。此外,在WPF中使用DirectX的部分还将提供另一个优化领域,而Silverlight及其3D就无法使用该优化。

这是一个很好的观点。由于Silverlight实际上没有任何非托管的互操作性,如果您想要使用P/Invoke或COM对象,您必须使用WPF。 - Andy

3
值得注意的是,Silverlight的3D并不是WPF完整的3D支持,而仅仅是将2D投影到3D中——即将2D平面进行X、Y和Z方向的旋转。WPF具有完整的3D建模功能,包括材料、视口、照明和相机位置支持等。

2
我正在开发我们的第一个WPF应用程序以供发布,与Silverlight 3相比,我仍然选择了WPF。该应用程序的重点是呈现和操作存储在客户端网络上的中央服务器上的非常大量的图像集。此外,软件更新/更改速率将是最小的。从本地驱动器批量导入新图像,不需要互联网连接要求,性能问题等,使得这个项目非常适合使用WPF。
然而,我们即将启动的一个项目需要许多远程用户访问我们网络上的单个数据存储。他们处理的数据需要进行重要验证和错误处理,因此本地运行该代码是理想的。他们需要能够在线和离线工作并保持同步(可能使用SQL数据服务)。 SLOOB(Silverlight Out Of the Browser)很可能是我们的选择,这样他们可以拥有所有Silverlight的优势,但像常规安装的应用程序一样使用它,甚至没有互联网连接。
两种格式都有其用处:关键是避免将Silverlight用于所有内容 - 我们有超过1个锤子的工具。 :-)

1

另一个区别是,使用SL时您只有一个“窗口”,无法使用对话框(虽然可以模拟,但其大小仅限于主窗口),也无法添加多监视器支持。

如果您需要与现有的业务应用程序交互(例如,在存档查看器中打开文档),则需要使用WPF。


0

最近我使用wpf构建了几个内部工具,我选择它只是因为从win32工作转换更容易。我并不认为差异很大,而且...我所看到/听到的一切都表明,在wpf和silverlight之间进行移植非常容易。


0

您可以要求用户允许增加空间。 - Dominic Hopton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接