先日.NETを使用したgRPC-Webの実験的サポートが発表されたばかりですが、今日はBlazor WebAssembly Ver 3.2.0 Preview1がリリースされたようです。
それに伴いdevblogsが更新されてました。
なお、GitHubのRepositoryとBranchはこちらです。
変更点
簡単に言うと下記3つの変更が入っています。
- StartUpの簡略化(破壊的変更)
- DLL Sizeをダイエット
- SignalRに対応
詳しくはdevblogsを参照。
以下、実際のTemplateの内容を見てみます。
Templateの差分
左が旧バージョン, 右が新バージョンです。
Startup.cs
が消えてますね。
ファイル内の変更差分は以下の通りです。
Program.cs
旧バージョン
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IWebAssemblyHostBuilder CreateHostBuilder(string[] args) => BlazorWebAssemblyHost.CreateDefaultBuilder() .UseBlazorStartup<Startup>(); }
新バージョン
public class Program { public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add<App>("app"); await builder.Build().RunAsync(); } }
旧バージョンのStartup.cs
で行っていたDIやComponentの登録が引っ越してきた感じですね。
※WebAssemblyHostBuilder.CreateDefault
のコードはこちら
他のGeneric HostのようにRunAsync
が追加されたのも地味に良いですね。
今後DIやComponentの登録はこんな感じにやるっぽいです。
※devblogsから引用
public class Program { public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.Services.AddSingleton<WeatherService>(); builder.RootComponents.Add<App>("app"); var host = builder.Build(); var weatherService = host.Services.GetRequiredService<WeatherService>(host.Configuration["WeatherServiceUrl"]); await weatherService.InitializeWeatherAsync(); await host.RunAsync(); } }
Build Sizeの比較
新,旧テンプレートに対して以下のコマンドを実行し、生成されたPublishフォルダのサイズを確認しました。
dotnet new blazorwasm dotnet publish -c Release
結果は以下の通りです。
旧Blazor WebAssembly
新Blazor WebAssembly
…誤差の範囲ですね。
SignalRの対応
割愛します。
余談 Preview2について
3.2.0 Preview1が出たばかりですが、Preview2の作業アイテムを覗いてみると、結構気になるアイテムが多かったりします。
一部ピックアップすると...
- PWA Templateの追加
- Linux ChromeでのDebugg対応
- Standalone dev serverでHTTPSがデフォルトになる
- Visual StudioからのDebugサポートを強化
- VSCodeでBlazor WASM projectを開いた際にDebugg COnfigurationの自動追加
- Visual StudioからDebugするときにHTTPSだと接続できない不具合の修正
- Blazor WebAssembly packageのRename
Debug機能の強化に力を入れているようですね。
Standalone dev server
って--hosted
オプション付けたときのServerプロジェクトのことかな?
おわり
Preview2の方が気になる...。