問題提起 §
.NET Maui Blazorアプリで抱え込んだ謎がある。
- Console.WriteLineでコンソールにデバッグメッセージを出せないのはなぜか
- リロードしてもプロセス空間がリセットされないのはなぜか
ページ切換がサクサクできることから、Blazor WebAssembly相当の機能が動いていると考えると謎である。
結論 §
Blazor Server相当の機能が動いている。
サクサク動くのは、Blazor Server相当の機能とWebブラウザ相当の機能が直結しているから。
論証 §
File.ReadAllTextでローカルファイルにアクセスできた。
(Blazor WebAssembly相当ならできないはずである)
リロードしてもプロセス空間がリセットされない理由 §
リロードしてリセットされるのはWebブラウザ相当の機能のWebAssembly実行環境のみで、サーバ側の環境はリセットされない。だから動作フローとしてはリロードされると最初から実行され直すが、staticなメンバーの値は一切リセットされていない。
感想 §
サクサクとローカルで動くのならBlazor Serverの方が自由度が高くていいよね、という単純な話。これだとBlazor Serverの2大ハンデ「複数ユーザーへの対処が面倒くさい」「通信のオーバーヘッドと複数ユーザーへのサービスで重くなりがち」が消えるので、実用性が高まる。ただし動作の細部が違うので、Blazor WebAssemblyとのRazorライブラリとの共用は要注意。