是否可以使用Silverlight创建桌面应用程序?

问题描述:

我一直在使用WPF,并且我一直在不断地意识到,微软在Silverlight中投入了大量的精力,而不是在WPF(RIA服务,默认主题,控件等等)中投入。是否可以使用Silverlight创建桌面应用程序?

我认为迁移到Silverlight可能是一个好主意(即使用Silverlight 4.0创建独立桌面应用程序),问题是这是否可行。

顺便说一句,我认为LightSwitch应用程序是使用Silverlight作为独立的桌面应用程序生成的。

它可以用3.0或更高版本的Silverlight创建独立的桌面应用程序(脱离浏览器的应用程序),它的伟大工程。现在,即使不打开浏览器,也可以安装浏览器外应用程序,如blog post所示.Silverlight非常棒,Silverlight应用程序甚至在MAC和Linux上运行(受限支持)

但是,微软只投资Silverlight。微软也在投资WPF。尽管可以使用Silverlight创建浏览器应用程序,但与完整的WPF应用程序相比,它们有很多限制。不要忘记Silverlight只是WPF的一个子集,例如,silverlight不具有ADO.NET,硬件设备访问等因此,如果您的应用程序仅仅是一个商业应用程序,并且您不必直接访问硬件设备或数据库,那么Silverlight可能是一种选择,但是如果您的应用程序访问客户端直接使用硬件资源,那么您最好使用WPF。

我的建议是,如果您事先知道它将成为桌面应用程序,那么请使用WPF(或者甚至可能是XBAP)。根据我的经验,有用的应用程序会随着时间的推移而不断增加,不断要求新功能。如果将来使用silverlight无法实现的功能只能通过WPF完成,那么您将遇到很大麻烦,因为您需要在WPF中重写您的应用程序,并且很难说服您的CFO为了实现一个功能而分配更多的资金。 Silverlight并非设计用于开发桌面应用程序,其主要目标是多平台支持。

+0

我接受你的建议。 非常感谢您的解释。 – Shimmy 2010-10-31 00:58:33

如果你的意思是超出浏览器的应用程序,当然。 Seesmic Desktop 2应用程序是其中一个应用程序的绝佳示例,具有自己的更新机制。似乎没有必要在这种方式下使用XAP/MEF插件Model和Silverlight。 Seesmic Desktop 2

我们正在开发一个OOB应用程序,只需一个网络下载即可完成。尽管如此,您将不会获得与WPF中完全相同的API。

Silverlight 3支持Out-of-Browser功能。

Wikipedia silverlight page

引用:

Silverlight 3的支持外的浏览器的经验,即Silverlight应用程序可以被安装到系统进行离线访问(提供应用程序清单被设计成允许本地安装),其中他们在浏览器外运行。

而且,这里是一个快速howto

从MSDN:

Silverlight 3中的应用不再局限于浏览器中运行。它们可以在浏览器中运行,也可以从浏览器中脱离并从桌面运行。这些浏览器外应用程序允许您将Silverlight 3应用程序的丰富性直接引入桌面,而不受浏览器内运行的限制。

链接:Building An Out-of-Browser Client With Silverlight 3

出的浏览器应用程序具有相同的安全限制浏览器应用程序。

使用Silverlight 4,您可以创建完全可信的应用程序,并且可以完全访问计算机。

更多关于Network Security Access Restrictions in Silverlight

正如其他人所指出的,Silverlight应用程序可以安装以运行“浏览器外”,但即使信任度提高,他们仍然对他们可以做的事情有很大的限制,当然也没有“完全访问电脑“。

从头开始创建应用程序,您可能需要考虑并行Silverlight & WPF构建。通过使用“添加为链接”将.cs文件从一个项目(例如WPF)添加到另一个项目(Silverlight),代码可以或多或少地共享。 XAML文件不能以这种方式链接,需要复制,但这可能不会涉及复制粘贴,这取决于您的结构。网络上有很好的例子。

并行开发这两种类型可能会涉及比在某些时候突然切换类型以及发现不兼容/限制太迟的工作更少的工作。