WPF vs Silverlight

可能重复:
WPF和Silverlight应用程序有什么区别?

WPF和Silverlight之间的确切区别是什么?


这是一个非常广泛的问题。 我的公司最近撰写了一份白皮书,概述了这两种技术之间的差异,大约有70页。 不幸的是,它尚未发布,或者我会给你链接。

编辑:如承诺的,这里是Codeplex白皮书的链接:

http://wpfslguidance.codeplex.com/

不过,我会尽量总结。

  • WPF是一个厚厚的Windows客户端平台,可以访问完整的.Net框架。 Silverlight是一种基于浏览器的技术,可以访问.Net Framework的一个子集(称为CoreCLR)。 因此,您会注意到框架内每天使用的方法和对象似乎存在差异。 例如,String类中的Split()方法在Silverlight中有3个覆盖,但在.Net Framework中有6个。 你会看到很多这样的差异。

  • 在WPF中,所有视觉渲染元素都来自Visual基类。 在Silverlight中,他们没有; 相反,它们来自Control。 然而,这两种技术最终都是从层次结构中的DependencyObject类派生的。

  • 目前,WPF发布或提供比Silverlight更多的用户控件; 尽管通过Silverlight Toolkit和即将发布的Silverlight 3可以缓解这种差异。

  • WPF支持3种类型的路由事件(直接,冒泡和隧道)。 Silverlight仅支持直接和冒泡。

  • 有很多数据绑定的差异会在Silverlight的下一个版本中有所缓解。 目前,Silverlight不支持绑定模式,OneWayToSource或Explict UpdateSourceTriggers。 另外,如果没有设置任何设置,Silverlight默认为OneWay数据绑定,而WPF使用依赖项属性指定的默认模式。

  • Silveright不支持MultiBinding。

  • Silverlight支持XmlDataProvider,但不支持ObjectDataProvider。 WPF支持两者。

  • Silverlight只能进行异步网络调用。 WPF可以访问完整的.Net网络堆栈,并可以进行任何类型的调用。 此外,目前Silverlight支持SOAP,但不能本地处理SOAP错误异常(这可能会在Silverlight 3中更改)。

  • 加密技术存在巨大差异(Silverlight在命名空间中有20个类,而WPF可以访问107个)。 基本上,Silverlight仅支持4种哈希算法和AES加密协议。

  • Silverlight尚不支持:Windows桌面的指挥,验证,打印,XPS文档,语音,3D,Freezable对象或InterOp; 所有这些都在WPF中可用。

  • Silverlight支持浏览器互操作,更多媒体流选项,包括时间线标记和Deep Zoom。 WPF不支持这些功能。

  • 这并不是完整的,因为我试图将70页的文件缩减为重点。

    最后,即使存在这些差异,微软也在努力缩小这两种技术之间的差距。 Silverlight Toolkit和WPF Toolkit都解决了每种技术的一些缺点。 Silverlight 3将添加许多当前不可用的功能(例如元素到元素的数据绑定)。 但是,由于核心库的差异,总会有一些框架差异。


    WPF是用于在.Net框架中开发Windows应用程序的Windows桌面技术。

    Silverlight是一项网络技术,完全由Windows和MAC上的浏览器插件支持(与Flash类似)。 还有一个在Linux上运行Silverlight的插件(Moonlight)。

    虽然WPF和Silverlight提供的功能(用户界面组件和对XAML的支持)之间有相似之处,但Silverlight是一个非常小的框架,包含WPF功能的子集。 较新版本的Silverlight实际上包含了WPF中找不到的一些功能,因此它不再是真正的子集。


    WPF认为Silverlight没有:基于DirectX的全3D引擎,Windows集成(如Windows 7任务栏缩略图和系统注册表可用性)以及对完整.NET Framework的访问(包括Oracle数据库支持)。 此外,SL在安全沙箱中运行,可防止访问诸如整个文件系统等WPF应用程序可在完全系统访问时运行完全信任的情况。

    如上所述,SL开创了一些技术,比如VisualStateManager,它们通过微软支持的WPF工具包将它们二次转化为WPF。

    如果你正在考虑哪种技术适合你的项目,这里有一个简单的方法来看看它:如果你正在编写一个应用程序,该应用程序可以在与网络断开连接的情况下运行,或者如果你正在编写需要的应用程序访问像上面列出的那些Windows特定功能,那么WPF就是要走的路。 对于平台不可知的,支持Web的应用Silverlight是一个合适的选择。 心连心。

    链接地址: http://www.djcxy.com/p/41249.html

    上一篇: WPF vs Silverlight

    下一篇: Cannot deploy war to GlassFish 4.1.2 server because database can't be found