Silverlight消散,WinRT登台
2011年,Silverlight刚开始有蓬勃发展的起色,不利的传言就开始大量流传。不安的Silverlight开发者们要求微软澄清,但得到的只是沉默。终于随着微软在BUILD上亮相Window 8以及新的API WinRT,开发者们意识到,Silverlight的故事结束了。尽管微软在年底如期发布了大幅改进的Silverlight 5,但大势已去,微软甚至都没怎么宣传。随后传闻Silverlight的开发团队大部分转移到了Windows Azure项目。那么,Silverlight何以失宠呢?
作为免费的开发工具,Silverlight是不产生直接利润的。开发工具的主要用途在于推进平台的市场占有率,对微软来说,就是最赚钱的Windows系统。但跨平台的Silverlight,并不能为已经占有大部分市场的Windows作出贡献,反而为其它系统提供了优质的开发工具和大量的Windows程序员,以及移植的Windows程序。这导致它反而削弱了Windows的盈利能力。因为在有良好的跨平台开发工具的条件下,操作系统的重要性大大降低,不管什么系统,只要能支持用户需要的应用程序就可以了。
Silverlight的本来意图是夺取Flash的Web平台,可不但这一点没有成功,反而由于早期的大力投入,反而抢了WPF的用户群。想想看,尽管功能比WPF少一点,但Silverlight可是跨平台的,可以轻易地把业务拓展到非Windows平台,何乐而不为呢?而对微软来说,付出了双倍的努力,却没能抢到多少Flash的市场,反而分散了自己的用户。之后,Apple在iPad上封禁Flash,同时也注定了Silverlight的跨平台战略已经成为不可能完成的任务。
如此,Silverlight已成鸡肋。但至少还能在Windows Phone 7上,作为首选的开发工具,最后闪耀一次。
至于Windows 8、WinRT和Windows Store,和Apple对比一下就能看出其基本对应iOS、Cocoa和AppStore。传闻中,鲍尔默对Apple产品推崇至极,以至和不少其它高管意见不合,内部人事变动频频。其实当今复制Apple模式的公司为数不少,而且微软旗下的XBox部门早已通过XNA MarketPlace实践多年。尤其Apple绝对强势的私有平台、私有API策略不但没有招致批评,反而好评如潮,也大大刺激了微软蠢蠢欲动、想要重回平台锁定战略的心。
那么,为什么不为平板设备、手机等专门做一个系统,而偏偏要把桌面平台的Windows改成两用的呢?作为一个大企业的战略,必然是以3到5年的长期规划,以电子设备的发展速度,那时平板、手持设备的计算能力将超越目前的桌面电脑,不可避免地将具有当前桌面电脑的功能,两者融合是早晚的事。即使今天,高端平板同样可以具有等同桌面电脑的计算能力,而且微软看中的主要市场,恰恰是企业商用平板。事实上,在iPad面世前两年,微软就已经制作了叫做Surface的多点触控平板设备,但因为造价昂贵、体积过大,实在难以商业化;但使用XP系统的上网本却卖得火热。
另一方面,推出一个全新的系统的需要其他厂商的配合、消化和大力推广,难度和所需时间远在推出一个大家所熟悉的系统的改进版之上。之前的Windows CE, Windows Embedded, Windows Phone也并不算顺利。在Windows系统垄断地位受到威胁的局面下,与其分化自己的产品线,自己和自己竞争,不如集中资源办大事。
但这个选择也有明显的不利因素,就是难以在功耗和电池续航时间上和专为平板设计的iOS匹敌。
这次大变动也提供了一次彻底革新Windows API的机会。对于未来的API应该是Native的还是Managed,这个争议自微软开发Vista时就存在。最终,WinRT是基于改版后的COM的native代码,但引入了大量.NET的对象模型概念,甚至完全重用的了.NET的元数据格式,重写了WPF。从微软的角度来讲,他们终于可以用一套API来服务所有的编程语言了。
但从各个编程语言的角度,却让完美主义的开发人员很纠结。对C++程序员而言,很少有人认为写COM程序很幸福,所以VC里添加了叫做C++/CX的语言扩展,结果C++用户们愤怒了。之前已经有了Managed C++和C++/CLI,这回是C++/CX,下次是什么呢?为什么不能简单地提供个C++的API呢?对.NET程序员而言,尽管WinRT的界面API和WPF很相似,但不再是原生的.NET对象,多了些转换,而且WinRT对象的内存管理模式是引用计数而不是垃圾回收,必须小心环形引用了。微软在BUILD上确实曾经宣称.NET程序不用再为包装native API费心了。但事实上,并不是所有的API都由WinRT提供,比如DirectX 11仍然是基于传统COM的,甚至还有一些Win32 API。
http://blog.csdn.net/nightmare/article/details/7226678
Silverlight消散,WinRT登台的更多相关文章
- Mobilize.Net Silverlight bridge to Windows 10 UWP
Windows UWP 既 Windows 10 Universal Windows platform,这个微软基于Windows NT内核的个运行时(Runtime)平台,此平台横跨所有的 Wind ...
- A Complete List of .NET Open Source Developer Projects
http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/?utm_source=tuic ...
- Trigger和ViewStateManager的具体比较
ViewStateManager的好处 拥有 GeneratedDuration ,可以很方便的进行几个状态之间的切换过渡动画. 坏处是,在界面加载时只能显示默认效果,通过GoToStateActi ...
- 随心所欲导出你的 UI 界面到 PDF 文件
使用 C1PDF 控件可以导出文件到 PDF 文件,结合 .NET 平台特性你可以在任何客户端生成自定义报表.你可以打印任何 UI 界面,例如 DataGrid 导出到 PDF. 在本篇文章中我们将阐 ...
- .NET 开源开发项目【翻译】
原文地址 本文列出了 .NET 开源开发项目(open source developer projects).意在包括对开发过程的所有方面有所帮组的项目.对于消费项目(consumer project ...
- 闲聊桌面应用开发[Win16->Win32->ATL/WTL/MFC->WinForm->WPF/Silverlight/WinRT]
闲来无聊,正好小组人员讨论到桌面的开发,那把笔者接触的WIndows平台下的几个主要的发展过程聊一聊. 主要从概述,参考资料,图书等几个方面说起. 所有的界面开发都会涉及如下的几个方面的内容: v 控 ...
- Win8 WinRT将替换Win32 API程序员何去何从?
win8 新引入了称为WinRT的核心API.支持使用C/C++..NET或JavaScript来开发Metro风格的应用.这些应用自动获得硬件加速和高级电源管理的功能.现有的Silverlight和 ...
- 构建基于WinRT的WP8.1 App 03:Page控件
单页面模板 通常利用Visual Studio 2013创建的最简单的WP8.1应用是Blank App,它只包含一个不带任何UI的页面,并且没有任何状态管理的逻辑. 该不带任何UI的页面称为Blan ...
- 构建基于WinRT的WP8.1 App 02:数据绑定新特性
基于WinRT的Windows Phone 8.1以及Windows 8.1中Xaml数据绑定增加了一些新特性. FallBackValue属性:FallBackValue在绑定的值属性值不存在时,可 ...
随机推荐
- 华为云软件开发云:容器DevOps,原来如此简单!
当开发团队把代码提交到 Git 应用仓库的那一刻,他们心里在想什么? 祈祷没有bug?渴望回家补觉?产品经理Go Die? 对,也不对.因为这只是最终发布万里长征的一小步,接下来要面对测试环境.生产环 ...
- CentOS查看系统信息和资源使用已经升级系统的命令
1.查看系统版本: 1)cat /etc/redhat-release 2)uname -a 2.查看资源使用: top 3.升级所有包同时也升级软件和系统内核: yum -y update
- Residential Gateway System for Home Network Service
Disclosed herein is a Residential Gateway (RG) system for home network service. The RG system receiv ...
- python于lxml应用
首先下载lxml, http://www.lfd.uci.edu/~gohlke/pythonlibs/ ,然后加入引用 from lxml import _elementpath as DONTUS ...
- Network management system scheduling for low power and lossy networks
In one embodiment, a network management system (NMS) determines an intent to initialize a request-re ...
- cordova/phoneGap 开发调试工具
原文地址 一.前言 Ripple Emulate:使用Google模拟器,可以帮到大部分的调试,除了需要调用手机设备方面的功能除外.GapDebug:真机安装apk,电脑端和真机端同步调试,适用的项目 ...
- 修改MessageBox的标题的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 1.用Win API的::MessageBox或CWnd::MessageBox代替AfxMessageBox. 2. ...
- JScript实现将指定目录下的vc工程加到解决方案
作者:朱金灿 来源:http://blog.csdn.net/clever101 main(); function main() { try { var WSShell = WScript.Creat ...
- 允许Android对于飞行模拟器
Android模拟器是公认的慢,并且不是一般的慢,即使在高性能的PC上,跟开发环境没关系,由于它就是慢.可是我们又必须使用模拟器,比方在測试Android不同版本号的兼容性时,或者在測试不同屏幕尺寸的 ...
- JavaScript实现算法
leetcode算法题(JavaScript实现) 题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度 ...