我们总是能听到一些人说,.NET 不行、学 .NET 没发展前途之类的言论,有的童鞋听多了便也开始怀疑自己选择的 .NET 方向是不是错了。

不得不承认,在 .NET 没有实现跨平台之前,市场行情确实是一路下滑。受此影响,.NET 近几年在国内的发展,不管是生态还是开发者数量,也确实不如 Java。

但从 .NET Core 问世后,它的发展趋势便开始出现扭转,发展至今各方面表现都朝着越来越好的方向发展。我们不妨用数据来看看 .NET 的发展现状到底如何,未来是否值得我们的期待和追逐。

现状

关于现状,我从官方的几个 YouTube 视频介绍中截取了两张图。一张是 .NET 平台截止 2020 年(去年) 12 月开发者数量大致的变化情况:

另一张是 .NET 平台截止 2021(今年) 年 5 月开发者数量、受欢迎度、性能等方面的表现数据:

概括起来有如下几点:

开发者数量

截止 2021(今年) 年 5 月,全球有超过 500 万的 .NET 开发者。过去一年(2020 年)的跨平台 .NET Core 活跃开发者数量增长超过 60 万。而这些数据仅来源于 Visual Studio IDE,不包含使用其它 IDE 的开发者。

从官网的 .NET SDK 下载量来看,.NET 开发者每年都在快速增长。其中,在新增长的 .NET 开发者中,有 40% 是学生,说明有大量年轻开发者正在涌入 .NET 大家庭中。

社区发展

在 2019 年和 2020 年的 Stack Overflow 开发者年度调查报告中,.NET Core 连续两年被评为最受欢迎的开发框架。

其中 ASP.NET Core 被评为最受欢迎的 Web 框架。

相关链接:

https://insights.stackoverflow.com/survey/2020#most-loved-dreaded-and-wanted
https://insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted

.NET 平台下的开源项目,在 GitHub 近两年开源项目贡献(包含 Commit、Issue 等)增长量排名中名列前三十,参与贡献的开发者非常多,全球有 6 万多名开发者贡献了代码。C# 编程语言在 GitHub 的使用量排名中名列前五。

性能表现

在 .NET 相关框架大版本发布时,几乎每次都有关于性能提升的报告。ASP.NET Core 的性能比 Node.js 快 10 倍多,与 Go 的 Web 框架旗鼓相当。

有参考意义的是对 gRPC 实现的框架性能的比较,它比较能反应综合性能的差异。请看下图右边图表,基于 .NET 5 实现的 gRPC 框架与其它 gRPC 框架的对比:

.NET 5 的 gRPC 框架性能仅次于 Rust 的框架,略微高于 Go 和 C++,比 Java 高出 12% 之多。注:这里比的是基于编程语言实现的框架,而不是编程语言本身。

其它方面

.NET 的现状还包括生态发展情况,这一点我在第 2 篇文章也讲过。.NET 是目前全球市场上唯一一个涵盖 Web、桌面客户端、手机应用、微服务、云原生、机器学习、游戏、物联网等跨平台的全能开发解决方案。同时各领域开源的开发框架和库也越来越多。

近几年,微软和 .NET 社区做了大量艰辛的工作,使得 .NET 的发展越来越趋向良好,生态也越来越完善。

在国内也有很多大厂采用 .NET 技术,比如腾讯、阿里云和网易等,甚至我们的国产 CPU 龙芯也在热情拥抱 .NET。尤其是大型手游开发这块,C# 的使用率独占鳌头,比如腾讯的很多手游都是基于 C# 使用 Unity 开发的,包括著名的王者荣耀。

未来

自 .NET Core 问世以来,随着近几年的快速迭代和发展,.NET Core(现在是 .NET 5+)在各方面不断地完善和提高,微软团队和 .NET 社区一直在努力打造更轻量、更快、更适合云原生的 .NET 平台。现在 .NET (Core) 已然成为最主流最受欢迎的开发框架之一。

微软将在今年 11 月份发布大统一的 .NET 6 长期支持版本,此次 .NET 6 版本的目标很明确:

目标是彻底实现和完善统一的工具链、跨平台原生 UI、云原生、性能改进和生产效率提高等。从已经发布的 .NET 6 预览版本来看,进度符合预期,正在按照计划推进。

性能和生产效率一直都是微软团队和 .NET 社区孜孜不倦的追求,这两方面将越来越突显 .NET 的优势。

另外,在本次即将发布的 .NET 6 中,很明显微软正在强化移动开发这个生态领域,引入了跨平台的原生应用开发框架--MAUI,这绝不是简单的 Xamarin 回炉重造。MAUI 是我个人比较期待和看好的一个方向。

未来 .NET 每年都会发布一个主要版本,奇数年份的主要版本为长期支持(LTS)版本。

在可预测的时间表中,微软也会根据需要进行小规模发布 .NET 版本,以不断持续改进 .NET 的速度、大小和性能。未来路线和支持情况很明确,给了使用 .NET 的开发者和公司一颗定心丸。

开发市场正在热情地拥抱 .NET。随着长期支持版本 .NET 6 发布,将更会有越来越多的 .NET 的开发者和公司加入到 .NET 的大家庭中。

