首页 > 编程语言 >.NET开源进行时:消除误解、努力前行(本文首发于《程序员》2015第10A期的原始版本)

.NET开源进行时:消除误解、努力前行(本文首发于《程序员》2015第10A期的原始版本)

时间:2022-10-24 11:08:49浏览次数:89  
标签:Core 微软 Mono 10A 开源 开发者 2015 NET

最近几年,微软对于开源越来越支持,但是给开发社区的形象还没有转变过来。有篇文章《对微软技术的典型误解和偏见》写的非常贴切,对微软技术的误解与偏见在社区里是很微妙的,不少人对微软的开发技术栈有一些由来已久的偏见。微软已经做行业老大很多年,其在闭源方面的印象给开发者影响太深刻了,很难在短时间内扭转。需要持续的运营投入和影响。

2014年11月12日,ASP.NET之父、微软云计算与企业级产品工程部执行副总裁Scott Guthrie,在Connect全球开发者在线会议上宣布,微软将开源全部.NET核心运行时,并将.NET 扩展为可在 Linux 和 Mac OS 平台上运行。.NET核心运行时将基于MIT开源许可协议发布,其中将包括执行.NET代码所需的一切项目——CLR、JIT编译器、垃圾收集器(GC)和核心.NET基础类库。

自从11月公布这一计划以来微软已将自己的关键技术都进行了开源,包括​​.NET Core、Roslyn、ASP.NET 5、MSbuild、WCF、OData​​​等。按照微软ASP.NET 5 的路线图(详见 ​​ASP.NET 5 Schedule and Roadmap​​),2015年9月2日已经发布了里程碑的跨平台版本,完成.NET Core 的跨平台开发,为 Mac 与 Linux 平台提供基于 .NET Core 的 dnx,实现完整的 .NET 跨平台开发工作流,并基于跨平台 .NET 开发一些应用案例,等到下个月初发布Beta 8的的时候就进入特性冻结阶段了。

微软实际上一共推出了三个以MIT方式授权的源代码集:

  • ReferenceSource
  • CoreFX
  • CoreCLR

.NET开源进行时:消除误解、努力前行(本文首发于《程序员》2015第10A期的原始版本)_.net

上图中.NET Core 5 可以完整跨平台,.NET Framework 4.6 运行在Windows平台,对应Mono 4.2 版本运行在Linux,Mac平台。要理清楚.NET Core和 .NET 、Mono之间的关系, 这个在.NET Core的 ​​https://github.com/dotnet/core​​​ 有详细的说明。简单的说就是.NET Core是.NET Framework的子集,包含了.NET 运行时库的核心功能,在跨平台和资源受限环境中使用,.NET Framework还以MIT协议开源了ReferenceSource , ReferenceSource 是和Windows平台的有较深的耦合关系,Mono团队将ReferenceSource项目中的代码整合进入Mono,将Mono项目中一些有bug或未完成的组件替换为.NET的对应代码,你可以在Trello网站上​​跟踪该项目的进展情况​​,Mono最新的4.2 版本已经基本上完成了代码整合工作。通过Mono和微软的.NET团队的合作,把.NET Core的代码融到Mono项目中,同时把Mono中的平台依赖代码贡献给.NET,现在可以实现完整的.NET堆栈的跨平台。也就说在.NET Core推出之后,.NET Framework与Mono将基于.NET Core重新构建。.NET Framework将成为.NET Core在Windows上的一个发行版,Mono将成为.NET Core的一个跨平台发行版。

开源是大势所趋,就在6年前,各大公司和厂商还在讨论是否应该开源,但现在大家讨论的则是如何更好地开源。随着互联网时代的发展和成熟,开源已经成为标配。从Github的​​.NET Core​​开源项目来看,目前已经有将近8273个star,老牌的Mono项目也才3769个Star,已经说明开发社区对微软开源的支持。

相比Java体系成熟的生态圈,目前.NET在社区生态系统建设上还需要一段比较长的时间来完善。生态系统不单单是开发者,还需要包括他背后的就职公司、他开发的产品面向的客户、开发者的合作伙伴等等,当然还有微软。开发者能够从.NET这个平台上更容易创业、具有多语言跨平台的、具备快速部署优势、适合迭代开发的,涵盖从服务端到客户端、移动端,物联网IOT,具有超级高效率的Visual Studio Community 2015。除此之外要让开发者有参与感,他在开发方面的经验和知识能够通过生态系统分享出去,影响其他人和公司,并且他的意见能够得到及时的反馈,那么这种参与感会吸引开发者。

