微信公众号dotnet跨平台2020年初做的一个关于中国.NET开发者调查收到了开发者近 1400 条回复。这份调查报告涵盖了开发者工具链的所有部分,包括编程语言、应用架构、应用服务器、运行时平台、框架技术、框架配置、IDE、.NET/.NET Core 发行版部署模式、构建工具和Kubernetes。

.NET发展面临的挑战

这是一个多选题,认为.NET向.NET Core升级的挑战只有25.3%, 然而有89.9% 的受访者表示,国内缺乏大的互联网厂商采用.NET Core 是最大的挑战,从2010年以来的移动互联网浪潮由于微软的战略失误,.NET技术从.NET 4以来缺乏创新,国内大的互联网厂商京东、携程等相继转Java 所带来的影响很大。但是很多人忽略了一个重要的方面是从2015年开始的云计算浪潮,云原生应用开发的崛起。微软从2014年开始的重大转型,成功把握了云计算浪潮,特别是云原生应用开发上微软有着清晰的领导者,从Azure的崛起以及云原生的参与度上,特别是从2016年正式发布的.NET Core 在云原生方面发生了蜕变,从后面的一项Kubernetes和Docker的采用上可以说明大家对.NET Core的采用上没有足够的认识,再说互联网厂商采用.NET Core方面也要换个角度来看,从2018年开发国内BAT等互联网厂商大量开始转型企业服务市场,我们来看下在这个新的方向上的互联网厂商采用.NET Core情况,国内新能源领域头部企业特来电采用.NET Core, 国内房地产信息化系统服务商头部企业明源云采用.NET Core, 在线教育头部企业校宝在线采用.NET Core.

对我们来说,传统的互联网厂商没有采用.NET Core不是最重要的,特别BAT都在搞公有云等面向企业服务,Azure、AWS、GCP对.NET Core的支持一等公民,需要阿里云、腾讯云、华为云等国内云厂商更好的对.NET Core有更大的支持。

.NET/.NET Core 版本

58% 的受访者表示,他们在主要应用程序中选择 .NET Core 作为编程平台,大部分计划升级到.NET Core 3.1。而.NET 4.6之前的版本 以 21% 的受访者位居第二。11.1% 的受访者表示使用 .NET 4.6,也没有升级到.NET Core 版本计划。这里要给大家普及一下.NET 5, 很多对.NET 5有误解是大融合,认为.NET 4版本在.NET 5出来后可以轻松的升级。这是一个巨大的认识错误,.NET 5是.NET Core 3.1 之后的一个大版本,他本质上是.NET 5, 从.NET Core 3.1开始,.NET Core都支持.NET FX的工作负载了(最典型的就是桌面Winform/WPF/UWP支持), .NET 4应用需要升级到.NET 5必须向.NET Core的迁移,所以如果你有应用迁移计划,现在就可以做规划了,而不是等上一年为自己的无知买单。

对我们来说,看到 .NET Core 3.1成为占主导地位的编程平台,并不是一件令人惊讶的事情。然而,令人惊讶的是,还有 32.4% 的受访者使用 .NETFX 4。我们认为,这与大家缺乏对.NET发展的正确认识和更新 .NET应用的成本有关。 对于仍在使用 .NET 4.6 或更早版本的受访者,我们预计,随着越来越多的应用程序继续迁移到.NET Core 3.1 或今年即将到来的.NET 5版本,这一数字将会减少。

微服务框架选择

这个问题要求受访者选择在他们的主要项目中使用的应用程序框架和技术。由于大多数应用程序使用各种不同的框架技术,因此这个问题允许多个回答。在调查的第9和第10问题里,很多人表达希望有一个.NET 上的Spring Cloud,然而只有5.7%的人选择了Steeltoe/Spring Cloud,这也许是大家对Steeltoe这个开源项目缺乏了解,Steeltoe是Spring Cloud的厂商Pivot 开源的Spring cloud的.NET解决方案,同时它也是.NET基金会下的开源项目,在github开源,star数却只有215,这正说明了大家对它缺乏认识,这几年开源社区的蓬勃发展,.NET社区有个开发框架ABP也拥有了大量的用户,特别是在中国的用户特别多,ABP vNext正是ABP框架针对单体模块化/微服务场景发展的框架,搭配kuberentes 非常适合微服务的开发,目前已经正式发布2.1.1版本,用7.6%的受访者选择了ABP vNext/Kubernetes, 37.8% 的受访者选择了.NET Core/Kubernetes, 采用kuberentes的受访者达到了45.4%,还有25.9%的受访者选择了自研框架,这部分自研框架的用户是很希望有SpringCloud,而采取的自研。

