Silverlight和WPF的区别

4

我的组织正在考虑使用哪些技术来开发下一代系统。我们将使用.NET,但尚未确定最佳的用户界面技术。Silverlight和WPF似乎是最合适的选项。是否有人可以分享每种方法的优缺点?


请查看此问题:https://dev59.com/TXNA5IYBdhLWcg3wfN2O - Meta-Knight
3个回答

7

Silverlight比WPF功能要弱得多,即使是版本4也是如此。

它可以在浏览器中或离线运行,并具有一些优点-但Silverlight相对于WPF的主要优势与部署相关。非常容易部署Silverlight应用程序-只需在服务器上的网页中引用XAP文件,就可以部署它(前提是您的用户已安装Silverlight)。WPF在部署方面需要更多的工作,因为它是一个完整的桌面应用程序。

话虽如此,WPF提供了更多的功能。它提供对完整的.NET框架的访问(而不是[逐渐增长的]子集)。

我的个人偏好是使用Silverlight-前提是应用程序不需要与旧软件进行交互,不需要访问系统资源或其他在Silverlight中不可用的内容。然而,如果您需要执行任何会占用系统资源的操作(例如:需要并行处理的大量计算、使用图形资源、复杂的3D工作等),那么WPF是最好的选择。


谢谢Reed。我想一些不可用的函数(例如Interop)可以通过使用WCF通过SilverLight实现? - Craig Schwarze
1
那么你并没有真正使用Silverlight,因为你需要将其移动到一个单独的应用程序中。在SL4中,你可以使用COM托管(仅限浏览器外)来完成其中的一些操作,但此时,使用WPF会更加方便。如果你想要一个单一的应用程序,并且需要互操作性,请选择WPF... - Reed Copsey

7
如Gabriel和Reed所提到的,Silverlight是WPF的精简版。
WPF主要用于桌面应用程序,具有高级的布局、动画和数据绑定功能,而Silverlight目前还没有。虽然可以通过浏览器传递WPF,但它不作为浏览器插件运行,因此无法与浏览器中的其他内容进行交互。可以创建托管WinForms控件和窗口的WPF应用程序,这样可以更轻松地转换现有的WinForms代码组合。WPF也比Silverlight具有更复杂的3D功能-尽管差别不大。
Silverlight可通过Mono运行时和Silverlight的Moonlight移植版在多个平台上使用(如Linux和OSX)。Silverlight可以作为独立应用程序运行,也可以在浏览器环境中运行,从而可以创建基于Web的应用程序。当作为基于浏览器的插件运行时,Silverlight应用程序可以与浏览器中的内容进行交互,并且可以与HTML并排显示。您还可以使用JavaScript来操作Silverlight应用程序,从而创建一个几乎无缝的编程环境。 Silverlight应用程序存在一些限制-例如,由于Silverlight / Browser线程模型的限制,所有WCF调用都是异步的。此外,并非所有.NET框架SDK均可用于Silverlight应用程序。
这两种技术非常类似,因为它们使用标记和代码的组合来提供功能。要在它们之间进行选择,您需要确定您是构建基于浏览器的还是独立的应用程序,是否希望可移植到其他平台以及是否需要.NET中提供的完整库套件。
在开发工具方面-我个人认为最好的工具是Expression Blend-它具有优雅和强大的UI,可视化地创建WPF或Silverlight用户界面。它还与Visual Studio集成-后者仍然是卓越的开发环境(Blend具有有限的代码编辑功能)。还有一些工具,如Expression Design和Expression Encoder,可帮助创建图形和操作视频,用于WPF和Silverlight应用程序。

3

Silverlight是WPF的子集,用于Silverlight浏览器插件中。两者都不错,但您需要决定最终是使用基于Web还是Windows的应用程序。

出于安全原因(它用于浏览器),Silverlight并没有WPF的所有功能。不过,使用Silverlight,您可以访问所有其他基于Web的应用程序优势(单个升级位置等 - JavaScript、CSS和HTML)。


3
SilverLight现在也可以在离线状态下运行。 - Craig Schwarze

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