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在绑定的值属性值不存在时,可 ...
随机推荐
- maven 依赖(依赖范围,聚合,继承等)
目录: 1.什么是依赖? 2.依赖的管理:依赖的范围与传递,依赖的排除,依赖的原则(maven对依赖冲突的处理原则) 3.依赖的版本管理 4.继承与聚合 1.什么是依赖? 简单的讲,当jar包A需要j ...
- webpack单独构建scss文件与.vue组件里构建scss的一个坑
在入口main.js里构建scss是通过引入模块的方式 import './assets/_reset.scss'; import './assets/_flex.scss'; import './a ...
- postman VS restlet client基本使用
postman与restlet都是使用的google浏览器的插件(出不去自行解决,you get!),此两款软件的强大这里就不在赘述了,postman的网上说明很多,restlet的中文配置很少了.这 ...
- yii2框架学习一 yii安装与常见问题
1 安装安装有两种 cpmposer 喝归档文件 安装 这里采用的归档文件安装 归档文件安装分为两种 基础末班和高级模板,这里采用高级模板 在官网或者yii-china 下载归档文件 解 ...
- 从Client应用场景介绍IdentityServer4(二)
原文:从Client应用场景介绍IdentityServer4(二) 本节介绍Client的ClientCredentials客户端模式,先看下画的草图: 一.在Server上添加动态新增Client ...
- 转载来自朱小厮博客的 一文看懂Kafka消息格式的演变
转载来自朱小厮博客的 一文看懂Kafka消息格式的演变 ✎摘要 对于一个成熟的消息中间件而言,消息格式不仅关系到功能维度的扩展,还牵涉到性能维度的优化.随着Kafka的迅猛发展,其消息格式也在 ...
- go语言刷leetcode - 14 Longest Common Prefix
func longestCommonPrefix(strs []string) string { { return "" } { ] } ; ; idx++ { ; i < ...
- 微信公众平台自定义菜单接口API指南
微信公众平台开发模式自定义菜单接口API指南 简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和删除等操作. 自定义菜单接口可实现以下类型按钮: clic ...
- C#中HttpWebRequest与HttpWebResponse的使用方法
关键字:C# HttpWebRequest HttpWebResponse HTTP GET POST 请求 这个类是专门为HTTP的GET和POST请求写的,解决了编码,证书,自动带Cookie等问 ...
- WPF文字描边的解决方法
原文:WPF文字描边的解决方法 由于项目原因,今天研究了一下午WPF的文字描边,网上这方面的资料奇少,搞了半天才发现强大的WPF原来不直接支持文字描边啊.最后求助于MSDN,找到了方案,和大家分 ...