wpf 老矣

介绍

作为WPF开发人员多年来,我最近担心微软在其客户端平台上选择的新方向随着全新的WinRT框架的兴起。

我担心的原因很充分:我遭受了Silverlight失败的附带损害,并且正如谚语所说“曾经被咬过,两次害羞”。
自2009年以来,我对WPF进行了大量的个人和专业投资,用它来开发金融行业的LOB应用程序,现在我甚至提供有关这一主题的培训。
因此,作为一名专业的开发人员和培训师,WPF的未来对我来说至关重要,所以我更彻底地研究了这个问题。

在本文中,我将以完全客观和透明的方式与您分享我的发现,我希望您能提供自己的事实,以便社区可以更好地了解WPF的未来。
在本文的最后部分,我为企业和个人开发人员提供了一些策略。

 

有些理由担心

首先,我将首先介绍令我担忧的迹象,如果您是WPF的利益相关者,也应该担心。

WPF团队的博客闲置

作为每个Microsoft技术团队,WPF开发团队拥有一个博客,团队成员与社区分享他们在WPF上的专业知识。
这篇博客的最后一篇文章的日期是2011年5月,因此超过3年前,恰恰是WinRT开始成为下一个重要的事情。
一个闲置的博客可能意味着很多东西,但恕我直言,没有什么好处:可能是团队被减少到最低限度并且动画这个博客不是优先考虑的事情,也许团队中最好的成员已经转移到其他项目,如WinRT,也许这是故意向社区发送信号......
在公共关系方面,一个活跃的博客是必不可少的,因为它表明技术正在发展,并由热心开发人员开发,他们为自己的工作感到自豪,并愿意与社区分享。
请注意,MSDN博客通常不是非常活跃,实体框架团队的博客是例外之一,感谢Rowan Miller经常发布新帖子,这是我喜欢这项技术的主要原因之一:它正在开发中聪明而忠诚的人。

官方WPF工具包闲置

WPF工具包是微软团队developped和设计作为官方WPF的接待室释放一个自由和开放源码项目。
例如,DataGrid初始版本(WPF 3.0和3.5)中没有该版本,但是在工具包中可以使用,最后添加到WPF 4.0中。
官方工具包在2010年之前扮演了这个角色,但从那时起该项目处于空闲状态,因此下一版本似乎没有更多的库存。
这种不活动的标志:对于“WPF工具包”搜索,Google在官方WPF工具包之后排名第二(在第二部分中更多关于此一个)。

没有更多的认证

官方WPF认证70-511)将不会继续,并将于2015年夏季到期
这是一个强烈的明确标志,给开发人员他们不应该在这项技术上投入更多时间,而是将时间投入到WinRT上,WinRT受益于新的专用认证途径。
在开发者社区抱怨之后,也许微软会退后一步,推迟这种删除,就像在其他认证中一样,但这不会改变WPF不再是优先事项。
就我个人而言,我仍然犹豫不决,因为我不能保证时间和金钱(是的,作为一名企业家,我自己支付我的证书)是值得的。
相反,我更愿意为WinRT认证做准备,这些认证应该存在多年。

没有Windows 8+集成

如果您还记得WPF 4的发布,那么很大一部分增强功能专门用于Windows 7集成,如任务栏项目自定义(跳转列表,进度,覆盖...)。WPF 4.5中
没有这样的东西允许完全集成到Windows 8+功能,如魅力栏和众多应用程序合同,尽管有一些互操作功能。 因此,如果微软没有投资这种集成,它清楚地表明WPF不再是Windows中的一流公民,它更愿意将所有员工奉献给WinRT,我认为这是一个合理的决定。

不支持Windows RT

微软历来是一家软件供应商,通过成为硬件供应商,模仿竞争对手苹果和三星,使其业务多元化。
为此,微软已经收购了诺基亚,以便从长期在手机市场的市场中获益。
平板电脑笔记本电脑方面,为了与iPad平板电脑和MacBook Pro笔记本电脑竞争,微软推出了Surface系列。Surface 12
有2个版本,具体取决于硬件架构:x86ARM,后来受益于Windows的专用版本:Windows RT(不要与WinRT混淆,后者是软件层)。
但Windows RT不支持(至少正式)旧的API,如旧的Win32,因此不支持所有“包装”,如WinForms和... WPF,因此您无法在所有Surface版本上运行WPF应用程序。
如果微软没有对此进行投资,那只是因为它试图摆脱Win32取代WinRT,而WinRT专门针对新的IT趋势而定制。

新微软的战略

