.NET Conf Recap - .NET Web 開発者向け推しセッションを一挙紹介
Keynote^
とにかく処理速度が向上した
Minimal API
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
ローカルで開発中の Web アプリを、インターネットに一時的に公開できる
Ubuntu 対応の強化
Canonical との共同体制強化
コンテナサイズの縮小化
Ubuntu 上での apt install dotnet7 で .NET 7 SDK をインストールできる
Container 対応強化
Docker Desktop 不要で、"dotnet publish ..." で Docker コンテナに発行できる
Open Telemetry と Azure Monitor の連携
State of ASP.NET Core - Daniel Roth
Minimal API 強化
Keynote とほぼ重複
Blazor
MAUI Blazor Hybrid
WinUI3 アプリ、Android アプリの UI を Blazor で実装
Custom Elements が GA
Blazor で WebComponents を実装
ブラウザネイティブのように振る舞える HTML タグを、Blazor で実装できるイメージ
他のフレームワークとの連携・統合が可能
それら他のフレームワークからは、ブラウザネイティブな HTML 要素と同じに扱えるので。
What's new for Blazor in .NET 7 - Steve Sanderson
QuickGrid
プレビュー公開だが、Steve Sanderson 氏によるハイパフォーマンスな Grid コンポーネントの参照実装
データバインディングの強化
@bind:after, @bind:get. @bind:set が使えるようになった
ところが、なんと、.NET 7 RTM で壊れたっぽい
NavigationLock コンポーネント
編集中に別ページに遷移する前にプロンプトを出せるようになった
Custom Elements
WordPress 上に Blazor WebAssembly で実装したコンポーネントを掲載
What's New in C# 11 - Mads Torgersen, Dustin Campbell
interface の静的メンバー
Factory パターンの実装がより簡素にできそう
T.Parse パターンの実装がより簡素にできそう
required & init プロパティ
Blazor のコードビハインドでプロパティインジェクションを受け取るときに、null! などで初期化しなくて済む!
Performance Improvements in .NET 7 - Stephen Toub
.NET 7 がどれだけ処理速度向上したのか/どうやって実現されているのか
一般的なシナリオならバックトラックを無効化して圧倒的処理性能を向上
.NET ❤️’s WebAssembly in .NET 7 - Daniel Roth
Blazor WebAssembly
デバッガの改善
"自分のコードだけ表示 (Just My Code)" が改善
AOT
処理速度向上
WebAssembly の Exception Handling に対応
新しい JavaScript 相互運用機能
[JSImport] および [JSExport] 属性
Blazor Wasm からの利用例 - Hand.js を使って、Web カメラに映った手のモデルを認識する
ライブデモはこちら
ソースコードはこちら
マルチスレッドの試験実装が利用可能に
Build an Audio Browser app with Blazor - Steve Sanderson
ブラウザの File System API を利用した、オーディオファイル再生アプリを Blazor WebAssembly を使って構築していくデモンストレーション
ここでも QuickGrid 使用
Blazor は SVG もサポート
しかし処理が重い...
仮想化スクロールと AOT で解決!
Testing Blazor Applications with Playwright - Debbie O'Brien, Max Schmitt
安定している
速い
plyawright.ps1 codegen を使うことで、人の手によるブラウザの操作を "レコーディング" し、Playwright を使った C# プログラムコードを生成できる
テスト対象のブラウザインスタンスは、ユーザーがインストールしたものではなく、Playwright が独自にインストールしたものを使う
AさんのPCでは動いたのに、BさんのPCに入っているブラウザはバージョンが合わなくて動かない、とかいうトラブルから解放される
但し、若干とはいえディスク容量は食う
Modernize your WPF and Windows Forms application with Blazor - Michele Aponte
Blazor は MAUI 抜きでも、Windows Forms あるいは WPF アプリ内に貼り付けて使用できる
Blazor コンポーネント内の C# コードも CPU ネイティブで実行される (WebView 内の JavaScript/WebAssembky で動くわけではない)
開発中は、WebView (Chromium ベース) の開発者ツールウィンドウも利用できるらしい
CSS Techniques for Blazor Developers - Ed Charbeneau
目新しい話ではないが、CSS 実装を基本から解説
SaSS (ScSS) を使う
Blazor の "CSS の分離" を使う
どうやって実現されているのか、その仕組みの解説
"CSS スコープ" の制御
Slaying Zombie ‘No Repro’ Crashes with Infer# - Matthew Jin, Xin Shi, Xiaoyu Liu, Jason Shaver
プログラムを静的解析して、潜在的なバグの可能性を報告してくれるツール "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