首页 > 其他分享 >.NET 9 技术革新,新特性概览

.NET 9 技术革新,新特性概览

时间:2024-08-22 22:26:51浏览次数:12  
标签:概览 特性 API 开发者 哈希 技术革新 NET 序列化

目录

简介

正文

新特性

1、序列化

2、LINQ

3、加密

总结

.NET 9 下载地址

最后


简介

.NET 9 作为微软推出的最新框架版本,无疑为开发者带来了一系列的新特性,继.NET 8 之后 .NET 9 在云原生应用程序得到了增强和性能得到提升。

它是STS版本,将获得为期18个月的标准支持服务。这些新特性究竟有多新颖?它们将如何影响我们的开发实践?

本文将探讨.NET 9 的几个关键新特性,可以到官网下载.NET 9。

正文

.NET 9 新特性无疑为开发者提供了更多的工具和可能性。

从性能优化到跨平台支持,从语言特性的增强到对云原生和AI/ML的支持,这些新特性都体现了微软对开发者需求的深刻理解,它的几个改进如下:

1、性能优化

.NET 9 在性能方面进行了显著的优化。这包括改进的垃圾回收机制、更快的启动时间和更低的内存占用。这些改进对于需要处理大量数据和高并发请求的应用来说,无疑是一个巨大的福音。

2、跨平台支持增强

.NET 9 进一步扩展了其跨平台能力,支持更多的操作系统和设备。这意味着开发者可以更容易地构建和部署跨多个平台的应用,而无需担心兼容性问题。

3、C# 10 新特性

与.NET 9 一同发布的还有 C# 10,它带来了许多新的语言特性,如记录类型、只读引用和全局using声明等。这些新特性不仅提高了代码的可读性和可维护性,还简化了开发过程。

4、MAUI 集成

.NET 9 集成了.NET Multi-platform App UI (MAUI),这是一个跨平台的UI框架,允许开发者使用单一的代码库为不同的平台创建应用程序。MAUI 的集成使得.NET 9 在移动应用开发领域更具竞争力。

5、云原生支持

.NET 9 加强了对云原生应用的支持,包括容器化和微服务架构。这使得开发者可以更容易地构建和部署云原生应用,同时确保应用的可扩展性和弹性。

6、改进的AI和ML支持

.NET 9 还提供了改进的人工智能和机器学习支持,使得开发者可以更容易地集成这些技术到他们的应用中。这对于希望利用AI和ML技术提升应用智能的开发者来说是一个重要的进步。

新特性

1、序列化

在System.Text.Json中,.NET 9 为序列化JSON提供了新的选项和一个新的单例,使得使用Web默认值进行序列化变得更加容易。

  • 缩进选项
var options = new JsonSerializerOptions
{
    WriteIndented = true,
    IndentCharacter = '\t',
    IndentSize = 2,
};

string json = JsonSerializer.Serialize(
    new { Value = 1 },
    options
);
Console.WriteLine(json);
// {
//                 "Value": 1
// }

在C#中,JsonSerializeOptions包含了新的属性,允许你自定义写入JSON的缩进字符和缩进大小,如上所示。

  • 默认Web选项
string webJson = JsonSerializer.Serialize(
    new { SomeValue = 42 },
    JsonSerializerOptions.Web // 默认为小驼峰命名策略。
);
Console.WriteLine(webJson);
// {"someValue":42}

在C#中,如果你想使用ASP.NET Core用于Web应用程序的默认选项进行序列化,可以使用新的JsonSerializeOptions.Web单例。

2、LINQ

最近添加到工具箱中的CountBy和AggregateBy方法。这些函数通过键进行状态聚合,消除了通过GroupBy进行中间分组的需要。

CountBy允许快速计算每个键的频率。在以下示例中,它识别给定文本字符串中出现最频繁的单词。

string sourceText = """
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    Sed non risus. Suspendisse lectus tortor, dignissim sit amet,
    adipiscing nec, ultricies sed, dolor. Cras elementum ultrices amet diam.
""";

// 查找文本中出现最频繁的单词。
KeyValuePair<string, int> mostFrequentWord = sourceText
    .Split(new char[] { ' ', '.', ',' }, StringSplitOptions.RemoveEmptyEntries)
    .Select(word => word.ToLowerInvariant())
    .CountBy(word => word)
    .MaxBy(pair => pair.Value);

Console.WriteLine(mostFrequentWord.Key);

AggregateBy提供了执行更广泛、更多样化工作流程的能力。以下示例展示了与指定键相关联的分数计算。

(string id, int score)[] data =
    [
        ("0", 42),
        ("1", 5),
        ("2", 4),
        ("1", 10),
        ("0", 25),
    ];

var aggregatedData =
    data.AggregateBy(
        keySelector: entry => entry.id,
        seed: 0,
        (totalScore, curr) => totalScore + curr.score
    );

foreach (var item in aggregatedData)
{
    Console.WriteLine(item);
}
// (0, 67)
// (1, 15)
// (2, 4)
3、加密

在加密方面,.NET 9 引入了 CryptographicOperations 类型中的新的一次性哈希方法。

.NET提供了各种静态的"一次性"哈希函数和相关函数的实现,如 SHA256.HashData 和 HMACSHA256.HashData。

