【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

评论

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

模块一:为何架构设计能力难以提升? --学习总结

小鹿

在线英文字符串大写转小写,小写转大写工具

入门小站

工具

1024:SQL注入

Changing Lin

10月月更

设计电商秒杀系统

tjudream

架构训练营总结

tjudream

双十一即将到来,你的网站真的准备好了吗?

阿里巴巴云原生

阿里云 产品 云原生 云拨测

架构实战训练营模块 6 作业

Sonichen

模块一作业

ks

架构实战营

极客时间【架构实战营】第二期 模块六作业

Geek_91606e

架构实战营

Prometheus 内置函数(三)

耳东@Erdong

Prometheus PromQL 内置函数 10月月更

IM场景的移动端UI自动化测试平台实践

轻口味

android 自动化测试平台 10月月更

模块一作业

小鹿

架构实战营模块六作业

Geek_d18264

架构实战营

电商系统微服务拆分

Sky

「架构实战营」

拆分电商系统为微服务

Yina🌝很浪🌊

【KubeMeet 上海站回顾】 探索云原生应用管理与交付新解法

阿里巴巴云原生

阿里云 开源 云原生 KubeMeet

是极客,也是大娱乐家! 爱奇艺首届“黑客马拉松”见证“娱乐,未来已来”

爱奇艺技术产品团队

设计产品的十大可用性原则

石云升

产品经理 产品设计 产品思维 职场经验 10月月更

架构实战营模块一作业

孙志强

架构实战营

极客时间架构实战营作业六

jjn0703

架构实战营

0 基础架构入门 - 6(电商系统微服务架构)

felix

架构实战营 0 基础架构入门

架构实战营-第三期-学习总结

岚哲

极客时间 架构 架构实战营

电商系统微服务拆分

Geek_db27b5

vivo AI 计算平台的 ACK 混合云实践

阿里巴巴云原生

阿里云 云原生 ACK Vivo

架构实战营模块六作业 - 拆分电商系统为微服务

李焕之

毕业总结

Felix

(module6)电商微服务系统拆分

消失的子弹

收藏这36个正则表达式,开发效率提高80%

Tom弹架构

Java 正则表达式

学生管理系统架构设计

孙志强

架构实战营

电商系统微服务拆分设计

guangbao

基于 RocketMQ 的基金数字化陪伴体系的架构实践

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 金融场景

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