首页 文章

WPF与Silverlight [重复]

提问于
浏览
126

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

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

4 回答

  • 9

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

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

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

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

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

    • WPF目前提供比Silverlight更多的用户控件;虽然通过Silverlight工具包和即将发布的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尚不支持:命令,验证,打印,XPS文档,语音,3D,Freezable对象或InterOp与Windows桌面;所有这些都在WPF中可用 .

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

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

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

  • 3

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

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

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

  • 200

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

    如上所述,SL开创了一些技术,如VisualStateManager,它们通过微软支持的WPF工具包进入WPF .

    如果您正在寻找适合您的项目的技术,可以通过以下方式查看它:如果您正在编写一个应用程序,该应用程序在与Web断开连接时运行,或者您正在编写需要的应用程序访问Windows特定功能,如上面列出的那些,然后WPF是要走的路 . 对于与平台无关的,支持Web的应用程序Silverlight是一个合适的选择 . 心连心 .

  • 1

    你可以说它非常类似于Flex和Adobe Air之间的差异,但这有点误导 .

    WPF是指.NET Framework 3.0及以上用户可以访问以便绘制到屏幕的一组技术(通过API公开) .

    许多WPF API都可用于Silverlight应用程序 .

    当然,除了WPF之外还有许多其他API可以在Silverlight下使用,因为SL应用程序需要做的不仅仅是在屏幕上绘制 .

相关问题