原文リンク(2023-06-19)
最新のリリースである.NET 8 Preview 5は、ASP.NET Coreに重要な追加機能をもたらす。ASP.NET Coreのデバッグ エクスペリエンスの向上、サーバーとミドルウェアに関する変更、Blazorの新機能の導入と改善、APIオーサリング機能の強化、SignalRのシームレスな再接続機能、認証と承認の改善と変更などが注目すべき強化点である。
生産性に関しては、ASP.NET Coreのデバッグ エクスペリエンスを強化するために注目すべき進歩がなされた。具体的には、Visual Studioのデバッガーで、HttpContext、HttpRequest、HttpResponse、ClaimsPrincipalなどの型に関連する重要な情報の取得を容易にするデバッグカスタマイズ属性の導入により、開発者は恩恵を受ける。
最新の.NET 8プレビュー5では、開発者はSignalRの「シームレス再接続」の初期サポートを体験できる。この新機能は、ネットワークスイッチやトンネル通過など、一時的なネットワークの中断に直面したクライアントのダウンタイムを最小化することを目的としている。サーバー側とクライアント側の両方でデータを一時的にバッファリングし、メッセージを確認することで、よりスムーズなユーザーエクスペリエンスを保証する。現在、このサポートはWebSocketを使用する.NETクライアントに限定されており、設定オプションもまだ用意されていない。開発者は、この機能にオプトインし、HubConnectionBuilderの options.UseAcks
の周りを微調整することができる。今後のプレビューでは、サーバーサイドの設定、カスタマイズ可能なバッファリング設定、タイムアウト制限、他のトランスポートやクライアントの拡張サポートが導入される予定である。
Blazorはまた、最新のリリースである.NET 8 Preview 5でかなりの数の更新を受けている。コマンドラインとVisual Studio内で利用できる新しいBlazor Web Appテンプレート、Blazor WebAssemblyアプリが公開されているときのデフォルトパッケージ形式であるwebcilなどの更新、Blazor WebAssemblyに関して、Content Security Policy (CSP) を指定しながらunsafe-eval
が有効にされているという要件ももはや存在しなくなった。
また、Blazor Routerコンポーネントがエンドポイントルーティングと統合され、サーバーサイドとクライアントサイドの両方のルーティングを処理するようになった。この統合により、サーバーサイド・レンダリングとクライアントサイド・レンダリングのどちらを採用しても、コンポーネントへの一貫したルーティングが可能になった。新しいBlazor Web Appテンプレートには、天気予報データの表示にエンドポイントルーティングとストリーミングレンダリングを利用したIndex.razor
やShowData.razor
などのサンプルページが含まれており、将来の.NET 8プレビューでは、より充実したナビゲーションサポートが期待できる。
Blazor Serverは、個々のコンポーネントに対してインタラクティブ性を有効にする機能を導入している。新しい[RenderModeServer
]属性により、開発者はAddServerComponents拡張メソッドを利用して、特定のコンポーネントに対してインタラクティブ性を有効にできる。この強化により、Blazor Serverのレンダリングモードでインタラクティブなアプリケーションを構築する際に、より柔軟でコントロールしやすくなる。
オリジナルのリリースブログのコメント欄には、開発チームと多くの質問や議論が交わされ、大きな盛り上がりを見せている。開発者は、コメント欄でさらなる情報や洞察を得ることが推奨される。
ジェネリック属性は、C# 11で導入され、現在、APIオーサリングのアップデートに関して、ジェネリック属性のサポートが追加され、これまでSystem.Type
パラメータに依存していた属性に代わる、よりクリーンな選択肢を提供している。ジェネリック属性は、以下の属性で利用できるようになった。ProducesResponseType、Produces、MiddlewareFilter、ModelBinder、ModelMetadataType、ServiceFilter、およびTypeFilter。
ASP.NET Core ReactおよびAngularプロジェクト・テンプレートでは、Duende IdentityServerへの依存が削除されたため、認証と認可にもいくつかの変更が見られる。代わりに、これらのテンプレートは、デフォルトのASP.NET Core Identity UIとCookie認証を利用して、個々のユーザーアカウントの認証を処理するようになった。また、このプレビューでは、AddAuthorizationBuilder APIを使用して、より"terser"な構文を採用しやすくするために、新しいRoslynアナライザが導入されている。
その他の注目すべき変更点としては、サーバーとミドルウェアの領域で、IHttpSysRequestTimingFeature
インターフェイスの導入により、HTTP.sysサーバーを使用する際に、リクエスト処理中のタイムスタンプデータの詳細情報を得る。また、ITlsHandshakeFeatureインターフェイスでは、SNI(Server Name Indication)ホスト名情報が公開されるようになった。IExceptionHandler
インターフェイスが追加され、開発者に既知の例外を集中的に処理するコールバック機構を提供するために、例外ハンドラミドルウェアによってサービスを解決して呼び出せる。
さらに、Native AOTについては、コンパイル時に生成される最小限のAPIを強化した。AsParameters属性で装飾されたパラメータのサポートや、リクエストとレスポンスタイプのメタデータの自動推論などの改良が施されている。
開発者は、ぜひ公式GitHubプロジェクトリポジトリにアクセスしてフィードバックを残し、.NET 8のASP.NET Coreの進捗をチェックしてみてほしい。