写点什么

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

评论

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

DG-IoT: 开源项目职业教育助力解决过度补课难题

dgiot

物联网 2月月更 2月日更 dgiot dgiot物联网

云原生微服务技术趋势解读

阿里巴巴中间件

阿里云 微服务 云原生 中间件

手把手带你基于嵌入式Linux移植samba服务

华为云开发者联盟

Linux 嵌入式 Samba UNIX系统 SMB协议

如何构建一个流量无损的在线应用架构 | 专题中篇

阿里巴巴中间件

阿里云 云原生 中间件

网络安全kali渗透学习 web渗透入门 WireShark抓包及常用协议分析

学神来啦

CTF中PHP相关题目考点总结(二)

H

网络安全 CTF

CRM重构项目

Mars

白盒绕过、黑盒绕过——绕过waf(一)

喀拉峻

网络安全

网络编程懒人入门(十四):到底什么是Socket?一文即懂!

JackJiang

TCP 网络编程 socket IM 即时通讯IM

低代码如何解锁制造业数字生态系统?

TOBESOFT特碧软件

低代码 数字化 TOBESOFT

消除if-else之为Enum添加行为实现策略模式

topsion

Java clean code

G7完成2亿美元融资

极客天地

一周信创舆情观察(2.7~2.13)

统小信uos

云原生多云应用利器--Karmada 总览篇

Daocloud 道客

云原生 多云管理 Karmada

新年新知 | 2022必读的5篇行业趋势(内附下载)

LigaAI

AI 创新 行业趋势 新能源

第十二节:Springboot多环境配置

入门小站

spring-boot

微服务从代码到k8s部署应有尽有系列(二、网关)

万俊峰Kevin

微服务 RPC web开发 go-zero Go 语言

【C语言】一篇速通常量变量

謓泽

编程语言 C语言 2月月更 常量变量

如何构建一个流量无损的在线应用架构 | 专题尾篇

阿里巴巴中间件

阿里云 云原生 中间件 EDAS

教你用Elastic Search:运行第一条Hello World搜索命令 原创

华为云开发者联盟

数据库 全文检索 索引 Elastic Search 分布式实时搜索引擎

优秀程序员的30种思维--分析总结篇(13/100)

hackstoic

架构思维

北京冬奥有哪些AI“黑科技”?

澳鹏Appen

人工智能 自动驾驶 计算机视觉 nlp 黑科技

知名信息安全厂商渔翁信息加入龙蜥社区,共建开源生态

OpenAnolis小助手

Linux 开源 信息安全

MASA Framework - DDD设计(1)

MASA技术团队

C# .net 微软 框架 Framework

如何通过测试用例保障交付质量

阿里云云效

阿里云 云原生 开发测试 测试用例 研发

在线YAML转JSON工具

入门小站

工具

Linux常用的命令

龙空白白

linux 文件权限控制 linuc

英特尔CEO:开启超级摩尔定律的时代,推动前沿进展

科技新消息

Java线程池必知必会

CRMEB

Java&Go高性能队列之channel性能测试

FunTester

Go 性能测试 队列 channel FunTester

运维安全是指什么?如何做好运维安全?

行云管家

运维 网络安全 IT运维 运维安全

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