カテゴリー 全て

によって Jun-ichi Sakamoto 2年前.

354

.NET Conf Recap - .NET Web 開発者向け推しセッションを一挙紹介

.NET Conf 2023では、Web開発者向けに多くの新機能と改善が紹介されました。特にBlazorとWebAssemblyの強化が注目され、新しいJavaScript相互運用機能やマルチスレッドの試験実装が発表されました。Blazorを使用することで、Windows FormsやWPFアプリ内にプラグインのように組み込むことが可能であり、MAUI Blazor Hybridを利用して異なるプラットフォームのアプリケーション開発が容易になります。

.NET Conf Recap - .NET Web 開発者向け推しセッションを一挙紹介

.NET Conf Recap - .NET Web 開発者向け推しセッションを一挙紹介

次点

Azure Static Web Apps with Blazor and .NET - Melissa Houghton
Backend API に Functions 以外が選べるようになった

SWA のポータル画面から、リンクするバックエンドAPIを上記から選べる

すると、バックエンドAPIに対する、SWA からの要求に対する認証も自動で構成される

ただし Preview?

Azure App Service

Azure Container Apps

Azure API Management

Static Web Apps CLI
.NET 7 on App Service - Byron Tardif, Gaurav Seth
az CLI

"> az webapp up"

Building a .NET SDK library with Open API and NSwag - Laura Rodriguez
Keynote および State of ASP.NET Core とかなり重複
Upgrading from .NET Framework to .NET 7 - Mike Rousos, Taylor Southwick, Olia Gavrysh
The Power of Polyglot Notebooks - Claudia Regio

Performance benefits of .NET 7 for Web Applications - Jérôme Laban

WebAssembly ネイティブにビルド済みの NuGet パッケージの例
SQLiteWasm
SkiaSharp
C# による実装を WebAssembly に AOT コンパイルし、それを NuGet パッケージ化して、他プロジェクトから再利用することも可能、とのこと
質問

回答は Yes, you can

.NET Configuration In Depth - Chris Ayers

特に目新しい話ではないが、.NET における IConfiguration について基本から解説
オプションの検証については時間切れ

Dynamically adding functionality to ASP.NET Core - Chris Klug

ビルド済みの ASP.NET Core アプリケーションについて、その実行直前に追加のプログラムを注入するための仕組みがある。その紹介。

Slaying Zombie ‘No Repro’ Crashes with Infer# - Matthew Jin, Xin Shi, Xiaoyu Liu, Jason Shaver

プログラムを静的解析して、潜在的なバグの可能性を報告してくれるツール "Infer" の .NET 版 "Infer#" の話
今日現在では Windows 単体では利用できず、WSL を必要とする

とはいえ、利用のための Visual Studio 拡張が用意されており、Visual Studio ユーザーならセットアップはほぼ自動なので、そのあたりをほとんど手を掛けずに始められる

CSS Techniques for Blazor Developers - Ed Charbeneau

目新しい話ではないが、CSS 実装を基本から解説
Blazor の "CSS の分離" を使う

どうやって実現されているのか、その仕組みの解説

"CSS スコープ" の制御

SaSS (ScSS) を使う

Modernize your WPF and Windows Forms application with Blazor - Michele Aponte

Blazor は MAUI 抜きでも、Windows Forms あるいは WPF アプリ内に貼り付けて使用できる
開発中は、WebView (Chromium ベース) の開発者ツールウィンドウも利用できるらしい
Blazor コンポーネント内の C# コードも CPU ネイティブで実行される (WebView 内の JavaScript/WebAssembky で動くわけではない)

Testing Blazor Applications with Playwright - Debbie O'Brien, Max Schmitt

Playwright を使って E2E テストを実装する
テスト対象のブラウザインスタンスは、ユーザーがインストールしたものではなく、Playwright が独自にインストールしたものを使う

但し、若干とはいえディスク容量は食う

AさんのPCでは動いたのに、BさんのPCに入っているブラウザはバージョンが合わなくて動かない、とかいうトラブルから解放される

plyawright.ps1 codegen を使うことで、人の手によるブラウザの操作を "レコーディング" し、Playwright を使った C# プログラムコードを生成できる
速い
安定している

Build an Audio Browser app with Blazor - Steve Sanderson

ブラウザの File System API を利用した、オーディオファイル再生アプリを Blazor WebAssembly を使って構築していくデモンストレーション
Blazor は SVG もサポート

オーディオ波形をグラフィカルに表示

しかし処理が重い...

仮想化スクロールと AOT で解決!

ここでも QuickGrid 使用

.NET ❤️’s WebAssembly in .NET 7 - Daniel Roth

マルチスレッドの試験実装が利用可能に
新しい JavaScript 相互運用機能
Blazor Wasm からの利用例 - Hand.js を使って、Web カメラに映った手のモデルを認識する

ソースコードはこちら

ライブデモはこちら

[JSImport] および [JSExport] 属性
Blazor WebAssembly
AOT

処理速度向上

WebAssembly の Exception Handling に対応

デバッガの改善

"自分のコードだけ表示 (Just My Code)" が改善

Performance Improvements in .NET 7 - Stephen Toub

.NET 7 がどれだけ処理速度向上したのか/どうやって実現されているのか
正規表現検索の BackTrack オプションの追加

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

What's New in C# 11 - Mads Torgersen, Dustin Campbell

required & init プロパティ
Blazor のコードビハインドでプロパティインジェクションを受け取るときに、null! などで初期化しなくて済む!
interface の静的メンバー
T.Parse パターンの実装がより簡素にできそう
Factory パターンの実装がより簡素にできそう

What's new for Blazor in .NET 7 - Steve Sanderson

Custom Elements
WordPress 上に Blazor WebAssembly で実装したコンポーネントを掲載
NavigationLock コンポーネント
編集中に別ページに遷移する前にプロンプトを出せるようになった
データバインディングの強化
@bind:after, @bind:get. @bind:set が使えるようになった

ところが、なんと、.NET 7 RTM で壊れたっぽい

QuickGrid
プレビュー公開だが、Steve Sanderson 氏によるハイパフォーマンスな Grid コンポーネントの参照実装

State of ASP.NET Core - Daniel Roth

Blazor
Custom Elements が GA

Blazor で WebComponents を実装

ブラウザネイティブのように振る舞える HTML タグを、Blazor で実装できるイメージ

他のフレームワークとの連携・統合が可能

それら他のフレームワークからは、ブラウザネイティブな HTML 要素と同じに扱えるので。

MAUI Blazor Hybrid

WinUI3 アプリ、Android アプリの UI を Blazor で実装

Minimal API 強化
Keynote とほぼ重複

Keynote

Open Telemetry と Azure Monitor の連携
Container 対応強化
Docker Desktop 不要で、"dotnet publish ..." で Docker コンテナに発行できる
Ubuntu 対応の強化
Ubuntu 上での apt install dotnet7 で .NET 7 SDK をインストールできる
コンテナサイズの縮小化
Canonical との共同体制強化
Visual Studio
dev tunnel

ローカルで開発中の Web アプリを、インターネットに一時的に公開できる

簡素化された認証機能の実装
Swagger UI も認可が必要な API を認識

"dotnet user-jwt create" コマンドで、開発中の動作確認時に使えるトークンを生成できる

Barrer トークンを指定して認証する UI も搭載

Minimal API
強く型付けされた API 戻り値

Results, NotFound>

Swagger UI で、その API が返しうる HTTP Status を明示できる

MapGroup で関連する API のまとまりの実装を簡素化
とにかく処理速度が向上した