.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

a

プレビュー公開だが、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 がどれだけ処理速度向上したのか/どうやって実現されているのか

正規表現検索の BackTrack オプションの追加

一般的なシナリオならバックトラックを無効化して圧倒的処理性能を向上

.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 カメラに映った手のモデルを認識する

ライブデモはこちら

a

ソースコードはこちら

マルチスレッドの試験実装が利用可能に

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

Playwright を使って E2E テストを実装する

安定している

速い

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

次点