对我们来说,.NET Core在云原生时代拥有独特优势,镜像体积小、占用内存少,启动速度快,支持水平扩展,Kubernetes为.NET Core的微服务开发方面提供特别的机会,特别2020年Service Mesh的成熟,.NET Core的采用方面有新的发展。

.NET开发工具

在这个问题中,我们要求开发者列出他们专业使用的集成开发环境(Integrated Development Environment,IDE)。就在几年前,开发者还会质疑在 IDE 上花钱是否值得。由于大多数人使用几个不同的IDE,因此这个问题允许多个回答。

但是,有 96.2% 的受访者表示他们使用Visual Studio,很明显,这个付费的 IDE 非常值得一试。第二个最常用的 IDE 是 Visual Studio Code,占 31.5%,而 JetBrains Rider 占 5.2%。最后,有 4.8% 的受访者表示,使用Visual Studio for Mac。这说明大部分人都是使用高生产率的Visual Studio 为主,其他的IDE工具为辅。

数据库访问技术ORM

在这个问题中,我们要求受访者选择他们当前使用的数据库访问技术ORM。最受欢迎的是 EntityFramework Core,占 44.7%,紧随其后的是Dapper,占 42.1%。接下来是 EntityFramework 6,有 32% 的受访者报告了使用情况。NHibernetes在受访者中只有3.1%,还不如这两年国内的新星FreeSql,在受访者中占 4%。国内还有另外一个类似于Java国内最流行的MyBatis的SmartSql ,在受访者中有2.1%。还有20.8%的受访者使用了其他的ORM或者是直接使用ADO.NET.


开发的软件类型

在这个问题中,我们要求开发者列出他们开发的软件类型,通常开发者会开发多种类型的应用程序,这个选项也是多选项,企业级应用和互联网应用位居前列,特别是企业级应用占比达到了66.2%,这和我们一直认为.NET 在企业级应用市场有很大的应用,随着互联网技术的发展,企业级应用市场也要互联网化,这也是.NET 开发的机会和挑战。 桌面客户端应用的受访占比是24.2%,移动应用客户端开发占比15.5%, 这里有一项比较意外的是游戏占比只有2.4%, 然而很多人的印象中游戏是.NET 开发非常优势的领域。


容器化

在这两个问题中,我们询问了开发者他们使用哪些容器化工具。到目前为止,使用 Docker的比率只有38.7% 。而61.3%的受访者都没有使用Docker,已经采用Kubernetes 的受访者只有11.7%,目前没有使用,正计划使用Kubernetes的受访者达到了37.6%,这表明 Kubernetes 在2020年会有持续的增长。没有计划使用Kubernetes的受访者达到了47.7%,这也是一个很意外的结果,我们认为很多人对Kubernetes 有认识误区,容器化不在于你的团队的规模大小,而且对于小团队来说,Kubernetes是加速你应用现代化的武器,每一个公有云厂商都提供了近乎免费的Kubernetes服务,使用Kubernetes的门槛非常低,这也是采用.NET Core的优势所在,很多人错误的认为需要自己搭建Kubernetes集群,对于搭建Kubernetes集群这件事情是很复杂的,需要有专门的Kubernetes运营团队在支撑,这对于大型企业来说是没问题的,也值得投资,博客园在kubernetes 方面的探索的很多经验也值得你借鉴。利用Kuberentes,我们不会被任何云厂商锁定。随着 Kubernetes 的发展,它在未来几年将在市场上占主导地位也就不足为奇了。

9和10两个调查是开放性问题,在于汇集大家的意见,具体参看调查数据:【腾讯文档】2020中国.NET开发者调查 https://docs.qq.com/sheet/DWElLTkx5YUVMWnFn?c=L456L0PE0

小结

云原生对开发者在应用程序开发过程中使用的技术带来了深远的影响。而且,随着公司继续转型并创建基于微服务的应用程序,我们预计技术选择将趋向于促进架构和在其中工作的开发人员的需求。

