生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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:0415108

评论

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

运维安全第一步,采购堡垒机做好权限控制!

行云管家

堡垒机 安全运维 企业资产 事前授权

网络安全界基于知识的识别和映射提出网络空间资源分类明细

郑州埃文科技

ipfs存储服务器的优势在哪里?ipfs怎么挖矿?

IPFS怎么挖矿 ipfs存储服务器的优势

virtlet是什么?virtlet如何管理虚拟机?

谐云

987页的Java面试宝典,看完才发现,应届生求职也没那么难

Java~~~

Java 面试 微服务 多线程 架构师

什么是DPDK?DPDK的原理及学习学习路线总结

Linux服务器开发

Linux服务器开发 DPDK Linux后台开发 网络性能 网络原理

区块链DAPP钱包开发|波场DAPP开发钱包

Geek_23f0c3

区块链 DAPP智能合约交易系统开发 波场DAPP

架构训练营 - 模块三 - 作业

姑射仙人

#架构实战营

如何改进新员工的入职体验?

石云升

用户体验 入职 体验设计 8月日更

清爽视频编辑器 Tech Support

凌天一击

生产环境全链路压测-影子库落地

国隆

阿里巴巴大神发布的Java零基础笔记,实战教程多到手软,跪了

Java~~~

Java 面试 微服务 多线程 架构师

又一里程碑!阿里首推Java技术成长笔记,业内评级“钻石级”

Java~~~

Java redis spring 面试 架构师

全面到哭!BAT内部Java求职面试宝典,应届生必须人手一份

Java~~~

Java 面试 微服务 多线程 架构师

FastApi-05-请求体-2

Python研究所

FastApi 8月日更

消息推送技术干货:美团实时消息推送服务的技术演进之路

JackJiang

消息推送 即时通讯 IM push

循序渐进带你全方位剖析原型链

加百利

大前端 原型链 自学 8月日更

Vue进阶(二十): 请求方式详解

No Silver Bullet

ajax Vue axios 8月日更 请求方式

低代码开发平台的出现会是开发者的威胁吗

雯雯写代码

开发者 低代码 低代码开发平台

高效率程序员都在用什么工具?

狐哥说技术

效率工具

C++20 四大特性之一:Module 特性详解

网易云信

后端

当新零售遇上 Serverless

Serverless Devs

阿里云 Serverless 云原生

为什么宁可提拔一个新同事当领导,也不提我这个来十年的老员工呢?

非著名程序员

认知提升 个人提升 职场成长 8月日更

Activiti工作流---简单开发平台,请假实例演示

金陵老街

Java SpringBoot 2 Vue 3 Activiti

如何评价Netty封装的io_uring?

BUG侦探

Netty 网络 io_uring

【SpringCloud技术专题】「原生态Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)

洛神灬殇

SpringCloud OpenFegin Fegin 8月日更

Serverless与WebSocket的聊天工具

刘宇

Serverless websocket

二十不惑的年纪,我简直走了狗屎运(4面拿字节跳动offer)

Java~~~

Java 面试 微服务 多线程 架构师

快照保护是什么意思?快照的原理是什么?

行云管家

镜像 数据保护 快照 数据安全

波宝TronLink钱包模式系统开发|波宝钱包模式功能介绍

量化系统19942438797

新一代设计编排交付套件分享

鲸品堂

交付工具

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