BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ASP.NET Core OData 9はパフォーマンスを改善し、.NET Frameworkのサポートを廃止

ASP.NET Core OData 9はパフォーマンスを改善し、.NET Frameworkのサポートを廃止

原文リンク(2024-10-08)

マイクロソフトは、2024年8月30日にASP.NET Core OData 9パッケージの提供を開始すると発表した。この新しいパッケージは、ASP.NET Coreを.NET 8のODataライブラリと一致させ、データがODataフォーマットでエンコードされる方法の内部詳細を変更する。マイクロソフトによると、これによりOData仕様に沿ったものになるという。

2024年8月、マイクロソフトはOData .NETライブラリをバージョン8.0.0に更新した。その中でもっとも重要な変更は、レガシーな.NET Frameworkのサポートをやめたことだ。このバージョンからは、.NET 8以降のみがサポートされる。レガシー.NET Frameworkを使用している開発者は、ODataライブラリのバージョン7.xを使用できる。2025年3月にメンテナンス・モードに移行するまで、積極的にサポートされる。

OData 8 ライブラリは、新しいJSONライターSystem.Text.Utf8JsonWriterを使用して、JSONペイロードのシリアライズとデシリアライズを行う。この新しいライターは、Microsoft.OData.Json.DefaultJsonWriterFactoryによって作成される古いライターであるJsonWriterよりも、TextWriterベースではなくStreamベースであるため、大幅に高速で、より少ないメモリしか必要としない。新しいライターはODataバージョン7.12.2から利用可能であったが、現在ではOData 8のデフォルト実装となっている。

開発者は、サービスビルダーでAddODataメソッドを呼び出し、ODataJsonWriterFactoryインスタンスを提供することで、必要に応じて古いライターを使用できる。

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

新しいライターは、古いライターと同じ方法ではJSONをシリアライズしない。古いライターがそうであったように、すべての上位ASCII Unicode文字をエンコードしない。例えば、ギリシャ文字のような非ラテン記号をUnicodeの数列としてエンコードしない。その代わり、Unicode文字そのものを出力する。古いライターは、事実上すべての非ASCII文字を数字としてエンコードしていたため、ペイロードのサイズを大きくし、エンコード処理を遅くしていた。新しいJSONライターは、以前のバージョンで使用されていた小文字の代わりに、大文字のUnicode文字を出力する。

ASP.NET Core OData 9のもう1つの大きな変更点は、依存性注入の仕組みだ。以前のバージョンのODataライブラリは、ODataサービスを構成するために非標準のIContainerBuilderを使用していたが、更新されたライブラリは、.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    });}));

新しいODataライブラリには、レガシーな実装やJSONP形式などの古い標準の削除など、いくつかのマイナーな変更がある。完全なリストについては、開発者はOData 8 .NETライブラリのリリースノートを確認できる。

新しいASP.NET Core OData 9ライブラリは、NuGetパッケージとして配布されている。この新しいリリースは、過去6週間で150,000回ダウンロードされている。ASP.NET Core ODataのソースコードはGitHubで公開されており、リポジトリには現在458の未解決の問題がある。

作者について

この記事に星をつける

おすすめ度
スタイル

BT