使用一次性API是首选的,因为它们有潜力优化性能并最小化或消除分配。

开发人员旨在创建支持哈希,调用方定义哈希算法的API时,通常涉及接受 HashAlgorithmName 参数。

然而,使用一次性 API 来处理此模式通常需要转换每个可能的 HashAlgorithmName,然后使用相应的方法。

为了解决这个问题,.NET 9 引入了 CryptographicOperations.HashData API。

static void HashAndProcessData(HashAlgorithmName hashAlgorithmName, byte[] data)
{
    byte[] hash = CryptographicOperations.HashData(hashAlgorithmName, data);
    ProcessHash(hash);
}

这个 API 使得能够对输入进行哈希或 HMAC 的生成作为一次性操作,算法由 HashAlgorithmName确定。

总结

.NET 9引入了针对云原生应用和性能优化的重大增强。通过对序列化、LINQ改进和加密方面的关注,开发人员可以利用新功能和API来简化开发流程并增强应用程序安全性。

值得注意的增强包括增强的JSON序列化选项,强大的LINQ方法如CountBy和AggregateBy,以及方便的CryptographicOperations.HashData API,用于高效的哈希操作。

随着.NET 9的不断发展,它承诺为各种用例提供强大的工具和功能,帮助开发人员构建现代化、高性能的应用程序。

大家对.NET 9 有啥期待,欢迎大家留言讨论!

.NET 9 下载地址

dotnet.microsoft.com/en-us/download/dotnet/9.0

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠]社区,与其他热爱技术的同行一起交流心得,共同成长!

标签:概览,特性,API,开发者,哈希,技术革新,NET,序列化
From: https://blog.csdn.net/u012573563/article/details/141439422

相关文章

  • Asp .Net Core 学习笔记
    Startup类ConfigureServices方法注册服务,并通过依赖注入(DI)或者ApplicationServices在整个应用中使用服务使用IServiceCollection的各种Add{Service}进行注册,例如,AddDbContext、AddDefault、AddEntityFrameworkStores和AddPages在Configure方法配置应用服务之前,由主机......
  • Kubernetes: client-go 源码剖析(一)
    kubernetes:client-go 系列文章:Kubernetes:client-go源码剖析(一)Kubernetes:client-go源码剖析(二)0.前言在看 kube-scheduler 组件的过程中遇到了 kube-scheduler 对于 client-go 的调用,泛泛的理解调用过程总有种隔靴搔痒的感觉,于是调转头先把 client-go 理清楚......
  • .net8 的webapi部署到华为云的操作
    首先还是打包到文件夹:我的服务器是X64的centos8系统,所以我的配置如图: 发布后,我没有用它的dockerfile,而是用的docker-compose去编写的docker脚本,如下:services:ticket_manager_Api:#服务名称container_name:ticket_manager_Api#容器名称hostname:ticke......
  • 【C#】.NET报错:所生成项目的处理器框架“MSIL”与引用“xxx”的处理器架构“AMD64”不
    一、现象所生成项目的处理器架构“MSIL”与引用“System.Data.SQLite,Version=1.0.60.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139,processorArchitecture=x86”的处理器架构“AMD64”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的......
  • .Net8 部署到IIS 10 上需要注意的点
    现在大部分项目都上云了,而且是linux的系统,这部分我下一篇再讲,这次讲一下如何部署到iis10,首先项目点击发布-》目标框架.net8部署模式是独立,目标运行时是win-x64,你也可以选择部署模式为依赖框架,目标运行时选择可移植,但是这样的话要注意IIS的应用程序池选择启用32位应用程序,如果是......
  • ado.net 操作sqlite
    新建控制台项目安装nuget包Microsoft.Data.Sqlite数据库名字和链接stringdbName="test.db";SqliteConnection?connection=null;try{//创建链接connection=newSqliteConnection($"DataSource={dbName}");//打开链接connection.Open();......
  • FreeScheduler 在asp.net core 中使用依赖注入的方式进行注入使用
    1.创建SchedulerTask.cs类,代码如下publicclassSchedulerTask{privatereadonlyILogger<SchedulerTask>_logger;privatereadonlyIServiceScopeFactory_serviceScopeFactory;publicSchedulerTask(ILogger<SchedulerTask>logger,IServiceSc......
  • .NetCore里使用定时任务BackgroundService
    原文链接:https://blog.csdn.net/x1234w4321/article/details/140797306namespaceXCGWebApp.TimerService{///<summary>///后台定时任务///</summary>publicclassTimerBackgroundService:BackgroundService{protectedoverrid......
  • c# Winfrom log4net
    nugetlog4net  创建一个名为log4net.config文件添加如下代码  <?xmlversion="1.0"encoding="utf-8"?><configuration> <configSections> <sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionH......
  • Fedora Linux 41 推出多版本 Kubernetes RPM,灵活性大大增加!
    随着FedoraLinux41的即将发布,Kubernetes管理员和企业用户将迎来一个令人振奋的功能更新:多版本KubernetesRPM。这一创新举措标志着Fedora在Kubernetes打包策略上的重大转变,为容器化环境提供了更大的灵活性和控制能力。在容器化技术日益普及的今天,Kubernetes已......