阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

WPF 对决 Silverlight:为项目选择最佳技术

  • 2010-06-05
  • 本文字数:2425 字

    阅读完需:约 8 分钟

在何时使用 WPF,何时使用 Silverlight 的问题上,很多人备感困惑。为项目选择正确的技术取决于应用程序的需求,以及 WPF 和 Silverlight 能力的不同之处。

Silverlight 最初称为 WPF/E(E 来自于 Everywhere 的首字母),是面向运行在浏览器中的 Web 应用程序的一个 WPF 子集。如今,Silverlight 以其快速的开发周期广为所知,且持续得到众人的关注,很多人认为它会成为微软未来的重要开发平台。 Mike Strobel 认为微软对 WPF/Silverlight 的考虑有一些混乱

我认为最重要的事情,是提升 WPF 本身的影响。微软应该推动 WPF 成为富桌面应用程序的“核心”平台。然而恰恰相反,微软此时正推进 Silverlight 成为这样的平台。这会误导那些对两个平台都陌生,且不明白 Silverlight 不兼容标准.NET 函数库的人。

某些人则认为 WPF 就快消亡了,不过 Brian Noyes,一个微软区域技术领袖(Microsoft Regional Director)及微软最有价值专家(MVP),相信至少在未来几年不会出现这种情况。为了证明对 WPF 的这种看法,Noyes 在如下几个方面强调了 WPF 和 Silverlight 之间的一些重要不同点:

特性 WPF Silverlight 文件访问 无限制 可访问用户文件夹:我的文档、我的照片、我的视频等 打印 具有很多选项,可访问打印对话框、打印队列等 需编程打印 UI 元素 文档编辑 支持流文档和固定文档,有 RichTextBox 编辑支持,并能和流文档进行集成 RichTextArea 具备 WPF 的 RichTextBox 的大部分功能 命令 支持在按钮、超链接和菜单项上触发命令,键盘快捷键的输入可绑定到命令上,可实现路由命令 支持在按钮、超链接和上下文菜单项上触发命令,无输入绑定,无路由命令 通信 支持 WCF 的完整功能,能够调用和托管任何类型的服务,支持完整的安全选项和其他 WS-* 协议,支持 REST 和很多种低级通信方式 有限的 WCF 客户端功能子集,不能在客户端上暴露服务,支持不安全 TCP 或 HTTP 协议,比 WCF 客户端弱的双向通信(只能使用 HTTP 或不安全 TCP),支持某些 socket 级的功能,在很多部署场景中必须考虑跨域访问问题。 剪贴板 任何可序列化的对象 只支持文本 拖拽 任何东西 只能是文件 外部设备 有驱动、COM、Win32 或通信协议支持的任何设备 网络摄像头、麦克风和有 COM API 或通信协议支持的设备 输入 键盘、鼠标、手写笔、触摸屏,基本没有任何限制 必须在信任提升的 OOB 中,全屏时才能获得完整的键盘支持在 WPF 和 Silverlight 中还有一些不同的基本功能,这也可帮助大家来决定使用哪种技术。下面的例子,是一些开发人员做出选择的解释。

Joe Gilkey 在回答选择 WPF 而非 Silverlight 的问题时,解释了它的公司为何在一个项目中选择了 WPF,而在另外项目中选择 Silverlight:

在规划我们的软件产品时,确实遇到了这样的问题。对于我们而言,决定因素是是否需要访问本地硬件,以及(或者)本地数据库。我们的主打产品,需要在本地 100% 地运行。我们需要在本地 SQL 数据库中缓存信息,并且要访问一些硬件设备(GPS 接收器、串口、WCF 点对点通道、同步服务等等)。那个产品就由 WPF 来编写。而其他两个开发之中的产品,不用在本地保存信息(除了使用独立存储区),所以我们转而使用 Silverlight。两个 Silverlight 产品都支持脱离浏览器安装方式。WPF 应用程序的另外一个决定因素是对触摸的支持更加友好。感谢 Surface 团队,帮助我们在 WPF 应用程序中使用针对 Windows Touch 功能的 Surface Toolkit。

另外一个开发人员,Jeff 解释了为什么他的公司一开始使用 WPF 开发的项目后来又转用 Silverlight

一年前,我们使用 WPF 开发了多媒体发送系统的自定义客户端。明年,我们将用 Silverlight 应用程序来替换这个 WPF 客户端。为什么?目前我们的大部分应用程序都是基于 Web/ 浏览器的,不过我们也需要一个静态客户端来处理硬件交互和一些相对复杂的问题。现在,Silverlight 具有的 OOB 模式意味着我们能够通过 COM 来连接本地硬件,这样问题就迎刃而解。为什么 Silverlight 在对战 WPF 中胜出呢——这是因为我们客户的运行环境的安装问题。不必自己处理操作系统的不兼容和功能差异,Silverlight 都能正常运行。并且,现在升级也轻而易举,只用升级服务器,客户端就能自动升级。当然,WPF 更加强大,不过很多东西我们用不上。

在解释了 WPF 和 Silverlight 的区别之后, Noyes 总结道

