|
简介
继.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来源:https://www.cnblogs.com/xbhp/p/18177022
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|