.NET Conf Recap - .NET Web 開発者向け推しセッションを一挙紹介
とにかく処理速度が向上した
MapGroup で関連する API のまとまりの実装を簡素化
強く型付けされた API 戻り値
Results<OK<T>, NotFound>
Swagger UI で、その API が返しうる HTTP Status を明示できる
Swagger UI も認可が必要な API を認識
Barrer トークンを指定して認証する UI も搭載
"dotnet user-jwt create" コマンドで、開発中の動作確認時に使えるトークンを生成できる
Visual Studio
dev tunnel
Canonical との共同体制強化
コンテナサイズの縮小化
Ubuntu 上での apt install dotnet7 で .NET 7 SDK をインストールできる
Docker Desktop 不要で、"dotnet publish ..." で Docker コンテナに発行できる
Open Telemetry と Azure Monitor の連携
Minimal API 強化
Keynote とほぼ重複
Blazor
WinUI3 アプリ、Android アプリの UI を Blazor で実装
Blazor で WebComponents を実装
ブラウザネイティブのように振る舞える HTML タグを、Blazor で実装できるイメージ
他のフレームワークとの連携・統合が可能
それら他のフレームワークからは、ブラウザネイティブな HTML 要素と同じに扱えるので。
プレビュー公開だが、Steve Sanderson 氏によるハイパフォーマンスな Grid コンポーネントの参照実装
データバインディングの強化
@bind:after, @bind:get. @bind:set が使えるようになった
NavigationLock コンポーネント
編集中に別ページに遷移する前にプロンプトを出せるようになった
Custom Elements
WordPress 上に Blazor WebAssembly で実装したコンポーネントを掲載
interface の静的メンバー
Factory パターンの実装がより簡素にできそう
T.Parse パターンの実装がより簡素にできそう
required & init プロパティ
Blazor のコードビハインドでプロパティインジェクションを受け取るときに、null! などで初期化しなくて済む!
.NET 7 がどれだけ処理速度向上したのか/どうやって実現されているのか
一般的なシナリオならバックトラックを無効化して圧倒的処理性能を向上
Blazor WebAssembly
デバッガの改善
"自分のコードだけ表示 (Just My Code)" が改善
AOT
処理速度向上
WebAssembly の Exception Handling に対応
[JSImport] および [JSExport] 属性
ライブデモはこちら
ブラウザの File System API を利用した、オーディオファイル再生アプリを Blazor WebAssembly を使って構築していくデモンストレーション
ここでも QuickGrid 使用
Blazor は SVG もサポート
しかし処理が重い...
仮想化スクロールと AOT で解決!
安定している
速い
plyawright.ps1 codegen を使うことで、人の手によるブラウザの操作を "レコーディング" し、Playwright を使った C# プログラムコードを生成できる
テスト対象のブラウザインスタンスは、ユーザーがインストールしたものではなく、Playwright が独自にインストールしたものを使う
AさんのPCでは動いたのに、BさんのPCに入っているブラウザはバージョンが合わなくて動かない、とかいうトラブルから解放される
但し、若干とはいえディスク容量は食う
Blazor は MAUI 抜きでも、Windows Forms あるいは WPF アプリ内に貼り付けて使用できる
Blazor コンポーネント内の C# コードも CPU ネイティブで実行される (WebView 内の JavaScript/WebAssembky で動くわけではない)
開発中は、WebView (Chromium ベース) の開発者ツールウィンドウも利用できるらしい
目新しい話ではないが、CSS 実装を基本から解説
SaSS (ScSS) を使う
Blazor の "CSS の分離" を使う
どうやって実現されているのか、その仕組みの解説
"CSS スコープ" の制御
プログラムを静的解析して、潜在的なバグの可能性を報告してくれるツール "Infer" の .NET 版 "Infer#" の話
今日現在では Windows 単体では利用できず、WSL を必要とする
とはいえ、利用のための Visual Studio 拡張が用意されており、Visual Studio ユーザーならセットアップはほぼ自動なので、そのあたりをほとんど手を掛けずに始められる
Dynamically adding functionality to ASP.NET Core - Chris Klug
ビルド済みの ASP.NET Core アプリケーションについて、その実行直前に追加のプログラムを注入するための仕組みがある。その紹介。
.NET Configuration In Depth - Chris Ayers
特に目新しい話ではないが、.NET における IConfiguration について基本から解説
Performance benefits of .NET 7 for Web Applications - Jérôme Laban
C# による実装を WebAssembly に AOT コンパイルし、それを NuGet パッケージ化して、他プロジェクトから再利用することも可能、とのこと
回答は Yes, you can
WebAssembly ネイティブにビルド済みの NuGet パッケージの例
SkiaSharp
SQLiteWasm