根本的决定因素是,如果你的客户端应用程序主要是为了展现后端数据的前端界面的话——选择 Silverlight 4 已经完全足够。不过,如果你的客户端应用程序需要更紧密地和客户端机器集成,并且其他一些东西也要放在客户端的话,使用 SL4 的信任提升 OOB 模式也可能胜任,但是这样会给开发带来更多的挑战,也可能需要牺牲开发效率或功能来达成开发目标。你需要切切实实地做好前端需求分析,如果应用程序和客户端机器资源有大量的交互的,WPF 仍旧是最好的选择,能让你的开发工作事半功倍。

关于未来,一个微软的资深产品经理 Pete Brown,认为这两种技术, WPF 和 Silverlight 最终将合二为一

我最近和微软的 Ian Ellison-Taylor 交谈过。Ian 是一个直接向 Scott Guthrie 报告的总经理。在很多工作中,他的团队要开发 Silverlight 和 WPF 两者中的东西(以及 RIA Services 和其他很多东西)。我提到,我想在未来获得一些小道消息,他说可以为我提供一些。所以,他和我谈到了 Silverlight 和 WPF 合二为一的事情,并在随后互发了一些关于这个话题的邮件。

未来,Silverlight 和 WPF 很可能会成为一个基于同一份代码的单一技术。毕竟,Silverlight 是源自于所谓的 WPF/E(E 表示 Everywhere),并以我们出乎意料的方式,弃用了这个丑陋的开发代号,而创造了一个美妙的产品名称(Silverlight)。

在给出相关建议的时候,Brown 的观点和 Noyes 的也类似:“向右看,Silverlight 是完成面向跨平台 RIA 的最好方式。向左看,WPF 是编写用于 Windows 7 的托管代码应用程序的最好方式。”

查看英文原文: WPF vs. Silverlight: Choosing the Best Technology for a Project

2010-06-05 22:504098
用户头像

发布了 254 篇内容, 共 53.4 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

易观分析&Pangle联合发布《全球新兴市场移动应用报告》

易观分析

新兴市场

为什么资源隔离对HTAP至关重要?

OceanBase 数据库

开学季 | Y 省教育厅这张卷,融云答出了100分!

融云 RongCloud

通讯协议

软件测试 | 测试开发 | app自动化测试(Android)-- Capability 使用进阶

测吧(北京)科技有限公司

Andriod

软件测试 | 测试开发 | Jenkins 集成 Android 代码检查

测吧(北京)科技有限公司

android jenkins

【译】日志:每个软件工程师都应该了解实时数据的统一抽象【一】

Rae

架构 分布式 日志 原理

软件测试 | 测试开发 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

测吧(北京)科技有限公司

测试

助力企业成就好生意,华为云快成长直播

科技云未来

TiDB v6.2 发版

PingCAP

#TiDB

从原理剖析带你理解Stream

华为云开发者联盟

开发 企业号九月金秋榜

软件测试 | 测试开发 | 疫情之下工资翻了2倍多,这4个月学习比工作8年学到的还多

测吧(北京)科技有限公司

软件测试

软件测试 | 测试开发 | 用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告

测吧(北京)科技有限公司

pytest Allure

新书上市 | 十分易上手的图解教程,全系列累计销量20万册!

图灵社区

程序员 计算机 图论

fastposter v2.9.2 最简海报生成器

物有本末

海报生成器 电商海报 图片生成

基于MonoRepo的Web端CI/CD实践与优化

RingCentral铃盛

企业号九月金秋榜

软件测试 | 测试开发 | 测试人生 | 双非学历入职名企大厂还薪资翻倍?

测吧(北京)科技有限公司

面试 测试

软件测试 | 测试开发 | 如何使用代理配置快速定位接口测试脚本问题?

测吧(北京)科技有限公司

测试

Python代码用在这些地方,其实1行就够了

华为云开发者联盟

Python 开发 企业号九月金秋榜

【译】YouTube 架构

Rae

数据库 架构 youtube 后端技术

开源治理的基本实践与指导原则

SEAL安全

开源 开源安全 软件供应链安全 开源安全与治理

边缘服务网格 osm-edge 概览

Flomesh

Service Mesh 服务网格

软件测试 | 测试开发 | 简单快速的从GitHub同步代码

测吧(北京)科技有限公司

git

软件测试 | 测试开发 | 常见接口协议解析

测吧(北京)科技有限公司

TCP

TDengine3.0计算查询引擎的优化与升级

TDengine

数据库 tdengine 时序数据库 企业号九月金秋榜

你的秋日好运正在派件,请查收9月月更活动!

InfoQ写作社区官方

热门活动 9月月更

软件测试 | 测试开发 | app自动化测试(Android)--触屏操作自动化

测吧(北京)科技有限公司

自动化测试 app测试

软件测试 | 测试开发 | app自动化测试(Android)--高级定位技巧

测吧(北京)科技有限公司

xpath

TiFlash 源码解读(七)TiFlash Proxy 模块

PingCAP

TiDB TiDB 源码解读

软件测试 | 测试开发 | 测试人生 | 薪资翻倍涨至50W是种什么样的体验?

测吧(北京)科技有限公司

测试

华为云快成长直播ERP专场,以数据驱动企业智慧变革

科技云未来

上了NVMe的路,才能飙起全闪存的车

脑极体

WPF对决Silverlight:为项目选择最佳技术_.NET_Abel Avram_InfoQ精选文章