.NET Conf2023とともに.NET 8もリリースが予定されています。
.NET 8のなかでもWebアプリを構築するためのフレームワークであるASP.NET Core 8.0の中の注目の新機能についてピックアップしてみたいと思います。
もちろん、これ以外にも多くの新機能が実装されていたりパフォーマンス面でも大きく向上していますので積極的なアップグレードを検討していきたいです。
Blazorはこれまで、サーバー側でアプリケーションを実行しその結果をクライアント側のブラウザーにDOM操作でレンダリングするBlazor Server
クライアント側のブラウザーでWebAssemblyの形で.NETアプリケーションを実行するBlazor WebAssemblyがありました。
.NET8ではコンポーネントレベルまたはページレベルでコンテンツをレンダリングするフルスタックWeb UIフレームワークとなっており次のモードが備わっています。
この、フルスタックWeb UIの実装に伴い、新しいBlazor Webアプリテンプレートも実装されています。
また、引き続きBlazor ServerおよびBlazor WebAssemblyのテンプレートもあります。
しかしながら、Blazor WebAssembly ASP.NET Core HostedのテンプレートはBlazor Web Appsのテンプレートに統合する形で削除されているようです。
Blazorで静的サーバーレンダリングを使うときにコンテンツの更新をストリーミングできるようになりました。
これは、一部のコンテンツが非同期タスクで実行されるコンテンツであった場合、これまではこの非同期タスクが完了するまでページ全体のレンダリングを開始できませんでした。
ストリーミングレンダリングではまず、プレイスホルダーを使ってページ全体をレンダリングして非同期タスクが完了した段階で更新されたコンテンツが同じ応答接続でクライアントに送信されてDOMに適用されます。
この方法の利点は、ページ全体のレイアウトは可能な限り素早く更新されて非同期タスクつまりAPIとかデータベース接続によって得られるコンテンツの準備が整った段階でページが更新される点です。
.NET 8ではキー付きサービスの登録が可能になりました。
Blazorでは[Inject]属性を使ったキー付きサービスの挿入がサポートされるようになりました。
Blazor QuickGridが.NET 8 Blazorの一部になりました。
これによってデータを表形式で表示するためのグリッドコンポーネントがBlazorに備わりました。
並び替え、フィルター処理、ページング、仮想化などの機能が実装されています。
.NET ネイティブAOTのサポートが追加されました。
ネイティブAOTは現在、gRPC、minimal API、workerサービスアプリでサポートされています。
Angular、React、Vueといったアプリのテンプレートが用意されるようになりました。
バックエンドにはASP.NET Coreプロジェクトを使用します。