ASP.NET Core OData 9的发布,放弃 .NET Framework

Microsoft 于 2024 年 8 月 30 日[1]宣布推出 ASP.NET Core OData 9 包。 这个新包将ASP.NET Core与.NET 8 OData库保持一致,改变了OData格式中数据编码的内部细节,使其更符合OData 规范[2]。

在2024年8月早些时候,Microsoft 将 OData .NET 库更新到版本 8.0.0[1]。其中最重要的更改是放弃了对旧版 .NET Framework 的支持。从此版本开始,将仅支持 .NET 8 及更高版本。使用旧版 .NET Framework 的开发人员仍然可以使用 OData 库的 7.x 版,这些库在 2025 年 3 月之前仍受到积极支持[3],届时他们将处于维护模式。

OData 8库使用了新的JSON写入器System.Text.Utf8JsonWriter[4]来序列化和反序列化JSON负载,这个新写入器比旧的JsonWriter更快且需要更少的内存。并且需要的内存更少,由 Microsoft.OData.Json.DefaultJsonWriterFactory[5] 创建,因为它不是基于JsonWriter 而是基于TextWriter .虽然新编写器自 OData 版本 7.12.2 以来一直可用,但现在它是 OData 8 中的默认实现。

如果需要,开发人员仍然可以使用旧编写器,方法是在服务生成器中调用 AddOData 方法并提供一个实例,该实例对应于旧编写器,为清楚起见,已重命名。

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());}));

新编写器的序列化方式与旧编写器不同。它不会像较旧的编写器那样对所有高 ASCII Unicode 字符进行编码。例如,它不会将非拉丁符号(如希腊字母)编码为 Unicode 数字序列。相反,它将输出 Unicode 字符本身。旧编写器会将几乎所有非 ASCII 字符编码为数字,从而使有效负载的大小更大,编码过程更慢。新的 JSON 编写器输出大写 Unicode 字符,而不是以前版本使用的小写。

ASP.NET Core OData 9的另一个重大变化是依赖注入的工作方式,更新后的库使用与.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    });}));

此外,新库还移除了旧的实现和标准,如JSONP格式。新的 ASP.NET Core OData 9 库作为 NuGet 包[6]分发。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 周内 已被下载了 250.000 次。ASP.NET Core OData 的源代码在 GitHub 上提供[7],存储库目前有 458 个未解决的问题,有关完整列表,开发人员可以查看 OData 8 .NET 库的发行说明[8]。

相关链接

  • [1]Announcing ASP.NET Core OData 9 Official Release:https://devblogs.microsoft.com/odata/announcing-asp-net-core-odata-9-official-release/

  • [2]OData 规范: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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值