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在绑定的值属性值不存在时,可 ...
随机推荐
- 【序列操作I】线段树
题目描述 Lxhgww 最近收到了一个 01 序列,序列里面包含了 n(1≤n≤105)个数,这些书要么是 0,要么是 1,现在对这个序列有五种变换操作和询问操作:1. 0 a b ,把[a,b]区间 ...
- cordova 生成发行版apk,并添加证书 – 畅玩Coding
原文:cordova 生成发行版apk,并添加证书 – 畅玩Coding 首先jdk生成证书. 1.进入jdk安装目录 D:\Java\jdk1.7.0\bin 2.执行命令 keytool -gen ...
- 全文检索(elasticsearch入门)
Elasticsearch篇: Elasticsearch是一个采用java语言开发的,基于Lucene构造的开源,分布式的搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定可靠. Elastics ...
- opencc 繁体简体互转 (C++)
繁体字通常采用BIG5编码,简体字通常采用GBK或者GB18030编码,这种情况下,直接使用iconv(linux下有对应的命令,也有对应的C API供编程调用)就行.对于默认采用utf-8 ...
- Android中的后台邮件发送
一.调用邮件发送工具类进行邮件发送 new Thread(){ public void run() { try { GMailSender sender = new GMailSender( &quo ...
- CMake 添加头文件目录,链接动态、静态库(添加子文件夹)
CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...
- memcache redis mogodb 分别适用在什么样的场景?
memcache 与 redis 都是key-value存储系统,相对来说redis可能比memcache适应场景多些,存储的value类型也更多些,而redis也支持主从同步.而mongo是一种文档 ...
- java中判断字符串中是否有中文字符
package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...
- Exclusive access control to a processing resource
A data processing system is provided with multiple processors that share a main memory. Semaphore va ...
- matlab 基础知识class < superclass_name
matlab中的class,在matlab中也能够通过创建类的方式实现面向对象编程. 1)类定义 >> classdef (attribute1 = value,...) classnam ...