写点什么

InfoQ 2022 年趋势报告:.NET 篇

作者:Arthur Casals, Jonathan Allen等

  • 2022-10-07
    北京
  • 本文字数:3242 字

    阅读完需:约 11 分钟

InfoQ 2022 年趋势报告:.NET篇

每一年,InfoQ 的编辑团队都会邀请业内经验丰富的开发人员和实践者来讨论整个软件开发领域的发展趋势。这些讨论的结果以趋势报告的形式发布,每个报告都关注一组特定的主题——我们称之为“领域(Space)”。这些报道帮助编辑团队策划并向读者提供高质量的新闻和文章,同时确保我们报道的是当前最相关的主题和技术。


我们所有的报告都是建立在 Geoffrey Moore 在《跨越鸿沟》(Crossing the Chasm)一书中提出的框架之上。这个框架描述了有助于理解技术采用演变过程的四个阶段——“创新者”、“早期采用者”、“早期大众”和“晚期大众”。


在 InfoQ,.NET 领域包含了所有与.NET 直接相关的技术,不仅包含了.NET 官方版本的内容,还包括直接影响.NET 生态系统的框架和技术、使用.NET 的项目和计划、主要用例以及专门针对该领域的方法。


我们的趋势报告由两个不同的部分组成。第一部分是一份书面报告,包含我们编辑团队讨论的所有话题,分为上面提到的四个阶段,比如你正在阅读的这份报告。我们将在报告中展示我们的趋势图,从“晚期大众”开始,并逐渐向“创新者”移动。通过这种方式,我们还可以对.NET 领域的当前状态进行总体分析,讨论特定技术的行业采用,并给出特定主题和趋势的相关细节。


第二部分是InfoQ播客,涵盖书面报告中提出的部分或全部主题。这些节目是 InfoQ 编辑对行业专家从业者的非正式访谈。在今年的.NET 报告中,我们讨论了最新的用户界面和通信框架的发展。


2022 年.NET 发展趋势



仔细观察上面的图表,我们可以很容易地在列出的主题和.NET 生态系统的最新发展之间建立起关联。尽管我们的分析并不是专注于微软发布的东西,但在过去的几年里,微软为建立并保持.NET 作为软件开发领域的重要角色所做的努力是相当巨大的。


一个明确的迹象是.NET 的最新版本——从.NET Core 3.1 到.NET 7——出现在上述四个阶段中的三个阶段。



图片来源:https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core#cadence


晚期大众


就在.NET Core 3.1 发布之前,微软宣布 Core 项目是“.NET的未来”。微软通过.NET 5宣布了创建统一平台的意图。综合考虑所有这一切,即使是.NET Core 最初版本的进展,这也是一个不小的成就——构建一个统一的运行时和框架,可以在多个操作系统上随处使用,具有统一的运行时行为和开发者经验(当然,包括所有的工具)。



图片来源:https://devblogs.microsoft.com/dotnet/introducing-net-5/


与此同时,在.NET 5 中引入的统一方法(以及之前从.NET Core 3.1 中引入的所有变更)允许在其发布的版本中使用不同的框架生命周期。我们以 Blazor 为例——虽然这个框架的 Web 版本从 2018 年就已经出现了,但 Blazor Hybrid(用于混合桌面/移动客户端)只在.NET 6 中可用,包括 Blazor WebAssembly 的预先编译(AOT)特性。这就是为什么我们在“早期大众”阶段看到了“Blazor”,而“Blazor Hybrid App”出现在“创新者”阶段。


框架以不同的速度发展,以及一系列重大的变更,使得已经从.NET Framework 迁移到.NET Core 或.NET 5 的公司很难再迁移到更新的.NET 版本。我们希望随着对这些.NET 版本的支持的结束(.NET Core 3.1 在 2022 年 11 月,.NET 5 在 2023 年 11 月),这种情况会有所改变。

早期大众


主要由于 ASP.NET 6.0 的性能改进和相关变更, .NET 6 成为早期大众使用的版本。业内的主要公司也在使用 Blazor 和 Xamarin,这反映了这项技术的稳定性和专业开发人员的可用性。


