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登台的更多相关文章

  1. Mobilize.Net Silverlight bridge to Windows 10 UWP

    Windows UWP 既 Windows 10 Universal Windows platform,这个微软基于Windows NT内核的个运行时(Runtime)平台,此平台横跨所有的 Wind ...

  2. 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 ...

  3. Trigger和ViewStateManager的具体比较

    ViewStateManager的好处  拥有 GeneratedDuration ,可以很方便的进行几个状态之间的切换过渡动画. 坏处是,在界面加载时只能显示默认效果,通过GoToStateActi ...

  4. 随心所欲导出你的 UI 界面到 PDF 文件

    使用 C1PDF 控件可以导出文件到 PDF 文件,结合 .NET 平台特性你可以在任何客户端生成自定义报表.你可以打印任何 UI 界面,例如 DataGrid 导出到 PDF. 在本篇文章中我们将阐 ...

  5. .NET 开源开发项目【翻译】

    原文地址 本文列出了 .NET 开源开发项目(open source developer projects).意在包括对开发过程的所有方面有所帮组的项目.对于消费项目(consumer project ...

  6. 闲聊桌面应用开发[Win16->Win32->ATL/WTL/MFC->WinForm->WPF/Silverlight/WinRT]

    闲来无聊,正好小组人员讨论到桌面的开发,那把笔者接触的WIndows平台下的几个主要的发展过程聊一聊. 主要从概述,参考资料,图书等几个方面说起. 所有的界面开发都会涉及如下的几个方面的内容: v 控 ...

  7. Win8 WinRT将替换Win32 API程序员何去何从?

    win8 新引入了称为WinRT的核心API.支持使用C/C++..NET或JavaScript来开发Metro风格的应用.这些应用自动获得硬件加速和高级电源管理的功能.现有的Silverlight和 ...

  8. 构建基于WinRT的WP8.1 App 03:Page控件

    单页面模板 通常利用Visual Studio 2013创建的最简单的WP8.1应用是Blank App,它只包含一个不带任何UI的页面,并且没有任何状态管理的逻辑. 该不带任何UI的页面称为Blan ...

  9. 构建基于WinRT的WP8.1 App 02:数据绑定新特性

    基于WinRT的Windows Phone 8.1以及Windows 8.1中Xaml数据绑定增加了一些新特性. FallBackValue属性:FallBackValue在绑定的值属性值不存在时,可 ...

随机推荐

  1. maven 依赖(依赖范围,聚合,继承等)

    目录: 1.什么是依赖? 2.依赖的管理:依赖的范围与传递,依赖的排除,依赖的原则(maven对依赖冲突的处理原则) 3.依赖的版本管理 4.继承与聚合 1.什么是依赖? 简单的讲,当jar包A需要j ...

  2. webpack单独构建scss文件与.vue组件里构建scss的一个坑

    在入口main.js里构建scss是通过引入模块的方式 import './assets/_reset.scss'; import './assets/_flex.scss'; import './a ...

  3. postman VS restlet client基本使用

    postman与restlet都是使用的google浏览器的插件(出不去自行解决,you get!),此两款软件的强大这里就不在赘述了,postman的网上说明很多,restlet的中文配置很少了.这 ...

  4. yii2框架学习一 yii安装与常见问题

    1 安装安装有两种  cpmposer 喝归档文件 安装  这里采用的归档文件安装    归档文件安装分为两种 基础末班和高级模板,这里采用高级模板  在官网或者yii-china 下载归档文件  解 ...

  5. 从Client应用场景介绍IdentityServer4(二)

    原文:从Client应用场景介绍IdentityServer4(二) 本节介绍Client的ClientCredentials客户端模式,先看下画的草图: 一.在Server上添加动态新增Client ...

  6. 转载来自朱小厮博客的 一文看懂Kafka消息格式的演变

    转载来自朱小厮博客的 一文看懂Kafka消息格式的演变     ✎摘要 对于一个成熟的消息中间件而言,消息格式不仅关系到功能维度的扩展,还牵涉到性能维度的优化.随着Kafka的迅猛发展,其消息格式也在 ...

  7. go语言刷leetcode - 14 Longest Common Prefix

    func longestCommonPrefix(strs []string) string { { return "" } { ] } ; ; idx++ { ; i < ...

  8. 微信公众平台自定义菜单接口API指南

    微信公众平台开发模式自定义菜单接口API指南 简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和删除等操作. 自定义菜单接口可实现以下类型按钮: clic ...

  9. C#中HttpWebRequest与HttpWebResponse的使用方法

    关键字:C# HttpWebRequest HttpWebResponse HTTP GET POST 请求 这个类是专门为HTTP的GET和POST请求写的,解决了编码,证书,自动带Cookie等问 ...

  10. WPF文字描边的解决方法

    原文:WPF文字描边的解决方法  由于项目原因,今天研究了一下午WPF的文字描边,网上这方面的资料奇少,搞了半天才发现强大的WPF原来不直接支持文字描边啊.最后求助于MSDN,找到了方案,和大家分 ...