翼度科技»论坛 编程开发 .net 查看内容

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

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
简介
继.NET 8之后,.NET 9在云原生应用程序得到了增强和性能得到提升。它是STS版本,将获得为期18个月的标准支持服务。你可以到官网下载.NET 9。它的几个改进如下:
序列化
在System.Text.Json中,.NET 9为序列化JSON提供了新的选项和一个新的单例,使得使用Web默认值进行序列化变得更加容易。
1、缩进选项
  1. var options = new JsonSerializerOptions
  2. {
  3.     WriteIndented = true,
  4.     IndentCharacter = '\t',
  5.     IndentSize = 2,
  6. };
  7. string json = JsonSerializer.Serialize(
  8.     new { Value = 1 },
  9.     options
  10. );
  11. Console.WriteLine(json);
  12. // {
  13. //                 "Value": 1
  14. // }
复制代码
在C#中,JsonSerializeOptions包含了新的属性,允许你自定义写入JSON的缩进字符和缩进大小,如上所示。
2、默认Web选项
  1. string webJson = JsonSerializer.Serialize(
  2.     new { SomeValue = 42 },
  3.     JsonSerializerOptions.Web // 默认为小驼峰命名策略。
  4. );
  5. Console.WriteLine(webJson);
  6. // {"someValue":42}
复制代码
在C#中,如果你想使用ASP.NET Core用于Web应用程序的默认选项进行序列化,可以使用新的JsonSerializeOptions.Web单例。
LINQ
最近添加到工具箱中的CountBy和AggregateBy方法。这些函数通过键进行状态聚合,消除了通过GroupBy进行中间分组的需要。
CountBy允许快速计算每个键的频率。在以下示例中,它识别给定文本字符串中出现最频繁的单词。
  1. string sourceText = """
  2.     Lorem ipsum dolor sit amet, consectetur adipiscing elit.
  3.     Sed non risus. Suspendisse lectus tortor, dignissim sit amet,
  4.     adipiscing nec, ultricies sed, dolor. Cras elementum ultrices amet diam.
  5. """;
  6. // 查找文本中出现最频繁的单词。
  7. KeyValuePair<string, int> mostFrequentWord = sourceText
  8.     .Split(new char[] { ' ', '.', ',' }, StringSplitOptions.RemoveEmptyEntries)
  9.     .Select(word => word.ToLowerInvariant())
  10.     .CountBy(word => word)
  11.     .MaxBy(pair => pair.Value);
  12. Console.WriteLine(mostFrequentWord.Key);
复制代码
AggregateBy提供了执行更广泛、更多样化工作流程的能力。以下示例展示了与指定键相关联的分数计算。
  1. (string id, int score)[] data =
  2.     [
  3.         ("0", 42),
  4.         ("1", 5),
  5.         ("2", 4),
  6.         ("1", 10),
  7.         ("0", 25),
  8.     ];
  9. var aggregatedData =
  10.     data.AggregateBy(
  11.         keySelector: entry => entry.id,
  12.         seed: 0,
  13.         (totalScore, curr) => totalScore + curr.score
  14.     );
  15. foreach (var item in aggregatedData)
  16. {
  17.     Console.WriteLine(item);
  18. }
  19. // (0, 67)
  20. // (1, 15)
  21. // (2, 4)
复制代码
加密
在加密方面,.NET 9引入了CryptographicOperations类型中的新的一次性哈希方法。.NET提供了各种静态的“一次性”哈希函数和相关函数的实现,如SHA256.HashData和HMACSHA256.HashData。使用一次性API是首选的,因为它们有潜力优化性能并最小化或消除分配。
开发人员旨在创建支持哈希,调用方定义哈希算法的API时,通常涉及接受HashAlgorithmName参数。然而,使用一次性API来处理此模式通常需要转换每个可能的HashAlgorithmName,然后使用相应的方法。为了解决这个问题,.NET 9引入了CryptographicOperations.HashData API。这个API使得能够对输入进行哈希或HMAC的生成作为一次性操作,算法由HashAlgorithmName确定。
  1. static void HashAndProcessData(HashAlgorithmName hashAlgorithmName, byte[] data)
  2. {
  3.     byte[] hash = CryptographicOperations.HashData(hashAlgorithmName, data);
  4.     ProcessHash(hash);
  5. }
复制代码
结语
.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
  1. 来源公众号:DotNet开发跳槽❀    
复制代码
来源:https://www.cnblogs.com/xbhp/p/18177022
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具