ASP.NET Core OData 9的發(fā)布,放棄 .NET Framework
Microsoft 于 2024 年 8 月 30 日[1]宣布推出 ASP.NET Core OData 9 包。 這個(gè)新包將ASP.NET Core與.NET 8 OData庫保持一致,改變了OData格式中數(shù)據(jù)編碼的內(nèi)部細(xì)節(jié),使其更符合OData 規(guī)范[2]。
在2024年8月早些時(shí)候,Microsoft 將 OData .NET 庫更新到版本 8.0.0[1]。其中最重要的更改是放棄了對舊版 .NET Framework 的支持。從此版本開始,將僅支持 .NET 8 及更高版本。使用舊版 .NET Framework 的開發(fā)人員仍然可以使用 OData 庫的 7.x 版,這些庫在 2025 年 3 月之前仍受到積極支持[3],屆時(shí)他們將處于維護(hù)模式。
OData 8庫使用了新的JSON寫入器System.Text.Utf8JsonWriter[4]來序列化和反序列化JSON負(fù)載,這個(gè)新寫入器比舊的JsonWriter更快且需要更少的內(nèi)存。并且需要的內(nèi)存更少,由 Microsoft.OData.Json.DefaultJsonWriterFactory[5] 創(chuàng)建,因?yàn)樗皇腔?code>JsonWriter 而是基于TextWriter .雖然新編寫器自 OData 版本 7.12.2 以來一直可用,但現(xiàn)在它是 OData 8 中的默認(rèn)實(shí)現(xiàn)。
如果需要,開發(fā)人員仍然可以使用舊編寫器,方法是在服務(wù)生成器中調(diào)用 AddOData 方法并提供一個(gè)實(shí)例,該實(shí)例對應(yīng)于舊編寫器,為清楚起見,已重命名。
builder.Services.AddControllers().AddOData(options => options.EnableQueryFeatures().AddRouteComponents(routePrefix: string.Empty, model: modelBuilder.GetEdmModel(), configureServices: (services) => { services.AddScoped < Microsoft.OData.Json.IJsonWriterFactory > (sp => new Microsoft.OData.Json.ODataJsonWriterFactory()); }));
新編寫器的序列化方式與舊編寫器不同。它不會(huì)像較舊的編寫器那樣對所有高 ASCII Unicode 字符進(jìn)行編碼。例如,它不會(huì)將非拉丁符號(如希臘字母)編碼為 Unicode 數(shù)字序列。相反,它將輸出 Unicode 字符本身。舊編寫器會(huì)將幾乎所有非 ASCII 字符編碼為數(shù)字,從而使有效負(fù)載的大小更大,編碼過程更慢。新的 JSON 編寫器輸出大寫 Unicode 字符,而不是以前版本使用的小寫。
ASP.NET Core OData 9的另一個(gè)重大變化是依賴注入的工作方式,更新后的庫使用與.NET相同的抽象,即IServiceProvider。
builder.Services.AddControllers().AddOData(options => options.EnableQueryFeatures().AddRouteComponents(routePrefix: string.Empty, model: modelBuilder.GetEdmModel(), configureServices: (services) => { services.AddDefaultODataServices(odataVersion: Microsoft.OData.ODataVersion.V4, configureReaderAction: (messageReaderSettings) => { // Relevant changes to the ODataMessageReaderSettings instance here }, configureWriterAction: (messageWriterSettings) => { // Relevant changes to the ODataMessageWriterSettings instance here }, configureUriParserAction: (uriParserSettings) => { // // Relevant changes to the ODataUriParserSettings instance here }); }));
此外,新庫還移除了舊的實(shí)現(xiàn)和標(biāo)準(zhǔn),如JSONP格式。新的 ASP.NET Core OData 9 庫作為 NuGet 包[6]分發(fā)。OData 通過各種 NuGet 包提供,包括:
- Microsoft.OData.Core 8.0.1
- Microsoft.OData.Edm 8.0.1
- Microsoft.OData.Client 8.0.1
- Microsoft.Spatial 8.0.1
新版本在過去9 周內(nèi) 已被下載了 250.000 次。ASP.NET Core OData 的源代碼在 GitHub 上提供[7],存儲庫目前有 458 個(gè)未解決的問題,有關(guān)完整列表,開發(fā)人員可以查看 OData 8 .NET 庫的發(fā)行說明[8]。
相關(guān)鏈接
- [1]Announcing ASP.NET Core OData 9 Official Release:https://devblogs.microsoft.com/odata/announcing-asp-net-core-odata-9-official-release/
- [2]OData 規(guī)范:https://groups.oasis-open.org/communities/tc-community-home2?CommunityKey=e7cac2a9-2d18-4640-b94d-018dc7d3f0e2
- [3]在 2025 年 3 月之前仍受到積極支持: https://learn.microsoft.com/en-us/odata/support/support-policy
- [4]System.Text.Utf8JsonWriter: https://learn.microsoft.com/en-us/dotnet/api/system.text.json.utf8jsonwriter?view=net-8.0
- [5]Microsoft.OData.Json.DefaultJsonWriterFactory:https://learn.microsoft.com/en-us/dotnet/api/microsoft.odata.json.defaultjsonwriterfactory?view=odata-core-7.0
- [6]ASP.NET Core OData 9 nuget: https://www.nuget.org/packages/Microsoft.AspNetCore.OData/9.0.0
- [7]GitHub 上提供:https://github.com/OData/AspNetCoreOData
- [8]Announcing OData .NET 8 Official Release:https://devblogs.microsoft.com/odata/announcing-odata-net-8-official-release/
歡迎大家掃描下面二維碼成為我的客戶,扶你上云

浙公網(wǎng)安備 33010602011771號