“WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
近日微软公布了最新的WPF路线图,一片热议;对于老牌控件提供商葡萄城来说,这是WPF系列控件一个重要的机遇,因此,Spread Studio for WPF产品做了一次重要更新,并随着Spread Studio 8.0发布。鉴于此,选择翻译并整理了一篇自codeproject的文章:《Is WPF dead: the present and future of WPF》,抛砖引玉,且聊聊程序员心目中的WPF。

引子
作为一个老牌WPF程序员,多年来一直关注的问题是,在微软发布最新的WinRT框架之后,接下来的客户端编程将何去何从。
显然我有充分的理由担心这个,众所周知的Silverlight的中途搁浅,它对下游的开发人员带来了很大的损害;俗话说:一朝被蛇咬,十年怕井绳。这就是真实写照。
我从2009年开始就对WPF投入很大的精力,使用它开发财务相关的行业软件,如今,我依然还在这里,但是焦点转向了培训相关工作。作为专业开发和培训讲师,WPF的将来对我来说至关重要,这也是我深入思考这个问题的根结。
本文我将本着客观和透明的方式给大家分享我所的发现和感悟,希望起到抛砖引玉的作用,以此为社区提供更好的有前景的WPF。
另外,在本文的结尾,我将为企业和个人开发提供一些策略和个人见解。
有理由担心
首先,我将展示那些我所担心的标志性信号,如果你是一个WPF的利益相关者,这也会是你所担心的。
WPF团队博客断更
如所有微软的技术团队一样,WPF团队也有自己的博客,主要话题集中在向社区分享团队内部成员在WPF上的各种经验。
该博客的最后一篇文章发表于三年前,2011年五月,或者另一个精确的说法是当WinRT宣布开始并作为下一个重大目标的时候。
一个断更的博客会暗示很多问题,恕我直言,从来没有好的方面的:或许这个团队被缩减到极小,以至于博客被挤出任务优先级列表了;也可能是最优秀的团队成员已经转到其他项目,比如WinRT;更甚者,或许这就是团队隐晦的给社区传递出来的信号……
从公共关系角度来看,一个活跃的团队博客是很基本的点,因为它对外展示了技术发展和忠实的开发团队向社区主动表达工作的满意和分享的意愿。
你或许已经注意到微软的MSDN博客其实并不活跃,为数不多的例外是EntityFramework团队博客,这应该归功于经常更新博文的Rowan Miller,而这恰恰就是我一直偏爱这项技术的一个主要理由:这是一个天才团队和有责任的团队开发出来的。
官方WPF Toolkit不再更新
WPF Toolkit是一个由微软团队开发的开源免费项目,目标是WPF的重要辅助套件和前哨。
一个很典型的例子是DataGrid控件,在WPF的起初的发行(WPF3.0和WPF4.0)是没有的,但在Toolkit里面有,到后来,最终WPF4.0把它放到正式的发行里了。
官方的Toolkit一直扮演这样的角色一直到2010年,但是自从项目开始清减之后,也就没有什么人关注所谓的下一版本的发布了。
表现出不活跃的信号是:Google搜索引擎对关键字“WPF Toolkit”的排次把官方的toolkit放第二,而第三方的反倒占据第一(本文第二部分会有更细节的描述)
WPF不再进行认证考试
官方的WPF认证考试(70-511)已经不在延续,并将在2015年夏天终止。
这给开发人员一个强烈的明确信号,就是不要在该项技术上投入了,相应的可以考虑投入时间和精力到WinRT上,这样才会从认证考试获得回报。
或许将来某一天微软会推迟这个认证考试的吊销,正如他们曾经做过的,在收到大量社区开发者的诉求之后会有一定的妥协,但是都不可避免的是,WPF已经不在重要。
就我个人而言,我一直很犹豫要不要过这项认证考试,因为我实在无法保证时间和物有所值(是的,我自己付费)。反而很坚定的认为可以准备WinRT的认证考试,因为它在将来的几年都会是有效。
不再提供Window 8+系统集成
回想WPF4.0发布,同时发布了很多的Window 7系统相关的集成和增强,比如任务栏定制(弹出列表,进度,遮罩等等……)。
但是当WPF4.5到来时,却没有给Window 8+系统功能做完全的集成,比如则边栏(Charm Bar),大多数应用只能通过互操作来交互。
因此,微软没有投资在这些集成工作上,这很明显的揭示WPF已经不再是Window系统的一等公民,实际上它首选投入WinRT的怀抱,个人认为这是一个合理的决策。
WPF不支持WinRT
微软,这个曾经的老牌软件供应商,如今业务多样化,开始成为一个硬件供应商,效仿它的竞争者苹果和三星。
为此微软收购了诺基亚,以期获得移动市场的长期席位。
在平板和笔记本这方面,为了和苹果的iPad平板和MacBook Pro笔记本相竞争,微软推出了Surface系列。
Surface 一代和二代根据硬件架构(x86和ARM)分成两种版本,而后者对应有了自己的专有系统:Windows RT(不要和作为软件层的WinRT混淆);但是Windows RT不支持(至少官方不支持)老的应用接口,比如优秀的老式Win32接口,因此也不支持在此基础上“包装”出来的衍生技术,像WinForm等等,当然包括WPF,因此无法在Surface版本上运行WPF应用程序。
微软不在此投入理由很简单,就是它想在最新的IT趋势中去除Win32,让量身定做的WinRT代替。
完整系列文章:
“WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心的更多相关文章
- WPF老矣,尚能饭否——且说说WPF今生未来(中):策略
本文接上文<WPF老矣,尚能饭否——且说说WPF今生未来(上):担心>继续. “上篇”中部分精彩的点评: 虽然WPF不再更新了,但是基于WPF的技术还是在发展着,就比如现在的WinRT,只 ...
- WPF老矣,尚能饭否——且说说WPF今生未来(下):安心
在前面的上.中篇中,我们已经可以看到园子里朋友的点评“后山见! WPF就比winform好! 激情对决”.看到大家热情洋溢的点评,做技术的我也很受感动.老实说,如何在本文收笔--WPF系列文章,我很紧 ...
- WPF入门教程系列十五——WPF中的数据绑定(一)
使用Windows Presentation Foundation (WPF) 可以很方便的设计出强大的用户界面,同时 WPF提供了数据绑定功能.WPF的数据绑定跟Winform与ASP.NET中的数 ...
- WPF自学入门(五)WPF依赖属性
在.NET中有事件也有属性,WPF中加入了路由事件,也加入了依赖属性.最近在写项目时还不知道WPF依赖属性是干什么用的,在使用依赖项属性的时候我都以为是在用.NET中的属性,但是确实上不是的,通过阅读 ...
- wpf 研究之道 winform or wpf,u choose who?
很久以前,我们用winform做过一个五子棋的程序,当时用winform的画图,先画出棋盘...后来项目的研究阶段,偶尔用winform做个小工具.闲暇之余,看到介绍wpf的资料,只知道它采用了xam ...
- WPF自学入门(十一)WPF MVVM模式Command命令
在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正如上一篇文章中在开始说的,MVVM的目的是为了最大限度地降低了 ...
- 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上
在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了. 我们可以简单的实例化一个WP ...
- 通过解读 WPF 触摸源码,分析 WPF 插拔设备触摸失效的问题(问题篇)
在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔.再加上它出现得比较早,触摸失效问题也变得更加难以解 ...
- 【WPF】创建基于模板的WPF控件(经典)
原文:[WPF]创建基于模板的WPF控件(经典) WPF可以创建两种控件,它们的名字也很容易让人混淆:用户控件(User Control)和定制控件(Customer Control),之所以如此命名 ...
随机推荐
- NPOI、MyXls、Aspose.Cells 导入导出Excel(转)
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...
- LogStash-2.4.0自定义区域信息插件-ISP
由于直接复制粘贴有问题,所以给出链接: http://note.youdao.com/share/?id=6dfb1f03240e156c1db4a56c85e3b6db&type=note# ...
- Reactive Extensions(Rx) 学习
Bruce Eckel(著有多部编程书籍)和Jonas Boner(Akka的缔造者和Typesafe的CTO)发表了“反应性宣言”,在其中尝试着定义什么是反应性应用. 这样的应用应该能够: 对事件做 ...
- IE7中使用Jquery动态操作name问题
问题:IE7中无法使用Jquery动态操作页面元素的name属性. 在项目中有出现问题,某些客户的机器偶尔会有,后台取不到前台的数据值. 然开发和测试环境总是不能重现问题.坑爹之处就在于此,不能重现就 ...
- Backbone源码分析(一)
距离上一篇博客有一段时间了,期间各种琐事萦绕.最主要的一件是,当我差不多将整个dojo核心源码看完,惊讶的发现dojo1.*的设计以是老态龙钟之象,而我沉溺在dojo中太久,已经不知道前端世界变成了什 ...
- JSP模板继承功能实现
背景 最近刚入职新公司,浏览一下新公司项目,发现项目中大多数JSP页面都是独立的.完整的页面,因此许多页面都会有如下重复的代码: <%@ page language="java&quo ...
- Sharing A Powerful Tool For Calculate Code Lines
最近正好需要统计下某项目代码行数,然后就找代码行数统计工具.以前找到过一个正则表达式,但是只有在VS2010下有用,VS2012和VS2013下的统计就不好使了. 接着搜索了一下代码行数统计绿色工具免 ...
- [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...
- Spring学习记录(五)---bean的作用域scope
作用域:singleton:单例,整个应用中只创建一个实例(默认) prototype:原型,每次注入时都新建一个实例 session:会话,每个会话创建一个实例 request:请求,每个请求创建一 ...
- Constraint2:constraint
一,Constraint 是表定义的一部分,用于实现数据完整性. Data Integrity 由三种类型的constraint实现: Entity Integrity:数据是唯一的.约束: prim ...