1. ホーム
  2. c#

ASP.NET Core HostedとServer-Side Blazorの違いって、ホントは何?

2023-11-26 04:56:47

質問

の違いを理解するのにまだ苦労しています。 ASP.NET Core Hosted サーバーサイド Blazor。私は同じ質問を既に知っている は存在する というのは知っていますが、納得がいきません。実際、私は満足のいく答えをどこにも見つけることができませんでした - 答えは多かれ少なかれ同じでした。

もし が主催する オプションがサーバ (IIS、Kestrel) を使用する場合、なぜ サーバサイド ? 紛らわしい...。公式ドキュメントも光を当ててくれなかったのが残念です...。

アップデイト

Blazor アプリケーションを作成するために、3つのオプションがあることが混乱の原因です。実行後 dotnew new --list を得ました。

  1. dotnet new blazorserver (Blazorサーバーアプリ)

  2. dotnet blazorwasm (Blazor WebAssembly App)

しかし、第3の選択肢もあります。

  1. dotnet blazorwasm --hosted (または dotnet blazor --hosted )

Visual Studioでアプリケーションを作成する際のチェックボックスと同じです。

この ドキュメント にはこうあります。

を選択すると、ASP.NET Core バックエンドを使用するようにアプリを構成するオプションがあります。 バックエンドを使用するようにアプリを構成するオプションがあり、ASP.NET Core hosted チェックボックスを選択します。

しかし、何の説明もありませんでした......どういうことでしょうか?

どのように解決するのですか?

更新

私はあなたが今来ている場所を参照してください。この混乱は、あなたが --hosted というオプションがあることに起因しています。このオプションは、BlazorにASP.NET Coreランタイムを含ませることを意味します。

なぜこのオプションなのか?なぜなら、外部サービスとの接続を必要としないオフラインアプリ(電卓アプリなど)を書くことができ、ASP.NET Coreは無関係になるからです。しかし、オンラインDBや外部APIにアクセスし、検証などを行うオンラインアプリを書きたいと思うかもしれません。このようなアプリの場合、アプリをサポートするために ASP.NET Core スタックが必要になります。

この FAQ を確認してください。 https://github.com/aspnet/Blazor/wiki/FAQ#q-can-i-use-blazor-with-aspnet-core-on-the-server

オリジナルの回答

サーバーホスト型とクライアントホスト型の2つのホスティングモデルがあります。

違いは、アプリがサーバーでホストされるか、クライアントでホストされるかということです。サーバー ホスティングでは、アプリのロジックはサーバーで実行され (Web Forms と同じように考えることができます)、ユーザーがボタンをクリックすると、Ajax 呼び出しがリクエストを送信し、サーバーがそのリクエストを受信して、更新したページを送り返します。しかし、ここではAjaxではなく、低レベルのソケット通信であるSignalRを使用しています(効率的と書いてあります)。また、ページ全体を更新するのではなく、関連する部分のみを更新します(したがって、シングルページアプリケーションとなります)。

一方、クライアントホスティングは、あなたのロジックがブラウザ内で実行されることを意味します。C# のロジックが JS に変換され、ページに埋め込まれるようなものだと考えてください。つまり、ロジックはブラウザの中で実行されるわけです。これは、WebAssemblyの導入後に可能になったもので、これについてはこちらをご覧ください。

例えば、電卓アプリを作成したいとします。サーバー ホスト型アプリでは、サーバーと通信して計算し、各計算の結果を取得する必要がありますが、クライアント ホスト型ではその必要がなく、ブラウザで結果を計算します。

なぜ 2 つのオプションがあるのか、不思議に思うかもしれません。その理由は、(クライアント ホスト型アプリが依存する)WebAssembly のサポートが多くのブラウザーで不完全または存在せず、パフォーマンスにも大きな違いがあるからです。

https://caniuse.com/#feat=wasm