🐥note.

小鳥とMicrosoft <3 なエンジニアの技術Blog📚

Blazor WebAssembly Ver3.2.0 Preview1の変更点とPreview2のアイテムについて

先日.NETを使用したgRPC-Webの実験的サポートが発表されたばかりですが、今日はBlazor WebAssembly Ver 3.2.0 Preview1がリリースされたようです。

それに伴いdevblogsが更新されてました。

devblogs.microsoft.com

なお、GitHubのRepositoryとBranchはこちらです。

github.com

変更点

簡単に言うと下記3つの変更が入っています。

  • StartUpの簡略化(破壊的変更)
  • DLL Sizeをダイエット
  • SignalRに対応

詳しくはdevblogsを参照。

以下、実際のTemplateの内容を見てみます。

Templateの差分

左が旧バージョン, 右が新バージョンです。
Startup.csが消えてますね。

f:id:piyo_esq:20200129172511p:plain
バージョンアップ前後のBlazor WASMプロジェクトのファイル比較

ファイル内の変更差分は以下の通りです。

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

f:id:piyo_esq:20200129172601p:plain
旧バージョンのPublishファイルのサイズ

新Blazor WebAssembly

f:id:piyo_esq:20200129172630p:plain
新バージョンのPublishファイルのサイズ

…誤差の範囲ですね。

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の方が気になる...。