在通信框架方面,gRPC 和 SignalR 日增的采用率与整体情况保持一致。根据我们最新发布的架构趋势报告gRPC处于“晚期大众”状态——这表明.NET 用户也在朝着同样的方向发展。同时,gRPC 采用相对较晚的原因可以归因于它的前身WCF。WCF 使用的.NET Framework 最高到 4.8.1 版本,这是微软用于构建面向服务应用程序的一刀切的通信框架,包括基于 Web 的通信和进程间通信(命名管道)。


在我们的.NET 播客中,我们讨论了 WCF 的弃用和 gRPC 在.NET 中扮演的角色。播客小组成员之一 Irina Scurtu 谈论了她目前在.NET 中使用 gRPC 的体验。


将数据从一端移动到另一端有很多选项,特别是在微服务架构、事件驱动架构中或需要通过网络来回请求和传输数据的情况下。对于开发者来说,他们很难做出选择。但说实话,我看到的是 REST 或 HTTP API 仍然是实现 API 的首选。gRPC 开始受到一些关注,但在.NET 中还不够成熟。


这个阶段另一个有趣的话题与用户界面(UI)有关——微软在 2020 年推出了.NET MAUI(多平台应用程序 UI),作为 Xamarin.Forms 工具包的演进版本。这是一个跨平台的框架,可以基于这个框架使用 C#和 XAML 创建原生移动和桌面应用程序。


经过两年的预览,第一个官方 MAUI 版本于上个月发布。然而,在 GitHub 上仍然有数百个未解决的 Bug,社区因此认为官方过早地发布了这个版本。这些因素导致 MAUI 处于“创新者”阶段。


.NET 开发人员使用的 UI 框架主要有两种。一个是Flutter,由谷歌于 2017 年首次发布。它是开源的,使用 Dart 编程语言(也是由谷歌开发的)构建,并且作为一个与.NET 后端一起使用的跨平台 UI 框架,它正在稳步发展。


第二个框架是Uno Platform,这也是一个建立在.NET 之上的开源、跨平台的 UI 框架。Uno Platform 还支持 XAML,可用于构建移动、桌面和 Web 应用程序——类似于 Blazor。这个平台的采用率一直在稳步增长,包括微软在内——最近发布的 Windows Community Toolkit Labs 就是用 Uno 构建的。


另一位播客小组成员 Francis Tanguay 谈到了当前.NET 生态系统中 UI 平台的多样性。


市场上发生了很多事情,也出现了一些关于什么可以用于开发、什么已经准备就绪的困惑。跨平台应用开发和 UI 框架在过去十年中得到了迅猛的发展。如果你仔细看一下采用曲线,很明显,在某个时候总会有一个稳定的东西可以被大多数人采用。对于新进者,从架构的角度来看,甚至还有更多的挑战,对吧?等你有了 UI 框架,并准备好构建第一个需要连接到通信层的应用程序,应该使用 REST API 还是 gRPC?然后,你需要开始考虑这些问题——如何序列化数据、如何在页面之间导航、如何管理应用程序中的数据……你需要面临很多不同的挑战。

早期采用者和创新者


这个阶段的大多数东西都是在去年与.NET 6 一起发布的,所以从行业的角度来看,这是值得期待的。当然也有例外,比如 Blazor WASM(几年前发布的)和 F#——它在.NET 开发人员中采用的比例仍然相对较低。


随 ASP.NET Core 6 一起发布的Minimal API代表了微服务开发人员的一个潜在优势,因为它可用于创建依赖最少(更少的样板代码)的 HTTP API。它们还支持将 API 端点添加到应用程序的配置文件中(不再有 MVC),从而简化了开发过程。


ML.NET 于 2019 年首次发布,其背后的想法是为.NET 开发人员提供与 Python 生态系统相同的机器学习(ML)能力。它包含了经典的 ML 管道概念——从收集数据到构建和训练模型。与此同时,它也面临着与其他工具或框架的直接竞争。例如,为 TensorFlow 和 Keras 等框架提供绑定的SciSharp Stack的流行可以被视为对基于 Python 的工具的流行和采用的反映。


Source Generators首次随.NET 5 一起发布,它是减少编写重复代码的一个好方法。它常见的一个应用场景与高性能日志有关,这将推动它在未来得到更广泛的采用。


