.NET 9 的几个新特性,新颖吗?

embedded/2024/10/21 7:56:31/

简介

继.NET 8之后,.NET 9在云原生应用程序得到了增强和性能得到提升。它是STS版本,将获得为期18个月的标准支持服务。你可以到官网下载.NET 9。它的几个改进如下:

序列化

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

1、缩进选项

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的缩进字符和缩进大小,如上所示。

2、默认Web选项

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

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

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)

加密

在加密方面,.NET 9引入了CryptographicOperations类型中的新的一次性哈希方法。.NET提供了各种静态的“一次性”哈希函数和相关函数的实现,如SHA256.HashData和HMACSHA256.HashData。使用一次性API是首选的,因为它们有潜力优化性能并最小化或消除分配。

开发人员旨在创建支持哈希,调用方定义哈希算法的API时,通常涉及接受HashAlgorithmName参数。然而,使用一次性API来处理此模式通常需要转换每个可能的HashAlgorithmName,然后使用相应的方法。为了解决这个问题,.NET 9引入了CryptographicOperations.HashData API。这个API使得能够对输入进行哈希或HMAC的生成作为一次性操作,算法由HashAlgorithmName确定。

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

结语

.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

译自:c-sharpcorner.com/article/what-new-in-net-9

来源公众号:DotNet开发跳槽❀    

http://www.ppmy.cn/embedded/37213.html

相关文章

java之continue语句

在java中&#xff0c;continue语句一般用在循环中&#xff0c;它的作用是结束本次循环&#xff0c;执行下一次循环。它在for循环用的比较多 下面是一段示例代码 public class Test {public static void main(String[] args) {int sum0;for(int i1;i<100;i){if(i%20){conti…

栈的实现以及c语言解决括号匹配问题

一、栈的实现 1、头文件 typedef int STDataType; typedef struct Stack {STDataType* _a;int _top; // 栈顶int _capacity; // 容量 }Stack; // 初始化栈 void StackInit(Stack* ps); // 入栈 void StackPush(Stack* ps, STDataType data); // 出栈 void StackPop(S…

基于springboot+vue+Mysql的生鲜交易系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

初期Linux

一&#xff0c;系统分为 1.1window系统 个人 &#xff1a;win7&#xff0c;win8&#xff0c;Win10&#xff0c;Win11服务器版&#xff1a;window server 2003&#xff0c;window server 2008 1.2Linux系统 centos7redhatubantukali 1.3什么是Linux&#xff1f; Linux是基…

[Java EE] 多线程(九):ReentrantLock,Semaphore,CountDownLatch与线程安全的集合类(多线程完结)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

太原理工大学Python数据分析原理与应用(课外考题:8~11章)

这部分大概只考10分&#xff0c;且大部分出在选择题&#xff0c;填空最多一两个 (仅供参考) 第十章 (理解概念为主&#xff0c;无需看推导过程) 第十一章

WebSocket学习笔记

概述 WebSocket是一种网络通信协议&#xff0c;它在2011年被IETF&#xff08;互联网工程任务组&#xff09;标准化为RFC 6455。WebSocket协议允许服务器与客户端之间进行全双工通信&#xff0c;即客户端和服务器可以在任何时候发送消息&#xff0c;而不需要像传统的HTTP请求那…

我独自升级崛起怎么下载 我独自升级崛起下载教程来了

《我独自升级&#xff1a;崛起》作为一款炙手可热的游戏&#xff0c;其非凡的品质迅速聚拢了大量玩家的目光&#xff0c;就如同磁铁吸引铁屑一般&#xff0c;展现了优质游戏所固有的强大吸引力。在这款游戏中&#xff0c;每位玩家都能化身成为拥有超凡能力的英雄&#xff0c;体…