.NET 9 的幾個新特性,新穎嗎?

翔星發表於2024-05-07

簡介

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

相關文章