.NET 9 发布 性能提拔、AI 支持与全方位改进
前言.NET 9 正式发布,这是迄今为止最高效、现代、安全、智能且高性能的 .NET 版本。
新版本凝结了全球数千名开发者的共同努力,包含了数千项性能、安全性和功能性改进。
主要亮点
[*]性能提拔:全面提拔性能,降低内存使用。
[*]安全性加强:明显的安全性改进。
[*]AI 支持:轻松将 AI 集成到应用程序中。
[*]全面改进:涵盖编程语言、开发工具和工作负载,提供统一的开发平台。
.NET Conf 2024 大会
.NET Conf 2024 免费参加我们的三天虚拟开发者大会(11 月 12-14 日),深入了解 .NET 9 的新功能。
地址:https://www.dotnetconf.net/
让我们一起看看 .NET 9 中新增的功能和工具的亮点。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113111403499-135003534.png
.NET 9 运行时性能改进、更低的内存占用
.NET 9 是迄今为止性能最高的 .NET 版本,进行了 1,000 多项与性能相干的改进,并采用了更高效的算法来生成更好的代码。
Stephen Toub 深入探讨了这些改进,值得阅读。
[*]服务器 GC 优化
服务器 GC 现在根据应用程序的现实内存需求进行调整,而不是依靠于情况中的资源(内存和 CPU)。这一变化特别适用于高焦点数情况,尤其是在应用程序内存需求较小或随时间变化较大的情况下。
这种新的 GC 实现镌汰了内存使用量,但可能会带来轻微的吞吐量成本。用户可以选择设置服务器 GC 使用旧版实现,以进行测试。
[*]性能提拔
TechEmpower 基准测试显示,.NET 9 在吞吐量上明显提高,同时内存使用量大幅降落,这主要得益于服务器 GC 的优化。
[*]矢量化和硬件支持
.NET 9 回归矢量化,增加了对 Arm64 SVE、Intel AVX10 等新芯片的支持,以及硬件加速运行时。
[*]RyuJIT 性能提拔
RyuJIT 提高了 Arm64、循环、PGO 和边界检查的性能。异常处理速率提高了 50%。
[*]动态 PGO 更新
动态设置文件引导优化 (PGO) 更新,优化更多代码模式。JIT 为常见范例转换生成快速路径代码,使执行速率提高 70%,但必要禁用 ReadyToRun。
[*]LINQ 优化
LINQ 方法如 Take 和 DefaultIfEmpty 在空集适时返回速率提高了 10 倍。Enumerable.SequenceEqual 通过 MemoryExtensions.SequenceEquals 实现高效的迭代和矢量化,现在支持 List。
[*]System.Text.Json 优化
System.Text.Json 的各种操纵性能提拔了超过 50%。JsonProperty.WriteTo 直接写入 UTF8 字节,镌汰字符串分配。
新 API JsonMarshal.GetRawUtf8Value 替代 JsonElement.GetRawText,制止额外的编码和分配。
JsonObject 优化了内存分配和调整大小的成本。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113111459030-924976467.png
.NET Aspire – 开发更好应用程序的底子组件
.NET Aspire 是一组强盛的工具、模板和包,用于无缝开发可观察、生产就绪的应用程序。
自首次发布以来的六个月内,我们对堆栈的全部部分进行了改进,包括遥测和指标仪表板的新功能以及更简化的云应用程序部署。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113111552394-1676401126.png
新功能
从仪表板启动和停止资源。
在调试会话之间保持容器处于活动状态。
新的 API,如 WaitFor,更好地管理资源启动。
新集成
与 OpenAI、Ollama、Milvus 等无缝集成。
简化获取
更轻松地将 .NET Aspire 集成到应用程序中。
改进了 Azure 容器应用程序的部署方案。
预览支持 Azure Functions。
广泛采用
微软内部:Xbox 和 Copilot 团队已将 .NET Aspire 集成到他们现有的服务中,通过易于访问的见解和 Azure 集成收紧了内部开发循环。
社区:.NET Aspire 被广泛采用,社区积极参与并贡献了新的工具和集成。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113111633983-298199864.png
人工智能——不停发展和进步的 AI 生态系统
.NET 功能不停扩展 ,以帮助我们注入人工智能,主要进展包括:
学习材料和示例
提供新的学习材料和示例,简化与生态系统集成的过程。
相助同伴和社区
与 Azure、OpenAI、LlamaIndex、Qdrant、Pinecone、Milvus、AutoGen、OllamaSharp、ONNX Runtime 等相助同伴相助,构建强盛的 AI 生态系统。
与社区和控件供应商相助,构建智能组件生态系统,使 AI 集成更加轻易。
行业采用
H&R Block、Blip 和 KPMG 等公司已采用 .NET 构建顶级 AI 体验。
.NET 支持 GitHub Copilot 和全新的 Microsoft Copilot 体验。
无缝部署
将 AI 解决方案部署到云端变得更加无缝。
.NET 9 中的 AI 生态系统扩展
强盛的生态系统意味着开发人员有更多选择来决定最适合他们的场景。为了简化这些集成并降低进入停滞,我们与 Semantic Kernel 相助,在 Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData 下引入了一组抽象,为与 AI 服务交互提供统一的 C# 抽象层。这些抽象支持小型和大型语言模型(SLM 和 LLM)、嵌入、向量存储和中间件。早期采用者如 Pieces 和 OllamaSharp 已担当益于这种新的简化方法。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113111954080-930688923.png
张量和分词器
在 .NET 9 中,我们对库和基元范例进行了重大改进,以改进 AI 开发:
张量:引入了新的 Tensor 范例,用于表示多维数据,简化了库和应用操纵之间的互操纵。
分词器:Microsoft.ML.Tokenizers 支持多种标志化算法,包括字节级 BPE、SentencePiece 和 WordPiece。改进了对流行模型系列(如 GPT(4、o1 等)、Llama、Phi 和 Bert)的标志器支持。
降低进入门槛
随着语言模型即服务的兴起,开发人员使用人工智能的进入门槛大大降低。我们提供的这些新构建块旨在帮助开发人员更轻松地集成和使用 AI 服务。
快速开始
如感兴趣的朋侪可以浏览
AI 文档:https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/aiextensions.svg
.NET 的 AI 示例:https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/aiextensions.svg
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113111851352-282964638.png
针对 .NET 开发人员的 GitHub Copilot 加强功能
GitHub Copilot 通过改善编辑器体验并在常规工作流程中为 .NET 开发人员提供 AI 帮助,明显提高了工作效率。
最新版本的 Visual Studio 和 Visual Studio Code 以及 GitHub Copilot 的更新,带来了以下新功能:
[*]AI 智能变量检查
[*]通过集成 AI 变量检查优化调试工作流程。
[*]AI 驱动的 IEnumerable 可视化工具
[*]在 IEnumerable 可视化工具中,提供 AI 驱动的 LINQ 可编辑表达式。
[*]使用 GitHub Copilot 修复代码
[*]GitHub Copilot 帮助解决代码问题。
[*]更好的 C# 人工智能补全
[*]GitHub Copilot 从相干源文件中引入额外的上下文,改进 C# 补全。
[*]使用 GitHub Copilot 调试测试
[*]通过 GitHub Copilot 的调试测试功能,获取调试失败测试的帮助。
ASP.NET Core 和 Blazor 进行全栈 Web 开发
ASP.NET Core 是 .NET 全栈 Web 框架,提供现代 Web 应用程序和可扩展后端服务所需的一切。
.NET 9 带来了新功能以及明显的性能、可访问性和安全性改进。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113112045376-1432880024.png
优化静态文件处理
在构建和发布期间优化静态 Web 资源(如 JavaScript 和 CSS 文件),通过向文件名添加基于内容的哈希生成指纹版本,确保文件名唯一并制止使用过时版本。
发布时使用 Brotli 预压缩文件,镌汰下载大小并减轻服务器负担。
使用端点路由处理静态文件,支持每端点授权等高级功能。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113112133616-597502826.png
Blazor 改进性能提拔
[*]性能在全部领域都有所改进。
[*]新的 Blazor 混合和 Web 应用模板。
[*]新 API 使开发人员可以或许创建更流畅的用户体验。
组件渲染模式检测
[*]使用 RendererInfo API 在运行时检测组件渲染模式,预渲染期间禁用或隐藏交互元素,组件交互后启用它们。
重新连接体验
[*]Blazor Server 应用程序受益于更友好的 UI、更快的重新连接和自动处理连接丢失时的页面重新加载。
OpenAPI 加强功能
内置 OpenAPI 支持
[*]使用 Microsoft.AspNetCore.OpenAPI 包自动生成 OpenAPI 文档,元数据从应用程序代码、属性和扩展方法中提取。
[*]支持对操纵、模式或整个文档进行定制。
[*]Minimal API 应用程序中支持原生 AOT,优化性能。
[*]构建时生成 OpenAPI 文档,集成到当地开发工作流程中。
安全性改进开发证书设置
[*]在 Linux 上更轻松地设置受信任的开发证书,启用 HTTPS。
身份验证状态传输
[*]Blazor 提供内置 API 用于将身份验证状态传输到客户端。
OAuth 和 OIDC 支持
[*]支持向 OAuth 和 OIDC 授权请求添加额外参数,以及对推送授权请求 (PAR) 的支持。
数据保护和连接指标
[*]强化数据保护支持。
[*]改进 Kestrel 的连接指标,便于检测连接失败原因。
.NET MAUI – 加强多平台应用程序开发
.NET MAUI 是使用 .NET 跨移动和桌面构建多平台应用程序的终极工具。
.NET 9 的主要目标是提高质量和可靠性,使您可以或许更轻松地在生产中交付应用程序。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113112227006-1633182348.png
社区参与和贡献
[*]使用 .NET MAUI 构建的应用程序在 Google Play 商店中的数目翻倍。
[*]开发人员使用率增长了 30% 以上,达到历史最高水平。
[*]社区参与度和贡献明显增加。
[*]Syncfusion 自今年 7 月到 9 月开始贡献,占全部社区贡献的 55%,比前 3 个月增长了 557%。
新项目模板
[*]引入全新的项目模板,包含 14 个免费开源 Syncfusion 控件和其他社区流行库。
[*]演示 MVVM、数据库访问、导航、视图刷新等保举实践,帮助快速启动应用程序开发。
性能和可靠性加强
[*]全面改进 .NET MAUI 的性能,包括 iOS 和 Mac Catalyst 的新实现CollectionView和CarouselView。
[*]更新现有控件和应用程序生命周期,支持本机 AOT 和修剪加强功能,构建更小、更快的应用程序。
平台支持
[*]支持最新的 iOS、macOS 和 Android 操纵系统。
[*]添加了多种本机平台功能,如 Android Asset Pack、改进的与本机库的互操纵性,以及通过新 Xcode dotnet 工具简化 Xcode 和 Visual Studio Code 之间的集成。
使用 .NET 9 进行 Windows 开发
借助 .NET 9 的 Windows 应用程序将可以或许访问最新的操纵系统特性和功能,同时确保更高的性能和可访问性。无论是使用 WinUI 3 和 Windows App SDK 构建新的现代应用程序,还是对现有的 WPF 和 WinForms 应用程序进行现代化改造,.NET 9 都能提供最佳支持。
WinUI 3
本机 AOT 支持,实现更小、性能更高的应用程序。
WPF
Fluent UI 现代主题加强,提拔用户界面体验。
WinForms
新增深色模式、现代图标 API 和改进的异步 API 访问(如 Control.InvokeAsync)。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113112308150-2088452677.png
C# 13 和 F# 9 新功能
C#是世界上最受欢迎和喜爱的编程语言之一。
C# 13 专注于让我们可以或许更轻松、更安全、更快速地编写代码。
聚集表达式
params修饰符现在支持任何受支持的聚集范例,而不但仅是数组。
高性能代码
通过使用 ref struct 和 System.Threading.Lock,解锁更高性能的代码和更轻松的多线程应用。
Lock myLock = new();
void Concat<T>(params List<T> items)
{
lock (myLock)
Console.WriteLine(string.Join("\e[1mItem: \e[0m", items));
}F# 9 继续为 .NET 开发人员提供最佳的函数式编程体验。
主要改进包括:
可空引用范例:与 C# 库的交互更加范例安全。
优化的整数范围:加速循环和其他推导式的速率。
优化的相等检查:制止装箱,提高常见操纵的性能。
自动生成的 .Is* 属性:为受歧视的连合提供快速案例测试。
尺度库加强:包含聚集的随机函数,适用于数据科学和游戏开发。
改进的诊断和工具:提高开发人员的生产力。
// FS3261: Nullness warning: The types 'string' and 'string | null' do not have equivalent nullability.
let methodArgument (s: string | null) = File.Create s
let matchNullableString(s: string | null) =
match s with
| null -> 0
| notNull -> notNull.Length // notNull is of type string.NET 9 开发工具更新
.NET 9 附带了多项开发工具更新,旨在提高开发人员的工作效率。
Visual Studio 2022 17.12
[*]性能提拔:明显提拔性能,提高开发效率。
[*]调试和诊断:加强的调试和诊断体验。
[*].NET Aspire 集成:与 .NET Aspire 更紧密的集成。
[*]云集成:更深入的云集成。
[*]C# 13 支持:支持 C# 13 的新功能。
[*]Git 支持:加强的 Git 支持。
[*]用户请求功能:包含大量用户请求的功能。
Visual Studio Code 的 C# 开发工具包
[*]编辑可靠性:改进编辑可靠性。
[*]NuGet 包管理:加强的 NuGet 包管理。
[*]测试适配器:加强的测试适配器和代码覆盖率结果。
[*].NET MAUI 支持:改进的 .NET MAUI 开发支持。
[*]项目启动/调试:升级的项目启动和调试设置。
.NET CLI 改进
[*]终端记录器:全面改进终端记录器,包括可点击链接、连续计时器和颜色编码。
[*]简洁输出:记录器输出更加简洁,提供失败和告诫总数的择要。
[*]软件包审计:dotnet restore更新,审核顶级依靠项和通报依靠项的软件包漏洞。
[*]中央包管理:与中央包管理完美配合,快速将包升级部署到全部项目。
[*]漏洞警报:在终端、Visual Studio 和 CI/CD 管道中提供包漏洞警报,由 GitHub Advisory Database 驱动。
https://img2024.cnblogs.com/blog/576536/202411/576536-20241113112355407-1056993420.png
立刻体验 .NET 9 相干内容
.NET 9 以及 Visual Studio 2022 和 Visual Studio Code 的 C# 开发工具包的更新现已发布。
下载链接
[*].NET 9
[*]https://dotnet.microsoft.com/download/dotnet/9.0
[*]Visual Studio 2022 v17.12
[*]https://visualstudio.microsoft.com/downloads/
[*]Visual Studio Code C# 开发工具包
[*]https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit
了解新增功能
[*].NET 9 中的新增功能
[*]https://learn.microsoft.com/dotnet/core/whats-new/dotnet-9
[*]C# 13 中的新增功能
[*]https://learn.microsoft.com/dotnet/csharp/whats-new/csharp-13
[*]F# 9 中的新增功能
[*]https://learn.microsoft.com/dotnet/fsharp/whats-new/fsharp-9
[*]ASP.NET Core 中的新增功能
[*]https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-9.0
[*].NET Aspire 中的新增功能
[*]https://learn.microsoft.com/dotnet/aspire/whats-new
[*].NET MAUI 中的新增功能
[*]https://learn.microsoft.com/dotnet/maui/whats-new/dotnet-9
[*]EF Core 中的新增功能
[*]https://learn.microsoft.com/ef/core/what-is-new/ef-core-9.0
[*]WPF 中的新增功能
[*]https://learn.microsoft.com/dotnet/desktop/wpf/whats-new/net90
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或必要进一步的帮助,欢迎随时留言。
也可以参加微信公众号 社区,与其他热爱技术的同行一起交流心得,共同发展!良好是一种风俗,欢迎大家留言学习!
https://img2024.cnblogs.com/blog/576536/202408/576536-20240814113403514-910171896.png
译文:https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]