WPF与Silverlight

Sau*_*ron 127 silverlight wpf

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

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

Ser*_*ioL 205

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

编辑:正如所承诺的,这里是Codeplex白皮书的链接:http://wpfslguidance.codeplex.com/

但是,我会试着总结一下.

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

  2. 在WPF中,所有可视化渲染元素都派生自Visual基类.在Silverlight中,他们没有; 相反,它们来自Control.但是,这两种技术最终都是从层次结构中的DependencyObject类派生出来的.

  3. WPF目前可以提供比Silverlight更多的用户控件; 虽然通过Silverlight工具包和即将发布的Silverlight 3可以减轻这种差异.

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

  5. 下一版本的Silverlight会有一些数据绑定差异有所缓解.目前,Silverlight不支持绑定模式,OneWayToSource或Explict UpdateSourceTriggers.此外,如果没有设置,Silverlight默认为OneWay数据绑定,而WPF使用依赖项属性指定的默认模式.

  6. Silveright不支持MultiBinding.

  7. Silverlight支持XmlDataProvider,但不支持ObjectDataProvider.WPF支持两者.

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

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

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

  11. Silverlight支持浏览器互操作,更多媒体流选项,包括时间线标记和深度缩放.WPF尚不支持这些功能.

这并不完整,因为我试图将70页的文档缩减为要点.

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


sam*_*son 9

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

Silverlight是一种Web技术,Windows和MAC上的浏览器插件完全支持(与Flash类似).还有一个用于在Linux(Moonlight)上运行Silverlight的插件.

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

  • 实际上,WPF中没有的Silverlight功能可通过WPF工具包获得,并将包含在WPF 4中 (2认同)