В чем разница между ASP.NET Core Hosted и Server-Blazor? - PullRequest
0 голосов
/ 25 сентября 2019

Я все еще пытаюсь понять разницу между ASP.NET Core Hosted и На стороне сервера Blazor.Я знаю тот же вопрос уже существует , но это не удовлетворяет.На самом деле я нигде не мог найти удовлетворительный ответ - ответы были более или менее одинаковыми.

Если опция hosted использует сервер (IIS, Kestrel), то почему на стороне сервера ?Заблуждение ... Жаль, что официальная документация тоже не пролила свет ...

ОБНОВЛЕНИЕ

Путаница связана с тем, что у нас есть ТРИ варианта для создания приложения Blazor.После выполнения dotnew new --list я получаю:

  1. dotnet new blazorserver (приложение Blazor Server)

  2. dotnet blazorwasm (приложение Blazor WebAssembly)

Однако есть и третий вариант:

dotnet blazorwasm --hosted (или dotnet blazor --hosted)

Это то же самое, что и флажок в Visual Studio при создании приложения:

IMG1

документация говорит:

у вас есть возможность настроить приложение для использования серверной части ASP.NET Core, установив флажок в ASP.NET Core на хосте

Но не было дано никакого объяснения, что это значит ...

1 Ответ

2 голосов
/ 25 сентября 2019

Это две модели хостинга: на сервере и на клиенте.

Разница в том, размещено ли приложение на сервере или на клиенте.Хостинг сервера означает, что логика вашего приложения работает на сервере (вы можете думать, что она похожа на веб-форму), вы нажимаете кнопку, вызов «Ajax» отправляет запрос, сервер получает запрос и отправляет обратно обновленную информацию.стр.Однако здесь он использует SignalR, а не Ajax, который является низкоуровневым соединением сокетов (эффективное чтение).И вместо обновления всей страницы обновляются только соответствующие части (таким образом, это одностраничное приложение).

С другой стороны, клиентский хостинг означает, что ваша логика работает в браузере.Думайте об этом, как будто ваша логика C # преобразуется в JS, и она встроена в страницу.Так что логика работает в браузере.Это возможно после введения WebAssembly, о котором вы, возможно, захотите прочитать.

Допустим, вы хотите создать приложение калькулятора.В этом случае приложение, размещенное на сервере, должно будет связаться с сервером, чтобы рассчитать и получить результат для каждого вычисления, в то время как размещенное на нем клиент не нуждается, и рассчитать результат в браузере.

Вы можете спросить, почему мы имеемдва варианта.Причина в том, что поддержка WebAssembly (на которую опирается размещаемое клиентом приложение) во многих браузерах либо неполна, либо не существует, а производительность также сильно различается.

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

Обновление:

Я вижу, куда вы идете сейчас.Путаница связана с тем, что при использовании Blazor, размещенного на клиенте, у вас есть опция --hosted.Этот параметр означает, что Blazor должен включать среду выполнения ASP.NET Core.

Почему этот параметр?Потому что вы можете написать автономное приложение (например, приложение калькулятора), которое не требует какого-либо подключения к внешним службам, что делает ASP.NET Core неактуальным.Однако вам может потребоваться написать онлайн-приложение, которое обращается к онлайн-базе данных, внешним API-интерфейсам, выполняет проверку и т. Д. Для таких приложений вам потребуется стек ASP.NET Core для поддержки вашего приложения.

Проверкаэтот FAQ: https://github.com/aspnet/Blazor/wiki/FAQ#q-can-i-use-blazor-with-aspnet-core-on-the-server

...