.NET 6 の RC 2 がリリースされました。ASP.NET Core についても Preview 1 から RC 2 まで段階的に情報や新機能がリリースされており、情報が分散して探しにくいので重要な更新情報を整理してみました。
公式情報も更新されているため、内容は随時更新中です。
.NET 6 の更新情報は以下をご覧ください。
hiro128.hatenablog.jp
- Minimal API の導入(.NET 6 Preview 4)
- Minimal API のアップデート(.NET 6 RC 2)
- 非同期ストリーミング(.NET 6 Preview 4)
- HTTP logging ミドルウェア(.NET 6 Preview 4)
- 新しいプロジェクトのデフォルトの起動プロファイルにKestrelを使用(.NET 6 Preview 4)
Minimal API の導入(.NET 6 Preview 4)
公式情報:
Introducing minimal APIs
関連記事:
hiro128.hatenablog.jp
Minimal API のアップデート(.NET 6 RC 2)
Minimal API に対し、以下のいくつかのアップデートがあります。
公式情報:Minimal API updates
パラメータのバインディングの対応強化(.NET 6 RC 2)
TryParse
とBindAsync
に継承されたメソッドに対するサポートを追加- パブリックの
TryParse
とBindAsync
メソッドが正しい形式かどうかをチェックする機能が追加 - これらのメソッドに間違った構文を使っている場合エラーがスローされるようになった
- カスタムタイプにルート、ヘッダ属性、およびクエリ文字列から値をバインドしたい場合、カスタムタイプに静的な
TryParse
メソッドを追加することができる
公式情報:Parameter Binding
OpenAPI の対応強化(.NET 6 RC 2)
Accepts
拡張メソッドや() [Consumes(typeof(Todo), "application/json", IsRequired = false)]
属性を使って、リクエストボディが必須かどうかを記述できる- Accepts 拡張メソッドとConsumes 属性で、生成された open-api docs に対して、Todo タイプと application/json の両方を表現することができる。
公式情報:OpenAPI
ソースコードの分析(.NET 6 RC 2)
- ルートハンドラの問題を素早く発見したり、ミドルウェアの設定ミスを警告したりするためのアナライザを追加
- アナライザは、
WebApplicationBuilder
のミドルウェアの順序を検証し、誤ったミドルウェアの構成や順序が検出された場合に警告する IActionResult
を実装した型がルートハンドラから返された場合に検出し、結果が意図せずに JSON としてシリアル化された場合に警告する機能を追加
公式情報:Source Code Analysis
APIの名前変更(破壊的変更)(.NET 6 RC 2)
- 意図を適切に説明するために以下のAPIの名称を変更した。
DelegateEndpointConventionBuilder
->RouteHandlerBuilder
OpenApiDelegateEndpointConventionBuilderExtensions
->OpenApiRouteHandlerBuilderExtensions
DelegateEndpointRouteBuilderExtensions
は、既存のEndpointRouteBuilderExtensions
と統合した。
(上記の変更により、DelegateEndpoint
をRouteHandler
に置き換え、クラス名のConvention
を削除した)
非同期ストリーミング(.NET 6 Preview 4)
- コントローラのアクションからレスポンスのJSONフォーマッタに至るまで、非同期ストリーミングがサポートされるようになった
- アクションからIAsyncEnumerableを返しても、レスポンスの内容が送信される前にメモリにバッファリングされなくなった
- 非同期に列挙できる大規模なデータセットを返す際のメモリ使用量が削減される
公式情報:Async streaming
HTTP logging ミドルウェア(.NET 6 Preview 4)
- HTTPリクエストとHTTPレスポンスの情報(ヘッダーとボディ全体を含む)を記録する、新しい組み込みミドルウェア
- HTTP logging は以下のログを提供する
- HTTP リクエスト情報
- 共通のプロパティ
- ヘッダー
- ボディ
- HTTP レスポンス情報
新しいプロジェクトのデフォルトの起動プロファイルにKestrelを使用(.NET 6 Preview 4)
公式情報:
Use Kestrel for the default launch profile in new projects
関連記事:
hiro128.hatenablog.jp
- IConnectionSocketFeature (現在のリクエストに関連付けられている Socket へのアクセスを可能にする)(.NET 6 Preview 4)
- SPA テンプレートの改善(主に起動プロセス)(.NET 6 Preview 4)
- .NET Hot Reload の更新(.NET 6 Preview 4)
- @typeparam ディレクティブを使用した Razorのジェネリック型制約(.NET 6 Preview 4)
- Blazor の Error Boundary サポート(.NET 6 Preview 4)
- Blazor WebAssembly AOT コンパイル(.NET 6 Preview 4)
- .NET MAUI Blazor アプリ(.NET 6 Preview 4)
- その他パフォーマンス改善(.NET 6 Preview 4)
- 属性なしの Minimal API へのサービス注入(.NET 6 Preview 6)