How to be Happy [Even If You've Forgotten What it Feels Like]
例如:Windows Vista和“app gap”。
根据埃文斯数据公司(EDC) ,不到10%的开发人员正在撰写微软当前的技术水平。大部分(49%)仍在为XP写作,而一个规模不大但增长迅速的团队(13%)则专注于Linux。与此同时,无数主要媒体继续谴责缺乏新的Vista应用程序。 “这是没人愿意的操作系统,”他们说,开发人员正在“做出相应的反应”。当然,他们错了。
[进一步阅读:我们最好的Windows 10技巧,提示和调整]
你看,没有Vista应用程序这样的东西。就像没有XP应用程序一样。或者一个Windows 2000应用程序。为Windows编写的开发人员很少针对特定版本。相反,他们选择一个特定的API框架 - 例如MFC / ATL或.Net - 并从那里开始。是否在给定的Windows版本上运行得到的应用程序取决于开发人员在其项目中使用的版本特定的API扩展(如果有的话)。对于大多数应用程序类型,这是非发行版:它们使用通用API函数,它允许它们在支持该框架的任何版本的Windows上运行。而且,由于微软在向其旧版操作系统平台移植新框架方面表现出色,开发人员很少会面临在丰富的API功能或广泛的安装基础之间进行选择的问题(值得注意的例外是视频游戏开发人员,他们利用DirectX 10平均承诺Vista)
因此,整个Vista“应用程序差距”的论点是一个稻草人。真正的问题应该是:为什么开发人员不利用.Net框架的各种迭代?任何遵循微软开发路线图的人都会证实,公司的大部分尖端API发展都是在.Net内进行的。事实上,当“专家”在Vista中谈论新的编程资源时--Windows Presentation Foundation(WPF),Windows Communication Foundation(WCF)等等 - 他们确实在讨论.Net framework 3.0。由于.Net 3.0可以在低级平台(如Windows XP)上使用,因此论点回到了开发人员接受.Net的问题 - 以及他们为什么(迄今为止)避免了这一问题。
The答案是双重的:首先,开发人员不喜欢针对在已安装的基础中广泛使用的API。尽管微软积极支持低级版本,但下载20MB以上的复杂库并将它们安装在系统的各个部分之后,“可用”和“可用”之间仍有很大差异。“事实是.Net并不是Windows XP的一部分,这意味着开发人员需要说服用户在安装软件之前首先安装所需的.Net框架版本 - 而不是总是很容易销售,特别是在锁定的企业IT领域。
作为默认安装.Net框架的第一款操作系统,Vista应该鼓励开发.Net 3.0应用程序。但是,由于它也支持传统的Win32,COM,ATL,MFC和底层的.Net框架应用程序,因此Vista程序并没有真正的缺陷。实际上,除非你需要拥有最新,最好的WPF / WCF框架功能,否则几乎没有什么能激励你,开发人员跳入.Net 3.0甚至2.0。假设您不会遇到用户帐户控制(UAC)机制,那么您的“传统”Windows应用程序可能在Vista下看起来很好,并且工作得很好。我知道,因为我自己的代码就是这种情况:适应UAC的一些调整(主要是将一些临时文件从新保护的目录结构中移出),我的应用程序和服务在Vista下运行得像冠军一样 - 就像他们在Windows XP,Server 2003和Windows 2000.为什么在没有损坏的时候修复它?
开发人员避开.Net的第二个原因是它速度很慢。许多常见功能在.Net下花费更长时间,迫使开发人员在API复杂性和原始性能之间进行选择。毫不奇怪,大多数开发人员选择后者,就像我曾经被迫做的那样,当我发现性能数据助手(PDH)的.Net等价物几乎不能用于实时采样Windows性能计数器数据时。因此,我不得不维持老化(大约1997年)的Visual Studio 6代码库,同时等待微软最终简化.Net到一个可行的替代方案。这是一个古老的故事,在Windows开发人员中很常见。
底线:当分析师(和他们的媒体帮凶)谴责缺乏“Vista应用程序”时,他们只是吹嘘自己的无知。
我猜这是一个Mac的事情:我的许多同时代人都陷入了现实扭曲领域,API功能与操作系统版本之间的联系已经成为传统智慧的一部分。这是一个诚实的错误,将苹果公司过时的版本依赖关系与微软的不完善,但更加灵活的API蔓延等同起来。
过多的水果会对你产生影响