在2014年2月微软任命了新的CEO萨蒂亚·纳德拉,谁来自云分裂微软的。
他正在取代史蒂夫鲍尔默,他不了解新的移动市场(第一个iPhoneAndroid),这可能是微软完全错过这条船的原因之一,现在正在努力争取一个占据市场份额的地方竞争对手(苹果,三星)百分比之后的百分比。
与他的前任Satya Nadella的微软全球战略相反,“ 云首先和移动优先 ”,所以退出传统的桌面模式,这是一个非常理智的策略。
但是,精确的WPF是为“旧”模型设计的:胖桌面应用程序,而WinRT使用完全不同的模型,同时考虑到新的移动需求。
当然桌面和个人电脑市场并没有死,远不是它,但它不再是主流型号。

Windows应用商店

为了捕获部分应用程序供应商的收入,大多数平台的所有者(如AppleMicrosoft)创建了“ 商店 ”,您必须使用它来发布和购买应用程序。
而不幸的是,AFAIK Windows Store应用程序必须基于WinRT,因此您的WPF应用程序无法通过商店进行部署。
请注意,对于在内部部署应用程序并且不需要商店的企业而言,这不是问题,对于使用自己的商业渠道销售其应用程序的ERP等大型应用程序供应商而言,这不是问题,但如果您是小型企业则这是一个问题在竞争对手吃掉您的市场份额之前需要商店知名度的供应商。
越来越多的人本能地使用商店来搜索新的应用程序,因此几乎没有办法解决它们。
因此,如果您打算在WPF中开发全新的应用程序,那么您将很难分发它,如果您打算出售它会更难,所以您应该使用WinRT。

流动性

您可能通过使用网络或本机应用程序的手机消耗了大部分日常内容,因此您了解现在在这个市场上出现的重要性:您必须提供应用程序的移动版本。
WPF从来就不是移动开发的平台,也不是这个市场的参与者,多年来答案是Silverlight for Windows Phone,它是Windows Phone 7的参考工具包。
但是每个平台使用一个工具包并不理想,即使您可以共享大多数过程和标记代码。
WinRT是这个问题的答案,因为它是一个通用工具包,旨在简化所有Windows平台上的开发,这些平台在Windows 8+的操作系统级别上越来越统一。

维护成本

如果你多年来一直使用微软技术,你就会知道微软花了很多钱,并且有充分的理由:首先,作为一家公司,它必须赚钱才能生存,现在股东要求更多,所以一分钱就是一分钱,第二实现一个小功能是很昂贵的,因为涉及很多步骤; Eric Lippert在这篇博文中概述了:改变灯泡需要多少微软员工?
因此,当社区要求修复错误或新功能时,只有当它真的很重要时才会实现:
- 要么像安全漏洞一样严重,所以即使是少数受影响的用户也会触发实施
- 或者是次要的但是很烦人的很多人
开发WPF和WinRT意味着回答工具包的功能请求和修复两个工具包的错误,这显然不是一种选择,特别是当微软目前正在减少其员工队伍时。

可移植性

什么可以“保存”WPF将是一些利基,例如作为开发客户端应用程序的便携式技术,但不幸的是情况并非如此。
有一个便携版的.Net(迂腐,CLI):Mono,它当然在Windows运行,但在LinuxUnixMac运行
Mono不是一种玩具技术,它确实有效,有了它,我自己已经在Ubuntu Server上构建了一个Jenkins集成服务器。
Mono支持大多数.Net框架堆栈,但缺少的部分之一是WPF; 如果我记得很清楚有一个名为“Olive”的项目来实现它,但它从未真正开始,因为它代表了巨大的工作,特别是在低级渲染层。
Mono实现的唯一UI技术是WinForms,因此具有讽刺意味的是,由于其可移植性,WinForms可以在WPF中生存。

Silverlight综合症

我曾经是一名Silverlight开发人员,我发现技术可能比我想象的更快消失。
早在2008/2009年:RIA就是一个流行词,微软正在为自己的框架Silverlight建立品牌,在企业管理人员看到它在微软的活动中,并希望它在他们的IT生态系统中。
因此,在2010年和2011年第一季度,我们开始开发Silverlight应用程序。
但是在2011年某个关于网络的技术活动中,微软停止将Silverlight置于聚光灯下,而是开始推广HTML5生态系统(使用CSS和JS)。
据官方统计,Silverlight的故事没有改变,但我很怀疑,据报道,我们的团队决定停止Silverlight的开发,顺便提一下,这并没有带来预期的好处(例如,因为你需要Silverlight不是即插即用的要成为管理员来安装Silverlight播放器:/),而是专注于“传统”WPF。
希望大多数(可能85%)的XAML和C#代码与WPF共享,所以没有太多真正丢失,我们停止了,而我们没有太多的承诺。
这是正确的选择,因为2013年Silverlight的死亡正式宣布,不止一个IT利益相关者感到惊讶,因为他们没有看到预警迹象。
我不认为对于WPF来说会是暴力事件,但是当你生活得如此失望时,你就会停止天真并且往往变得不信任,这在我看来是当前IT环境中的一种品质。