最近几年,微软对于开源越来越支持,但是给开发社区的形象还没有转变过来。有篇文章《​​对微软技术的典型误解和偏见​​》写的非常贴切,对微软技术的误解与偏见在社区里是很微妙的,不少人对微软的开发技术栈有一些由来已久的偏见。微软已经做行业老大很多年,其在闭源方面的印象给开发者影响太深刻了,很难在短时间内扭转。需要持续的运营投入和影响。

其实微软过去在社区运营方面很有经验,包括各种线上线下的活动,还有MVP等奖励机制,在开源方面,微软可以继续从前的动作,我本人是微软连任10年的ASP.NET方向的MVP,运营一个微信公众号-dotNET跨平台,主要就是本土化将微软开源项目的介绍、进展、分析和案例要及时告知中国开发者。建议微软官方培养成功案例,榜样的力量是无穷的,开源之后的赢家在哪里?甜头在哪里?树立这样的榜样,开发社区都会看到。

开源的好处是,吸收整个技术社区的力量促进开源项目的发展和竞争力,提高开发者的参与感和信任度,有利于吸引开发者,构建良好的生态系统。.NET开源,开发者不必担心这个项目会半途而废,可以更关注项目本身的发展和特性,背后有.NET基金会,微软和Xamarin公司,他们都有明确的开发路线图,强大的技术团队支持。

在云计算、大数据、移动互联网和物联网的时代,开发者需要看到微软在承诺开源之后的迅速行动,开源社区和生态快速搭建起来,跨平台官方支持版本快速发布出来,抓住移动互联网的契机,把整个.NET新局面打开。



标签:Core,微软,Mono,10A,开源,开发者,2015,NET
From: https://blog.51cto.com/shanyou/5788837

相关文章

  • TechEmpower 13轮测试中的ASP.NET Core性能测试
    我们看看各个web框架的性能,以TPS为指标排序(每秒返回的response多的在前面,性能越好),所有测试都在Linux中运行。在对比中,我们看到ASP.NETCore取得优异的......
  • AMF: ASP.NET Mobile Framework
    ASP.NET移动框架(AMF)是一种最常用的平板电脑和智能手机上Web应用程序的框架,基于jQueryMobile(http://jquerymobile.com)的asp.net开源项目,项目...ASP......
  • .Net对接Java接口加密不通过?
    前言  相信又不少小伙伴在对接第三方接口时遇到过这种情况:参数、排序、加密方式都按照接口文档进行处理了,可就是签名不通过,然后开始怀疑是不是参数漏了?参与加密的参数不......
  • .NET性能系列文章一:.NET7的性能改进
    这些方法在.NET7中变得更快照片来自CHUTTERSNAP的Unsplash欢迎阅读.NET性能系列的第一章。这一系列的特点是对.NET世界中许多不同的主题进行研究、比较性能。正如标......
  • 记一次 .NET 某娱乐聊天流平台 CPU 爆高分析
    一:背景1.讲故事前段时间有位朋友加微信,说他的程序直接CPU=100%,每次只能手工介入重启,让我帮忙看下到底怎么回事,哈哈,这种CPU打满的事故,程序员压力会非常大,我让朋友在CP......
  • Netty Reactor模型
      1、netty抽象出两个线程池:BossGroup负责监听和建立连接;WorkerGroup负责网络IO的读写2、BossGroup和WorkerGroup类型都是NioEventLoopGroup,相当于一个事件......
  • Jetbrains Rider:缺少.NET Framework 4.5.2
    前提:由于我们是应用程序的开发者,所以我们要下载的是SDK或者DeveloperPack;而不是Runtime包(runtime是给应用程序的用户使用的)。前提2:SDK安装完毕后,Rider的反应可能......
  • Stanford_CS224W----Expressive Graph Neural Networks
    ExpressiveGraphNeuralNetworks寄鸽了一周没有写课程笔记,这次课程讲的是选择一个expressive的GNNmodel(当然还是要依据实际情况选择模型)从一个简单的栗子开始理解叭......
  • Ethernet—笔记本电脑突然不能联网,显示以太网网络电缆被拔出,用的是无线网
    问题如下图突然上不了网了今天突然遇到上网问题,电脑突然上不了网了,在我的不断搜索终于给我找到了办法,或许还有别的方法下面是我解决方法步骤。这一次我同样是打开设备......
  • NETCORE - WebSocket通信
    NETCORE-WebSocket通信 webscoket 通信 一般为 客户端与服务端通信,如需两个服务端通信,可把其中一个服务端模拟成客户端。项目框架 vue+.net6 创建NET6 的......