在何时使用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
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/4_webprogram/webjis/20100710/427560.html

转载于:https://www.cnblogs.com/minide/articles/2234601.html

WPF对决Silverlight:为项目选择最佳技术相关推荐

  1. 为WPF和Silverlight的Grid添加边框线(zz)

    Grid是WPF和Silverlight中的一个重要的布局元素,其他的布局元素还有StackPanel, Canvas, Border等等.从字面上说,Grid是一个表格的意思,它的使用也确实很方便, ...

  2. WPF和Silverlight设计实例

    近日清华大学出版社出版了<WPF和Silverlight项目设计实例>一书,这是2011年出版的<基于Expression Blend4中文版 WPF和Silverlight项目设计 ...

  3. 2007武汉.NET俱乐部沙龙-VS2008、WPF、Silverlight

     即将进入2008年,激动人心的一年.微软也将活跃起来,讨论微软技术发展的最新趋势,产品与解决方案的商业价值,新技术对未来行业的影响,使您以饱满的激情碰撞2008!与此同时,微软又带给开发人员什么新的 ...

  4. 恭喜!神策数据荣获“2020 InfoQ 最佳技术社区驱动力奖”

    近日,在 InfoQ"开发者生态共创计划"中,神策数据凭借大数据领域的前沿实践积累和高质量的技术内容输出,荣获"2020 InfoQ 最佳技术社区驱动力"奖项. ...

  5. 为WPF和Silverlight的Grid添加边框线

    Grid是WPF和Silverlight中的一个重要的布局元素,其他的布局元素还有StackPanel, Canvas, Border等等.从字面上说,Grid是一个表格的意思,它的使用也确实很方便, ...

  6. WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形

    原文:WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形 说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘> ...

  7. 阅文集团副总裁傅徐军:最佳技术架构选型方法论

    近日,阅文集团副总裁傅徐军受邀参加了由中国信息通信研究院主办.中国通信标准化协会支持的"OSCAR云计算开源产业大会".在大会上,他基于阅文对自身业务技术架构深度优化的实践与成果, ...

  8. 2015年度“最佳技术团队”和“最佳CTO”评选活动火热进行中

    2015年即将逝去,在这个万众创业的时代,资本寒冬的阴影再一次掠过中国互联网.每一位怀揣梦想的年轻人无不野心勃勃地期待着明天.然而,选择什么样的团队.跟随什么样的探路者,随之而来的道路却迥然不同. \ ...

  9. SIGGRAPH 2022最佳技术论文奖重磅出炉!北大陈宝权团队获荣誉提名

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 转载自:新智元 |  编辑:David [导读]SIGGRAPH ...

最新文章

  1. 我们为什么选择Kubernetes
  2. 关于QSqlTableModel的使用说明(QT上创建本地SQL)
  3. pygame.rect中 Rect类 属性示意
  4. 互联网早报 | 10月3日 星期六 | 微信正式上线青少年模式;阿里巴巴首次披露技术研发投入;本田宣布2021赛季后退出F1...
  5. java引用数据类型可以更改类型_java,基本数据类型和引用数据类型
  6. 炫酷引导页带视频源码
  7. 无法访问机械硬盘提示执行页内操作时的错误的文件恢复办法
  8. Ubuntu18.04之微信中文乱码解决
  9. 米奇emoji_三星S9的AR Emoji迎新角色:迪士尼的米奇和米妮
  10. 内存碎片是什么?关于内存碎片的解释
  11. 手机图形计算器matlab,Mathlab图形计算器
  12. 八种语言最新毕业文献参考
  13. java-net-php-python-java交通事故档案管理系统PPT计算机毕业设计程序
  14. bin文件读写 - C/C++
  15. esxi 无盘服务器,用ipxe网络启动打造无盘ESXi系统
  16. 奥升德推出Acteev Protect™抗菌技术
  17. java计算机毕业设计校园订餐系统源代码+数据库+系统+lw文档
  18. 树莓派4B从开箱到连接电脑(超级小白)
  19. Few-Shot Object Detection with Fully Cross-Transformer论文精读
  20. 2022-2028全球隔离式CAN收发器行业调研及趋势分析报告

热门文章

  1. python怎么变成exe文件_如何在python中知道CPython可执行文件是否是调试版本?
  2. BigDecimal 往左移动两位小数_一课研究之“让问题意识成为学生深度学习的钥匙——除数是整数的小数除法例谈”20190830...
  3. Python函数参数学习
  4. tensorflow综合示例3:对结构化数据进行分类:csv keras feature_column
  5. Android网络连接的两种方法:apache client和httpurlconnection的比较
  6. spark 应用程序性能优化:12 个优化方法
  7. 深入理解ElasticSearch(七):执行分布式检索
  8. JAVA并发编程: CAS和AQS
  9. javaweb学习总结(十五):JSP基础语法
  10. 48-如何实现unix2dos功能