一些不恐慌的理由

阅读完第一部分后,你可能会开始惊慌失措,但往往事情并非完全是黑色,它们是灰色的,或多或少是深灰色。
第二部分将帮助您将白色与黑色混合,因此请继续阅读......

还是一个活跃的团队

根据Greg Levenhagen(WPF Dead? - NO!)的说法,仍然有一个致力于WPF的积极开发团队。
Greg没有提供任何硬数据,因此很难衡量开发工作量。
虽然很明显微软不会放弃数百万人使用的技术,但拥有专门的开发人员,而不是在其他团队中合并,是一件好事。
仍然根据Greg的说法,这个团队不仅致力于维护现有版本,而且还准备至少下一个版本(WPF 5?)。
没有这个版本的更改日志,很难过于乐观:可能这只是一个没有任何主要功能的错误修复和性能增强版本。

仍在开发[更新2014-11]

2014年11月,WPF团队发表了一篇文章“WPF路线图”,显示WPF仍在积极开发中。
该团队主要致力于表演等重要问题,自WPF成立以来,这些问题不断得到加强,工具完全集成到Visual Studio中。
也许更重要的增强是对触摸和高密度显示的全面支持。
为什么这么重要?因为这些是平板电脑和手机等设备的功能,而且WPF因为后者专为此类设备而设计,因此不再使用WinRT。
这可能不是微软完全转向支持WPF,但它表明微软已经听取并考虑了社区的主张。

新工具版本

我注意到官方工具方面的一个积极迹象:Prism,一套用于开发XAML应用程序的工具和最佳实践,已经更新到版本5,随着WinRT版本,它确实为WPF提供了新版本。

如第一部分所述,官方WPF工具包闲置,但另一个项目获得了火炬:扩展WPF工具包
它由一个着名的扩展供应商Xceed开发,所以由WPF专家(顺便说一下其他Windows技术)开发,并且它有很多额外的控件,最重要的是项目是积极开发的,最新的版本来自2014年6月,所以不到3个月前撰写本文时。

最后,两个顶级的MVVM框架MVVM Light ToolkitCaliburn.Micro都是活跃的,新版本已有3个月的历史。

因此,WPF工具生态系统仍然生存和发展,这对企业来说尤其令人放心,因为它们没有留下一堆未维护的项目。

管理方面的变化

在2012年年底史蒂芬辛诺夫斯基,此时的Windows部门总裁,离开了微软。
为什么它会成为WPF的积极信号?因为史蒂文·辛诺夫斯基以.Net仇恨而闻名,而且与其他球队的表现不佳(也许是他离队的主要原因)。
这可以部分解释,除了一些真正的技术原因,为什么.Net不被用作下一个Windows版本的基础块,而它是微软有史以来最好的软件之一。
从外部来看,很难评估八卦的部分和Steven Sinofsky的真实感受以及它们对Windows 8+设计决策的影响。

操作系统市场惯性

WPF的另一个好处是,企业和个人不会立即迁移到每个全新的操作系统版本,并且有很多好的理由:它需要花钱,需要一些时间,风险很大,而且往往没用。
迁移到新的操作系统是一项非常艰巨的任务,因为需要确保应用程序的兼容性:由Microsoft和Office等外部供应商提供的内容以及由内部团队开发的应用程序,根据我的经验,这是一个可以轻松采取的过程2年。
目前(2014年中),WinRT在PC市场上的市场份额大幅减少:
- Windows 8 + 8.1:~15%
- Windows 7:~55%
- Windows Vista:~5%
- Windows XP:~25%
因此,对于超过80%的PC,您无法使用WinRT,除了WPF之外别无选择。
在某些情况下,对于Windows 8+而言,这是最糟糕的:在我​​在法国金融领域所知的公司中,这只是0%,到Windows 7的迁移甚至没有在任何地方完成,我知道有些仍然在运行Windows XP,因为应用程序的设置并非无足轻重。
考虑到更新周期约为5年,WPF应该是许多企业的独特选择,直到几十年结束。

ALM惯性

