近日微软公布了最新的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,而这恰恰就是我一直偏爱这项技术的一个主要理由:这是一个天才团队和有责任的团队开发出来的。

官方W​​PF 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今生未来(上):担心的更多相关文章

  1. WPF老矣,尚能饭否——且说说WPF今生未来(中):策略

    本文接上文<WPF老矣,尚能饭否——且说说WPF今生未来(上):担心>继续. “上篇”中部分精彩的点评: 虽然WPF不再更新了,但是基于WPF的技术还是在发展着,就比如现在的WinRT,只 ...

  2. WPF老矣,尚能饭否——且说说WPF今生未来(下):安心

    在前面的上.中篇中,我们已经可以看到园子里朋友的点评“后山见! WPF就比winform好! 激情对决”.看到大家热情洋溢的点评,做技术的我也很受感动.老实说,如何在本文收笔--WPF系列文章,我很紧 ...

  3. WPF入门教程系列十五——WPF中的数据绑定(一)

    使用Windows Presentation Foundation (WPF) 可以很方便的设计出强大的用户界面,同时 WPF提供了数据绑定功能.WPF的数据绑定跟Winform与ASP.NET中的数 ...

  4. WPF自学入门(五)WPF依赖属性

    在.NET中有事件也有属性,WPF中加入了路由事件,也加入了依赖属性.最近在写项目时还不知道WPF依赖属性是干什么用的,在使用依赖项属性的时候我都以为是在用.NET中的属性,但是确实上不是的,通过阅读 ...

  5. wpf 研究之道 winform or wpf,u choose who?

    很久以前,我们用winform做过一个五子棋的程序,当时用winform的画图,先画出棋盘...后来项目的研究阶段,偶尔用winform做个小工具.闲暇之余,看到介绍wpf的资料,只知道它采用了xam ...

  6. WPF自学入门(十一)WPF MVVM模式Command命令

    在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正如上一篇文章中在开始说的,MVVM的目的是为了最大限度地降低了 ...

  7. 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上

    在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了. 我们可以简单的实例化一个WP ...

  8. 通过解读 WPF 触摸源码,分析 WPF 插拔设备触摸失效的问题(问题篇)

    在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔.再加上它出现得比较早,触摸失效问题也变得更加难以解 ...

  9. 【WPF】创建基于模板的WPF控件(经典)

    原文:[WPF]创建基于模板的WPF控件(经典) WPF可以创建两种控件,它们的名字也很容易让人混淆:用户控件(User Control)和定制控件(Customer Control),之所以如此命名 ...

随机推荐

  1. SQL Server 2012大幅增强T-SQL

    SQL Server 2012对T-SQL进行了大幅增强,其中包括支持ANSI FIRST_VALUE和LAST_VALUE函数,支持使用FETCH与OFFSET进行声明式数据分页,以及支持.NET中 ...

  2. Android提权漏洞CVE-2014-7920&CVE-2014-7921分析

    没羽@阿里移动安全,更多安全类技术干货,请访问阿里聚安全博客 这是Android mediaserver的提权漏洞,利用CVE-2014-7920和CVE-2014-7921实现提权,从0权限提到me ...

  3. DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考

    之前,在用ENode开发forum案例时,遇到了关于如何实现论坛帖子的回复的统计信息如何更新的问题.后来找到了自己认为比较合理的解决方案,分享给大家.也希望能和大家交流,擦出更多的火花. 论坛核心领域 ...

  4. 剑指Offer面试题:17.树的子结构

    一.题目:树的子结构 题目:输入两棵二叉树A和B,判断B是不是A的子结构.例如下图中的两棵二叉树,由于A中有一部分子树的结构和B是一样的,因此B是A的子结构. 该二叉树的节点定义如下,这里使用C#语言 ...

  5. [每日电路图] 10、两种MOS管的典型开关电路

    下图是两种MOS管的典型应用:其中第一种NMOS管为高电平导通,低电平截断,Drain端接后面电路的接地端:第二种为PMOS管典型开关电路,为高电平断开,低电平导通,Drain端接后面电路的VCC端. ...

  6. [译]Introducing ASP.NET vNext and MVC 6

    原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source=tuicool Part of the ASP.NET vNext init ...

  7. Git 进阶指南

    转自: https://github.com/kaiye/kaiye.github.com/issues/7 在掌握了基础的 Git 使用 之后,可能会遇到一些问题.以下是猫哥筛选总结的部分常见问题, ...

  8. Oracle没有WM_CONCAT函数的解决办法

    WM_CONCAT是oracle的非公开函数,并不鼓励使用,新版本oracle并没有带此函数,需要手工加上. 1.下载三个文件:owmctab.plb  . owmaggrs.plb . owmagg ...

  9. Android笔记——Android中visibility属性VISIBLE、INVISIBLE、GONE的区别

    在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为"visible "."invisible"."gone&quo ...

  10. android/java 根据当前时间判断股票交易状态(未开盘 交易中 休市中 已收盘)

    /** * @param data yyyy-MM-dd HH:mm:ss 时间 * @return 未开盘 交易中 休市中 已收盘 */ public static String getSotckS ...