2020 年 中国.NET开发者调查报告的更多相关文章

  1. Scrum已经俘获中国开发者的心? ——从《2017年开发者调查报告》看真相!

    云栖社区通过为期两个月,对7032份有效调查问卷分析统计,2017年12月发布了首份<2017中国开发者调查报告>.报告显示,37.3%的开发者表示,协作工具主要来自企业内部自研的协作工具 ...

  2. StackOverflow发布年度开发者调查报告:JavaScript备受欢迎

    StackOverflow刚刚发布了年度开发者调查报告,访问了来自173个国家的56033名编程人员,发现几乎所有开发者都精通于JavaScript.具体说来就是,超过85%的全栈开发者.超过90%的 ...

  3. 抢先看:笔者亲历的2020年中国.NET开发者大会活动纪实

    2020年中国.NET开发者大会活动纪实 1 2020年12月19日的苏州工业园区,天公作美,阳光明媚,气象迷人,正是一个搞事的好日子.在这里,数百名中国.NET开发者们汇聚一堂,怀揣着激情和梦想,一 ...

  4. 2020 中国 .NET 开发者调查问卷

    随着.NET Core 3.1的发布,国内2019 中国.NET开发者峰会在上海的成功举办.从技术采用生命周期的角度来说,随着.NET Core 3.1的发布,有越来越多的厂商开始采用.NET Cor ...

  5. 2019 年 CNCF 中国云原生调查报告

    中国 72% 的受访者生产中使用 Kubernetes 在 CNCF,为更好地了解开源和云原生技术的使用,我们定期调查社区.这是第三次中国云原生调查,以中文进行,以便更深入地了解中国云原生技术采用的步 ...

  6. fir.im Weekly - 2015 年开发者调查报告

    终于一脚迈入了 2016 年.无论你是否准备好,未来已经汹涌扑来-- 新年第一期的 fir.im Weekly 干货颇多,来看一看:) 2015 Developer Survey stackoverf ...

  7. 2015 年 JavaScript 开发者调查报告

    你写什么类型的 JavaScript? 97.4% 的受访者写 JavaScript 的 Web 浏览器,其中有 37% 写移动 Web 应用. 一些参与者回复,他们会在其他地方用 JavaScrip ...

  8. 2018 .NET开发者调查报告: .NET Core 是怎么样的状态

    4月28日,在公众号里发起<.NET Core 使用调查>,该调查为期一周,有近3300名开发者参与. 已经使用.net core  的人数只有44%,计划使用.net core 比例达到 ...

  9. “开源、共享、创新” 2020 中国.NET开发者大会小结

    大会的新闻稿在2020年12月31日正式发布:开源·共享·创新|2020年中国.NET开发者大会圆满收官! , 本文是这篇新闻的补充性文章,仅代表个人对大会的各方面分享内容的一个小结. 在2019年上 ...

随机推荐

  1. 安装Mysql 8.0的艰难体验

    背景: Mysql 8.0 以后版本,在性能等方面有了很大提升,而且在自动编号.Timestamp等字段的设置上有了很方便的进步,因此在一年前即开始将原有的基于5.5版本的服务器逐渐向8.0转移.但转 ...

  2. FreeRTOS独立看门狗检测任务执行状态

    为了保证FreeRTOS的所有用户任务都在正常的运行,我们通过独立看门狗的形式来检测,一旦发现有某个任务长时间没有执行,看门狗就会将系统复位. 运行条件: 创建5个用户任务Task1,Task2,Ta ...

  3. java面试题-spring篇

    这次是关于spring的面试题,和上次一样依旧挑了几个具有代表性的. 一.  谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生.Spring 可以是使简单的 Ja ...

  4. Java入门 - 面向对象 - 04.抽象类

    原文地址:http://www.work100.net/training/java-abstract.html 更多教程:光束云 - 免费课程 抽象类 序号 文内章节 视频 1 概述 2 Java抽象 ...

  5. Redis 使用总结

    1. 避免大key 危害: 数据热点问题,集群模式在slot分片均匀情况下,会出现数据和查询倾斜情况,部分有大key的Redis节点占用内存多,QPS高 慢查询问题,服务超时 网卡带宽压力,极端情况下 ...

  6. [状压DP思路妙题]图

    源自 luhong 大爷的 FJ 省冬令营模拟赛题 Statement 给定一个 \(n\) 个点 \(m\) 条边的图,没有重边与自环 每条边的两端点编号之差不超过 \(12\) 求选出一个非空点集 ...

  7. 深入Node.js的进程与子进程:从文档到实践

    欢迎关注Github仓库,这是一个自2018年起持续更新的前端&算法开源博客.目前已有node学习.js面试笔记.css3动画设计.webpack4系列教程.设计模式.剑指offer·js版等 ...

  8. Spring注解开发系列Ⅰ--- 组件注册(上)

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...

  9. SpringBoot+MyBatis项目Dao层最简单写法

    前言 DAO(Data Access Object) 是数据访问层,说白了就是跟数据库打交道的,而数据库都有哪几种操作呢?没错,就是增删改查.这就意味着Dao层要提供增删改查操作. 不知道大家是怎么写 ...

  10. Springboot | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin

    案例 今天搭建spring boot 环境时,使用mvn install ,出现Failed to execute goal org.springframework.boot:spring-boot- ...