【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

股东变员工,所以不发工资?| 法庭上的CTO(18)

赵新龙

CTO 法庭上的CTO

Spring 源码学习 11:invokeBeanFactoryPostProcessors

程序员小航

Java spring 源码 源码阅读

计算机网络简述

lee

计算机网络 网络协议 网络

什么是浮点数?

Kaito

计算机基础 浮点数

从MongoID的生成讨论分布式唯一ID生成方案

行如风

雪花算法 分布式ID 全局唯一ID 流星算法

盘点 2020 | 10 天开发前台系统技术系列

老魚

CSS 大前端 全栈 js 盘点2020

“盗窃”公司源代码被开除的CTO | 法庭上的CTO(20)

赵新龙

CTO 法庭上的CTO

anonymous匿名者场外交易系统APP软件开发

系统开发

为什么说rollup比webpack更适合打包库

fengxianqi

大前端 Rollup webpack

星域母子币系统软件开发|星域母子币APP开发

系统开发

英特尔赵宏:从硬件创新到平台突破,PC的未来非常值得期待

E科讯

深入浅出 ZooKeeper

vivo互联网技术

zookeeper 分布式 ZAB

重磅|中国PostgreSQL分会与腾讯云战略合作协议签订

PostgreSQLChina

数据库 postgresql 软件 开源社区

如何基于 SDK 快速开发一款IoT App 控制智能灯(iOS 版)

IoT云工坊

ios App 物联网 IoT sdk

生产环境全链路压测建设历程 21:某快递 A 股上市公司的生产压测案例之基于测试流量的混沌工程(故障演练)

数列科技杨德华

全链路压测 七日更

从一个模糊词查询需求的处理方案讨论到一种极速匹配方案的实现

行如风

模糊匹配 双数组trie树 ahocorasick ac自动机 黑名单过滤

英特尔力邀150家产业大咖推动Evo严苛认证,打造PC界的奥斯卡

E科讯

快速接入 | 从 0 到 1 构建语音聊天室

拍乐云Pano

音视频 RTC 实时语音 语音聊天室 语聊房

直播中不可缺少的一环-rtmp直播推流

anyRTC开发者

音视频 WebRTC CDN RTC RTMP

云视频技术领军人赵加雨:如何提升在线教育课堂互动体验

拍乐云Pano

音视频 在线教育 RTC 互动课堂 白板

混合用工、被拖欠工资的 CTO | 法庭上的 CTO(16)

赵新龙

CTO 法庭上的CTO

犯“走私罪”的CTO | 法庭上的CTO(19)

赵新龙

CTO 法庭上的CTO

为什么要TDD(测试驱动开发)

sherlockq

敏捷开发 TDD 极限编程

九环智能合约开发

V19927655815

APP开发

未签订劳动合同的CTO | 法庭上的 CTO(17)

赵新龙

CTO 法庭上的CTO

像用户一样测试:打破知识的诅咒

QualityFocus

测试 软件质量 可用性 用户体验

重学JS | 数组遍历的7种方法及兼容性处理(polyfill)

梁龙先森

大前端 编程语言

人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot)

刘悦的技术博客

人工智能 tensorflow chatbot 聊天机器人 keras

智慧仓储管理系统,是否能解决购物狂欢节后新一轮爆仓危机?

一只数据鲸鱼

物联网 数据可视化 智慧物流 智慧仓储

抢先体验全新升级版Eternal Wallet!

Geek_c610c0

数字货币 数字货币钱包开发

移动生态盘点与HMS生态解析

华章IT

华为 Android Studio 移动开发 HMS

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