簡介
繼.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開發跳槽❀