资深人士剖析微软开源.NET事件:战略重心已经从PC转移到云端
本文是雷锋网对我的访谈整理的文章,源地址是 http://www.leiphone.com/news/201411/6KaGhD7PDABnvrRf.html
2014年11月13日,微软表示开源.NET,包含整个.NET服务器端的核心类别,ASP.NET 5.0、.NET Common Language Runtime(CLR)、Just-In-Time Compiler、Garbage Collector以及Base Class Libraries等,都在开源的范畴之中。0
0
消息一出,霎时在全世界开发者的圈子内炸开了锅。巨头企业这次不光是口头喊出“拥抱开源”的口号,践行开源能够看出微软是动真格的了。针对此事,笔者请教了业内资深人士张善友老师(博客链接点击这里)。张老师根据自己多年的开发经验,针对微软开源.NET事件,表达了自己的看法。0
曾经的替代品Mono:将死还是重获新生?
张老师于2001年开始接触.NET,个人很欣赏C# 语言的强大操作能力、优雅的语法风格以及创新的语言特性。他认为微软.NET的优点主要有三个:多语言、多平台支持;学习成本低;拥有一流的开发工具。0
然而另一方面,本身具备跨平台基因的.NET却因为微软战略部署,包括在底层代码的实现上,都没有做到跨平台的支持。真正能够实现跨平台支持的是由Novell公司发起的Mono项目。Mono现在由Xamarin在运营,根植于.NET的技术核心,成为了其在Linux上使用的替代品。0
Mono 历经十余年发展,已经成长为一个庞大的生态系统。.NET Framework 和 Mono 的交集仅限于 CLR/编译器/BCL 底层以及 Web 栈。.NET Framework 的上层为 Windows 和 Azure 设计。Mono 上层针对 Linux, OS X 等多平台设计,不可替代的东西很多。0
相比于微软,Mono项目依旧有不完善的方面,开发者在使用过程中有许多不便之处。在2007年微软仅仅是基于自己的“参考协议”公开了部分源代码,既不能编译成完整的函数库使用,也实际上不允许类似的代码使用。对于 Mono 项目的代码贡献者来说,这反而是个负担。0
张老师表示,为了避免出现可能的版权纠纷,仔细阅读和研究过微软代码的人是不能够给 Mono 捐献核心代码的。彻底的基于 OSI 认证的 MIT 协议公开了.NET Framework 的核心代码,并且提供了免费的专利授权,这使得 Mono 可以“拿来就用”。更好的繁荣了 .NET/Mono 这两个庞大的生态系统。微软完全开源.NET,提供了专利承诺,都将都有助于.NET得到应用。此外,Mono团队可以利用微软的开源,来解决Mono代码库中不完整或者存在错误的地方。0
开发者:重新回归.NET社区
张老师表示,曾经身边的很多人都离开.NET开发转向Java、PHP等的开发。.NET的开源能够吸引这些人重回.NET社区,对推动社区的发展非常有帮助。0
张 老师说,在国内经常听到这样的故事,某产品是基于.net开发的,而政府的项目需要使用Linux操作系统。开发者不得不面对两种选择,第一种是将产品移 植到Mono平台,另一种选择是重新组建一个Java开发团队将产品重新用Java开发一遍。这两种选择在国内都有,但是可惜的是很多都选择了重新组建一 个Java团队,而不是将产品移植到Mono平台。但随着微软开源.NET之后,开发者们再也不需要被迫走弯路了,包容开放的社区环境无疑会收获大量人才 的回归。0
微软:开源并不是突然之举
其实早在多年前微软就通过开源asp.net mvc等项目支持了Mono项目。近年微软开始参与Linux内核贡献并成立了开放技术子公司。在今年4月成立.NET基金会,将众多开发工具纳入开源计划之中,例如.NET编译平台Roslyn、ASP.NET、.NET Micro Framework等,这一系列的举动都是.NET开源的前奏。0
微软的市值现在升值为4100亿美元,超过了谷歌公司位居全球第二,自身正逐渐走出PC时代的思维困局,做好准备迎接即将到来的物联网时代。微软发布新的计划,将加大对.NET Micro Framework的投入力度,着力在智能设备和物联网领域进行深度开发。0
擅长PC业务的微软,在“云”这个平台上,自身的技术和整体布局上并没有落后,战略眼光和实际执行均部署到位。但是在移动入口(手机、平板)市场,微软进入的虽早,却收效甚微。即便是收购了日渐式微的老牌巨头诺基亚,也没有摆脱战败的局面。所以微软现在宣布开源.NET,鼓励支持Android和IOS开发,就是想在移动入口有所作为。0
未来:纳德拉在下一盘很大的棋
0
开源.NET是为了落实微软新任CEO萨提亚·纳德拉倡导的“移动为先,云为先”新政。张老师认为,在现在的时代,存在替代选择的情况下,开发者已经没有理由为操作系统付费。他们可以选择云服务。微软此举只是吸引更多开发者使用其Azure服务。0
微软的营收支柱软件Windows和Office 都完成了云化,Windows 对应Azure云平台,Office 演化成了Office 365 。微软的战略重心已经从PC转移到云端,.NET开源可以促使更多的开发者使用Azure云服务。0
纳德拉在上任后实施的一系列举措让微软在潜移默化中得到改变,信奉跨平台战略,主张以开发者而不是Windows为中心重构微软的软件和云基础架构,搭建完善的云开发的生态系统,无疑是对竞争对手们的沉重的打击。新政致力于将微软的生态核心从Windows操作系统转移到Azure云。.NET的开源有利于实现微软新生态向Linux,iOS和Android的渗透,Visual Studio 和.NET 能够真正走向跨平台化。
资深人士剖析微软开源.NET事件:战略重心已经从PC转移到云端的更多相关文章
- 微软开源的Trill是什么?
微软开源的Trill是什么? https://www.cnblogs.com/CattaC/p/10143445.html 微软开源的Trill是什么? 以下是一篇15年的文章的译文:https:// ...
- 微软开源大规模数据处理项目 Data Accelerator
微软开源了一个原为内部使用的大规模数据处理项目 Data Accelerator.自 2017 年开发以来,该项目已经大规模应用在各种微软产品工作管道上. 据微软官方开源博客介绍,Data Accel ...
- 社区活动分享PPT:使用微软开源技术开发微服务
上周六在成都中生代技术社区线下活动进行了一个名为"微软爱开源-使用微软开源技术开发微服务"的技术分享. 也算是给很多不熟悉微软开源技术的朋友普及一下微软最近几年在开源方面所做的努力 ...
- K & DN 的前世今生(微软开源命名变革)
一个非常有意思的 Issue:Can we rename K? 在这个 Issue 中,有大量的社区开发者讨论了微软开源命名问题,主要是 K 如何进行替换掉?看来大伙都对微软项目命名有歧义,首先,再次 ...
- Winjs – 微软开源技术发布的 JavaScript 组件集
Winjs 是由微软开源技术的开发者推出的一组 JavaScript 组件,包括 ListView.ListView.Tooltip.DatePicker.Ratings 等等,帮助 Web 开发人员 ...
- 微软开源自动机器学习工具NNI安装与使用
微软开源自动机器学习工具 – NNI安装与使用 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...
- 【重磅】微软开源自动机器学习工具 - NNI
[重磅]微软开源自动机器学习工具 - NNI 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了.即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中 ...
- 【干货】快速部署微软开源GPU管理利器: OpenPAI
[干货]快速部署微软开源GPU管理利器: OpenPAI 介绍 不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力.除此之外,还要压榨出硬件的所有潜力来加快模型训练.OpenPAI作为 ...
- ethr 微软开源的tcp udp http 网络性能测试工具
ethr 是微软开源的tcp udp http 网络性能测试工具包包含的server 以及 client 我们可以远程测试 同时对于https icmp 的支持也在开发中,tcp 协议支持连接.带宽. ...
随机推荐
- PHP webservice的使用
提到php的webservice.之前还是比较陌生的,因为接触的少呀,几乎在所有的公司中没用过,仅仅用过的一次好像是接入一个第三方的短信通道,用的是SOAP|WSDL. 一个很极端的话“webserv ...
- Qt基本框架介绍
#include <QApplication>#include <QWidget> int main(int argc, char *argv[]){ QApplication ...
- Python-类的属性
类的属性,可以称为成员变量 类的方法,可以称为成员函数 对象的创建 - 创建对象的过程称之为实例化:当一个对象被创建后,包含三个方面的特性:对象句柄.属性和方法. - 句柄用于区分不同的对象(实例 ...
- Hadoop 全分布模式 平台搭建
现将博客搬家至CSDN,博主改去CSDN玩玩~ 传送门:http://blog.csdn.net/sinat_28177969/article/details/54138163 Ps:主要答疑区在本帖 ...
- mongoose数据库连接和操作
var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...
- continue语句在for语句和while语句中的区别
while语句的形式: while( expression ) statement for语句的形式: for( expression1; expression2;expression3 ) // ...
- docker 1.8+之后ubuntu安装指定版本docker-engine
这边记录ubuntu安装过程,首先是官网文档 If you haven’t already done so, log into your Ubuntu instance. Open a termina ...
- Map的性能
HashMap Map基于散列表的实现(它取代了Hashtable).插入和查询"键值对"的开销是固定的.可以通过构造器设置容量和负载因子,以调整容器的性能 LinkedHashM ...
- javaWeb高级编程(1)
十月 24, 2016 10:41:43 上午 org.apache.catalina.core.StandardContext setPath警告: A context path must eith ...
- $(function(){}) 与(function(){})()在执行时的优先级
$(function(){}) 是在页面DOM元素加载完成后执行,这时页面中的DOM对象都可以找到; (function(){})()是匿名函数,按页面从上到下顺序,执行到它时才执行,这时可能有的在此 ...