您可能知道退休申请费用很高:首先您要通过一系列会议进行初步研究,以评估其对业务的影响,并且您必须努力说服一些有时会将“操作风险”称为“操作风险”的用户在桌子上; 然后你必须用全新的应用程序替换它们,你必须确保没有回归,通常在完全切换之前的一段时间内并排运行旧版本和新版本; 此外,您可能不得不打电话给你的数据库团队迁移数据,网络团队,以适应防火墙规则... 
这就是为什么企业迁移应用程序时,才会有一个有效的商业理由,一个全新的技术层不是一个,这样的现有的WPF应用程序,并且有一堆,这里留下来,这意味着在可预见的未来将需要WPF技能,只需看看仍在野外的WinForms应用程序的数量,并且每天都在开发新的应用程序,而自2006年以来,WPF可以替代它。
从技术角度来看,虽然WPF和WinRT非常相似,但它们并不完全兼容:WinRT 8.1中仍然缺少功能和一些怪癖:将命名空间映射到XAML你使用clr-namespaceWPF中和using在WinRT中,这足以打破XAML兼容性和劝阻任何脆弱的意志跳!

WPF已经成熟

WPF的开发工作明显重要的减少可能令人担忧,但恕我直言,它只是遵循每个开发人员已经尝试的自然路径:开发第一个版本的巨大努力,然后仍然为后续版本的持续努力,从反馈中受益社区,最后是维护应用程序的最小努力。
这正是WPF所遵循的第一个版本(WPF 3.0(对我来说更像是测试版)和3.5)带来一种开发Windows应用程序的新方法,然后WPF 4引入了一些从工具包中移出的新控件,如的DataGrid,和性能增强,最后WPF 4.5介绍了功能区,还有一些性能增强功能。
因此,技术越成熟,所需的开发工作就越少,8年后WPF是一项非常成熟的技术,因此减少了对新功能和错误修复的需求。
可能WPF现在已进入其生命周期的维护阶段,所以不要指望它的疯狂发展。

LOB利基

如果有一个域,WPF可以存活甚至继续闪耀,这就是LOB(业务线)应用程序
首先是因为开发它们的大部分专业知识都是基于.Net,这是一个成熟的平台,许多运行Windows的公司都使用它来开发他们的LOB应用程序,不会丢弃,而是尽可能多地利用它。
而一些中央.Net工具尚不可用的WinRT的,如ORM就像NHibernate的实体框架,这是必要的,大多数LOB应用程序来访问他们的关系数据。
对于像交易平台这样的大型LOB应用程序而言,使用WinRT没有任何好处,因为出于安全原因,您不需要甚至不需要移动性。
而这种大型应用程序甚至违反了微软设计WinRT应用程序的官方指南:它们应该专注于屏幕上的最小数据集。

学习曲线

如果你是一个经验丰富的WPF开发人员而不知道它,你可能已经是 80%的WinRT开发人员,如果你是一家企业,你已经拥有80%的专业知识来开发WinRT应用程序
原因是用于开发WPF应用程序的大多数基础工具对于WinRT是相同的:
- 相同的过程语言:C#,VB.Net ... 
- 相同的标记语言:XAML,
- 将视图链接到数据的相同方式:数据绑定,DataTemplates ... 
- 类似的应用程序架构:全局结构,资源...... 
- 相同的设计模式和实现:MVVM,INotifyPropertyChanged,INotifyCollectionChanged,ICommand ......
因此,您对其他XAML平台(如WPF和Silverlight)的大部分投资都可用于WinRT,从而降低学习曲线的陡度(当您是新手时还记得WPF之一吗?;)

WPF很丰富

WinRT不是WPF的克隆,并且某些功能尚未实现,因此如果您仅从技术功能角度开发桌面应用程序,WPF仍然更好。
但我把它作为最后一个,因为恕我直言,它并不是很重要,随着WinRT将继续其演变,差距将变得越来越小,但我想一些具有特定需求的开发人员将无法使用WinRT和将需要WPF。
但同样,WinRT的附加价值不在于其内在的技术丰富性,而在于它提供的移动平台和Windows商店的开发模式中更多。

未来战略

无论您是企业还是个人开发人员,都应该认真考虑放慢对WPF的技术投资,并开始在WinRT上建立自己的专业知识。

企业

作为一个企业,只要您拥有一些旧版本的Windows,包括Windows 7,就无法阻止您的WPF开发。
至于您现有的应用程序,请不要担心,您不需要将它们迁移到WinRT,除非您希望从通过Windows商店进行部署的新功能中受益。
事实上,微软应该在可预见的未来确保对WPF的支持; 向后兼容性是微软非常重视的。
作为一个例子,虽然在新版本的Windows中设置VB6环境可能比较困难,但仍然可以设置应用程序继续无缝工作。