随着 DevOps 的日益普及,我们也可以看到这个领域的.NET 开发人员对 AzureDevOps API 的使用也在增加——当然,这仅限于将 Azure 作为云技术栈的一部分的开发人员。如果你对 DevOps 和云计算的现状感兴趣,可以查看我们的 2022 年趋势报告:DevOps与云计算篇


根据.NET 6 的当前状态(以及.NET 7 的预期功能),我们已经有了创新者正在使用的大部分即将推出的功能。.NET 7 预计将比它的前身快得多,APS.NET Core 7 带来了官方 MAUI 版本和 Blazor Hybrid App。C# 11 也包含在所有的.NET 7 预览版中,这就是为什么我们可以在这个阶段看到所有这些东西。


.NET 7 的另一个承诺是更好地支持容器和原生云开发,包括开发者体验、工具和整体执行。


原文链接

InfoQ .NET Trends Report 2022


相关阅读:

InfoQ 2022 年趋势报告:人工智能、机器学习和数据工程篇

InfoQ 2022 年趋势报告:文化与方法篇

InfoQ 2022 年趋势报告:架构与设计篇

InfoQ 2022 年趋势报告:DevOps 与云计算篇

2022-10-07 10:0418650

评论

发布
暂无评论
发现更多内容

轻松完成接口测试及接口文档

Xd

Java 后端 接口测试

2022-Java后端工程师面试指南-(MySQL)

自然

8月月更

谈谈程序员如何具备领导力

宇宙之一粟

领导力 8月月更

基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】

sofiya

华为云数据库,更安全、更方便、更省钱的选择【华为云至简致远】

sofiya

2021-Java后端工程师面试指南-(SpringBoot+SpringCloud)

自然

Spring Boot CLI spring cloud stream 8月月更

docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)

程序员欣宸

elasticsearch 8月月更

一种用于保证多方子系统数据一致性的方法

阿提说说

数据一致性 多方子系统 异构系统

Spring(三、依赖注入)

开源 bean Spring JPA 8月月更

开源一夏 | 这么火的ES,SpringBoot结合ElasticSearch7实现多条件复合查询

知识浅谈

开源 8月月更

C51 基本函数、中断函数和库函数的详解

timerring

8月月更

【字体反爬】的起点,月票数解析,一个小小的Python案例

梦想橡皮擦

Python 爬虫 8月月更

头脑风暴:打家劫舍

HelloWorld杰少

8月月更

git 分支

Jason199

git fetch 8月月更

自己动手制作elasticsearch的ik分词器的Docker镜像

程序员欣宸

elasticsearch 8月月更

mysql进阶(二十八)GRANT REVOKE用法详解

No Silver Bullet

MySQL 签约计划第三季 8月月更 grant revoke

C++中const关键字的作用总结

桑榆

c++ 8月月更

朴素贝叶斯分类-西瓜分类 python

Five

贝叶斯公式 Python. 8月月更

【高并发项目实战】工程模块化与活动会场静态化架构原理解析

小明Java问道之路

高可用 高并发 高性能 签约计划第三季 8月月更

OAuth2的定义和运行流程

阿提说说

spring security Oauth

2022秋招前端面试题(四)(附答案)

helloworld1024fd

前端面试

设计电商秒杀系统

爱晒太阳的大白

编译调试插件功能总结

乌龟哥哥

8月月更

未来社区的人车房隐私数据权属确认方法

阿提说说

区块链 物联网 隐私保护

jvm(一 )内存区域的划分

想要飞的猪

JVM JVM运行时数据区

Promise的点点滴滴

坚果

开源 8月月更

2022-Java后端工程师面试指南-(Redis)

自然

面试题 reis 8月月更

【华为云至简致远】还在烦恼成本高、运维难?华为云数据库给你一个标准答案!

sofiya

基于华为云ModelArts和弹性云服务器ECS的AI全流程开发——昇腾工业质检应用实战【华为云至简致远】

sofiya

2022秋招前端面试题(三)(附答案)

helloworld1024fd

前端面试

为什么我要说:柯里化 == 闭包+递归?

掘金安东尼

JavaScript 前端 8月月更 柯里化

InfoQ 2022 年趋势报告:.NET篇_DevOps & 平台工程_InfoQ精选文章