【编者按】2014年11月13日,微软宣布开源.NET,包含整个.NET服务器端的核心类别,ASP.NET5.0、.NETCommonLanguageRuntime(CLR)、Just-In-TimeCompiler、GarbageCollector以及BaseClassLibraries等,都在开源的范畴之中。消息一出,霎时在全世界开发者的圈子内炸开了锅。巨头企业这次不光是口头喊出“拥抱开源”的口号,践行开源能够看出微软是动真格的了。针对此事,笔者请教了业内资深人士张善友老师。张老师根据自己多年的开发经验,针对微软开源.NET事件,表达了自己的看法。
曾经的替代品Mono:将死还是重获新生?
张老师于2001年开始接触.NET,个人很欣赏C#语言的强大操作能力、优雅的语法风格以及创新的语言特性。他认为微软.NET的优点主要有三个:多语言、多平台支持;学习成本低;拥有一流的开发工具。
然而另一方面,本身具备跨平台基因的.NET却因为微软战略部署,包括在底层代码的实现上,都没有做到跨平台的支持。真正能够实现跨平台支持的是由Novell公司发起的Mono项目,植根于.NET的技术核心,.成为了其在Linux上使用的替代品。
Mono历经十余年发展,已经成长为一个庞大的生态系统。.NETFramework和Mono的交集仅限于CLR/编译器/BCL底层以及Web栈。.NETFramework的上层为Windows和Azure设计。Mono上层针对Linux,OSX等多平台设计,不可替代的东西很多。
相比于微软,Mono项目依旧有不完善的方面,开发者在使用过程中有许多不便之处。在2007年微软仅仅是基于自己的“参考协议”公开了部分源代码,既不能编译成完整的函数库使用,也实际上不允许类似的代码使用。对于Mono项目的代码贡献者来说,这反而是个负担。
张老师表示,为了避免出现可能的版权纠纷,仔细阅读和研究过微软代码的人是不能够给Mono捐献核心代码的。彻底的基于OSI认证的MIT协议公开了.NETFramework的核心代码,并且提供了免费的专利授权,这使得Mono可以“拿来就用”。更好的繁荣了.NET/Mono这两个庞大的生态系统。微软完全开源.NET,提供了专利承诺,都将都有助于.NET得到应用。此外,Mono团队可以利用微软的开源,来解决Mono代码库中不完整或者存在错误的地方。
开发者:重新回归.NET社区
张老师表示,曾经身边的很多人都离开.NET开发转向Java、PHP等的开发。.NET的开源能够吸引这些人重回.NET社区,对推动社区的发展非常有帮助。
张老师说,在国内经常听到这样的故事,某产品是基于.NET开发的,而政府的项目需要使用Linux操作系统。开发者不得不面对两种选择,第一种是将产品移植到Mono平台,另一种选择是重新组建一个Java开发团队将产品重新用Java开发一遍。这两种选择在国内都有,但是可惜的是很多都选择了重新组建一个Java团队,而不是将产品移植到Mono平台。但随着微软开源.NET之后,开发者们再也不需要被迫走弯路了,包容开放的社区环境无疑会收获大量人才的回归。
微软:开源并不是突然之举
其实早在多年前微软就通过开源asp.netmvc等项目支持了Mono项目。近年微软开始参与Linux内核贡献并成立了开放技术子公司。在今年4月成立.NET基金会,将众多开发工具纳入开源计划之中,例如.NET编译平台Roslyn、ASP.NET、.NETMicroFramework等,这一系列的举动都是.NET开源的前奏。
微软的市值现在升值为4100亿美元,超过了谷歌公司位居全球第二,自身正逐渐走出PC时代的思维困局,做好准备迎接即将到来的物联网时代。微软发布新的计划,将加大对.NETMicroFramework的投入力度,着力在智能设备和物联网领域进行深度开发。
擅长PC业务的微软,在“云”这个平台上,自身的技术和整体布局上并没有落后,战略眼光和实际执行均部署到位。但是在移动入口(手机、平板)市场,微软进入的虽早,却收效甚微。即便是收购了日渐式微的老牌巨头诺基亚,也没有摆脱战败的局面。所以微软现在宣布开源.NET,鼓励支持Android和IOS开发,就是想在移动入口有所作为。
未来:纳德拉在下一盘很大的棋
开源.NET是为了落实微软新任CEO萨提亚·纳德拉倡导的“移动为先,云为先”新政。张老师认为,在现在的时代,存在替代选择的情况下,开发者已经没有理由为操作系统付费。他们可以选择云服务。微软此举只是吸引更多开发者使用其Azure服务。
微软的营收支柱软件Windows和Office都完成了云化,Windows对应Azure云平台,Office演化成了Office365。微软的战略重心已经从PC转移到云端,.NET开源可以促使更多的开发者使用Azure云服务。
纳德拉在上任后实施的一系列举措让微软在潜移默化中得到改变,信奉跨平台战略,主张以开发者而不是Windows为中心重构微软的软件和云基础架构,搭建完善的云开发的生态系统,无疑是对竞争对手们的沉重的打击。新政致力于将微软的生态核心从Windows操作系统转移到Azure云。.NET的开源有利于实现微软新生态向Linux,iOS和Android的渗透,VisualStudio和.NET能够真正走向跨平台化。
原文出自:雷锋网