根据您可用的IT员工,您应该花时间学习技术情报,并让一些开发人员开始认真考虑WinRT:如何从中受益,通常是为了扩大您的受众,应该如何开发新应用程序,如何使用现有工具和代码可以重复使用,预期的潜在问题是什么...... 
对于可以从WinRT手机和平板电脑中受益的应用程序,您可以开始构建一些迁移路径,这并不是那么明显,因为WinRT缺少WPF的许多功能。
开始开发概念验证应用程序,以在您的特定环境中验证新技术,并亲自了解它是否能够实现。

开发商

作为开发人员,我们不希望拥有无人需要的技术技能,相反,我们通常必须建立足够大的技能组合,以适应我们可以减少落后风险的更多业务和项目。
因此,如果您是一位经验丰富的WPF开发人员,并且您必须在扩展您的WPF技能以成为专家或开始获得WinRT开发的新技能之间做出选择,那么恕我直言,您应该选择第二个选项。
当然你可能会像我这样做,但WinRT应该在你的TODO列表上的某个地方,但也不是你的优先事项。

或者你可以继续在WPF中等待市场缺乏WPF开发人员,就像COBOL和VB6等旧技术的情况一样,但我担心你必须等到它发生之前的十年,因为,随着IT的重要发展在企业中,对于任何技术,市场上有很多开发人员,特别是像WPF这样的主流技术,所以我不会指望它。

不要被这第n个全新技术士气低落或沮丧,这是我们行业的商业模式:它需要不断创造新事物(记住SOA从企业向IT公司的口袋投入大量资金,他们的员工,他们的股东和承包商)就像苹果公司用它的iPhone 1,2,3,......以及现在的6和很快42一样将它们卖给客户,这就是它的工作方式,幸运的是我们作为开发人员,它们是好的在障碍的一面,我们可以靠这个熵谋生,客观地说,所有这些新技术都可以提升企业和个人的生活。

结论

我认为所有这些事实的总和非常明确:WPF过去和现在,在不久的将来它将与WinRT直接竞争,但后来如果WinRT获得一些牵引力和足够的市场份额,那么WPF将变得有点被弃用像VB6或WinForms

最重要的是不要否认,并清楚地了解发生的事情,不要消除你心中的悲观事实。
不要指望WPF的复兴,IT中没有这样的东西(好的COM在WinRT中有点回归;)),WPF客观上不是为新趋势量身打造的,全新的东西是。

当然,情况并非全是黑色:WPF并没有死亡,过时,也没有死亡和过时,它刚刚达到顶峰,随着企业将其基础设施迁移到Windows 8+而逐渐消失,允许他们选择WinRT用于未来的发展。

务实和透明:使用WPF,同时为客户带来价值并警告他们这些事实,并帮助他们为未来做好准备。
我自己通过在WPF培训中交错WinRT块来更新我的培训材料,并添加一张幻灯片,其中包含这些事实的摘要,并根据它们的重要性突出显示它们。

但恕我直言,你也不应该在WinRT上投入太多。为什么?因为我玩WinRT的次数越多,想一想就越多,我认为越少越有用:

  • 如果您开发LOB应用程序,您的唯一目标可能是Windows PC,并且您需要与Windows 8之前的系统兼容,至少是Windows 7,因此WinRT显然不是一个选项,您必须使用WPF,
  • 如果你想定位平板电脑和手机,你不能忘记90%的市场,iOS和Android,所以WinRT不是一个选项,你必须使用网络堆栈(JavaScript / HTML / CSS)或本地交叉平台框架,如Xamarin(C#)或QT(C ++)。

因此对于大多数用例而言,WinRT不是一种选择。此外,您应该注意到微软正在大力投资后期技术。现在问自己“ WinRT(作为最终的开发者平台)已经死了可能还为时过早 ”但如果WinRT能够获得一些牵引力并成为一个主要的开发平台,我会感到非常惊讶。
恕我直言WinRT只是微软团队的一个很好的平台,因为它允许他们在不同风格的Windows操作系统之间共享代码,模仿Apple的努力; 但对于最终的开发人员来说,WinRT的使用案例太有限了:在PC,平板电脑和手机之间共享一些代码,但仅限于Windows设备。可能有些企业可能只需要那些,但我怀疑有很多,因为现在应用程序通常是从个人员工的设备(BYOD)访问的,这可能是任何东西,可能是一些iOS或Android。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值