我个人相信未来 .NET 的前景会越来越好,它值得我们的期待和为之付出努力。

[004] .NET 的现状和未来的更多相关文章

  1. 十位一线专家分享Spark现状与未来----峰会摘录

    CSDN大数据技术: 十位一线专家分享Spark现状与未来(一) 十位一线专家分享Spark现状与未来(二) 十位一线专家分享Spark现状与未来(三) 部分摘录: 加州大学伯克利分校AMP实验室博士 ...

  2. 【转载】 第四范式涂威威:AutoML技术现状与未来展望

    原文地址: https://www.jiqizhixin.com/articles/2018-07-12-17 -------------------------------------------- ...

  3. 第四范式涂威威:AutoML技术现状与未来展望

    以下内容是对AutoML技术现状与未来展望讲座的总结. 1.机器学习定义 <西瓜书>中的直观定义是:利用经验来改善系统的性能.(这里的经验一般是指数据) Mitchell在<Mach ...

  4. AutoML技术现状与未来展望

    以下内容是对AutoML技术现状与未来展望讲座的总结. 1.机器学习定义 <西瓜书>中的直观定义是:利用经验来改善系统的性能.(这里的经验一般是指数据) Mitchell在<Mach ...

  5. 【阿里云IoT+YF3300】1.时代大背景下的阿里云IoT物联网的现状和未来

    “未来十到二十年,大家基本已经形成了一个共识,那便是新格局的奠定将由 AI 和物联网技术来支撑.放眼国内,在这些互联网巨头之中,未来真正成为竞争对手厮杀的,阿里和华为是首当其冲,在这两个领域双方分别暗 ...

  6. (函数即服务)Faas的现状与未来

    刚看到jolestar一位从法律转行程序员的前辈写了一篇Faas现状与未来的文章,里面很多观点都很有启发,或许正如他说的那样,由于Faas能较好的解决资源利用率和开发效率问题,2018年Faas将变得 ...

  7. 【转载】 AutoML技术现状与未来展望

    原文地址: https://www.cnblogs.com/marsggbo/p/9309520.html ---------------------------------------------- ...

  8. k8s极简史:K8s多集群技术发展的历史、现状与未来

    引子 随着云原生技术的普及,越来越多的企业使用Kubernetes来管理应用,并且集群规模也呈爆发式增长,企业也亟需应对随集群规模增长而带来的各种挑战.同时,为了更好地提供高可用.弹性伸缩的应用,企业 ...

  9. Serverless 的初心、现状和未来

    作者 | 不瞋 导读:Serverless 是如何产生的?当前有哪些落地场景?Serverless 的未来又将如何?本文分享了阿里云高级技术专家不瞋对于 Serverless 的看法,回顾其发展历程, ...

随机推荐

  1. Tengine Web服务器概述

    Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...

  2. 旷视MegEngine网络搭建

    旷视MegEngine网络搭建 在 基本概念 中,介绍了计算图.张量和算子,神经网络可以看成一个计算图.在 MegEngine 中,按照计算图的拓扑结构,将张量和算子连接起来,即可完成对网络的搭建.M ...

  3. Java基础-封装和继承

    @ 目录 Java基础知识(封装和继承) 一. 封装 1.1 封装的目的 1.2 封装的好处 1.3 封装的步骤 1.4 封装的例子 1.5 小结 二. 继承 2.1 继承的介绍 2.2 生活中的继承 ...

  4. 生成工作区设置文件settings.json

    先Ctrl+Shift+P,然后输入setting搜索 找到工作区设置(工作区,仅在当前打开的界面下生效,文档位置与根目录/.vscode/setting.json(可自己创建,也可不创建)) 选择之 ...

  5. vs里颜色显示块怎样显示

    就是这种 vs中选择工具-扩展和更新,搜索Web Essentials,安装就好了. 他会安装很多扩展,我这里只需要css相关的

  6. vscode中html和vue没有自动补全,需要怎么配置

    先安装HTML Snippets插件 点击 文件-首选项-设置,然后根据以下操作 然后在setting.json中加入以下代码 然后就有提示了

  7. 单臂路由&链路捆绑

    单臂路由&链路捆绑 目录 一.单臂路由 1.1.单臂路由作用 1.2.单臂路由实现不同VLAN间通信的原理 二.单臂路由相关命令配置 三.链路捆绑 3.1.以太网链路聚合原理 3.2.命令配置 ...

  8. 一个排序引发的BUG

    你好呀,我是why. 前两天在 Git 上闲逛的时候又不知不觉逛到 Dubbo 那里去了. 看了一下最近一个月的数据,社区活跃度还是很高的: 然后看了一下最新的 issue,大家提问都很积极. 其中看 ...

  9. CSS 多行文本溢出省略显示

    文本溢出我们经常用到的应该就是text-overflow:ellipsis了,相信大家也很熟悉,但是对于多行文本的溢出处理确接触的不是很多,最近在公司群里面有同事问到,并且自己也遇到过这个问题,所以专 ...

  10. .net获取项目根目录方法集合

    这篇文章是别的博客复下来,收藏的: 编写程序的时候,经常需要用的项目根目录.自己总结如下 1.取得控制台应用程序的根目录方法     方法1.Environment.CurrentDirectory ...