本文へスキップ
BecomeCoder

Blazorコース · 第7章 レンダリングモードと公開 · レッスン24

レンダリングモード ― Server / WebAssembly / Auto

ローカル実施

導入

第1章で触れたホスティングモデルは、.NET 8以降のBlazor Web Appで「レンダリングモード」として1つのアプリの中に統合されました。ページやコンポーネントごとに「どこで描くか・対話できるか」を選べます。

説明

主なモードは次の4つです。

flowchart TB
    SSR["静的SSR<br/>サーバーでHTMLを描くだけ(対話なし・最速)"]
    SRV["InteractiveServer<br/>サーバーで対話(SignalR接続)"]
    WASM["InteractiveWebAssembly<br/>ブラウザ内で対話(C#がWASMで動く)"]
    AUTO["InteractiveAuto<br/>初回はServer、DL後はWASMへ切替"]
  • 静的SSR: サーバーでHTMLを生成して返すだけ。ボタンなどの対話はなし。表示が最速でSEOに強い
  • InteractiveServer: 対話をサーバー側で処理し、画面差分を常時接続(SignalR)で送る。初期DLが軽い
  • InteractiveWebAssembly: C#がブラウザ内(WebAssembly)で動く。オフラインや低遅延に強いが初回DLは大きめ
  • InteractiveAuto: 初回はServerで素早く、WASMのDL完了後はWASMに切り替える「いいとこ取り」

コンポーネントやページに@rendermodeで指定します。

@rendermode InteractiveServer

<button @onclick="() => count++">@count</button>
@code { private int count; }
  • 既定は静的SSR。対話が要る所だけ@rendermodeで対話モードにする(無駄な接続やDLを避ける)
  • ストリーミングレンダリング: 時間のかかるデータ取得中に、先に枠を出して後から中身を流し込める

まとめ

  • .NET 8のBlazor Web Appは、モードをコンポーネント単位で選べる
  • 静的SSR=最速・対話なし、Server=軽い接続対話、WebAssembly=ブラウザ内対話、Auto=両者の切替
  • 対話が必要な所だけ対話モードにするのがコツ

次回: 公開するページを守る、認証認可です。