Краткое вступление в программы Blazor на стороне сервера

1656562459 kratkoe vstuplenie v programmy blazor na storone servera

Введение

Мы все знаем, что фреймворк Blazor – это веб-фреймворк на стороне клиента. Но можно ли запустить программу Blazor отдельно от потока пользовательского интерфейса? Последняя версия 0.5.0 Blazor дает нам упругость, чтоб запустить его в отдельном процессе от процесса визуализации. В этой статье мы рассмотрим серверный Blazor.

Что такое серверный Blazor?

Поскольку Blazor является веб-фреймворком на стороне клиента, логика компонентов и взаимодействие DOM происходят в одном процессе.

SE8WnGMv3amme5Z6z5vClAJiTPXhzNUq1h5E

Однако дизайн фреймворка Blazor достаточно умен и гибок, чтобы запустить программу отдельно от процесса визуализации. Например, мы можем запустить Blazor в рабочем веб-потоке отдельно от потока пользовательского интерфейса.

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

0o-zbwSglIvnNx8gUvHA37oJWSf5OMj1kCkt

Начиная с Blazor 0.5.0 мы можем запускать приложение Blazor на сервере. Это означает, что мы можем запускать компонент Blazor на стороне сервера в .NET Core, в то время как другие функции, такие как пользовательский интерфейс, обновляются. Обработка событий и вызовы взаимодействия JavaScript обрабатываются соединением SignalR по сети. Часть .NET работает под CoreCLR вместо WebAssembly, что предоставляет нам доступ к полной экосистеме .NET, отладке, компиляции JIT и т.д. Это добавляет расширяемость к фреймворку Blazor, поскольку сервер Blazor использует ту же модель компонентов, что и клиентская программа Blazor.

eWgI2AVm7-gGqD0B9fxWq5QlQ0wHiB06glT4

Давайте создадим наше первое серверное приложение Blazor и исследуем его, чтобы лучше понять эту новую функцию.

Предпосылки

  • Отсюда установите пакет SDK .NET Core 2.1 или более поздней версии
  • Установите Visual Studio 2017 версии 15.7 или более новой отсюда
  • Установите расширение ASP.NET Core Blazor Language Services отсюда

Версии Visual Studio 2017 ниже версии 15.7 не поддерживают фреймворк Blazor.

Создание серверной программы Blazor

Откройте Visual Studio и выберите Файл >> Новый >> Проект.

После выбора проекта откроется диалоговое окно Новый проект. Выберите .NET Core в меню Visual C# на левой панели. Затем выберите ASP.NET Core Web Application из доступных типов проектов. Назовите проект ServerSideBlazor и нажмите OK.

PVahH9QmYcbo2PgExBUIPugyXrOr-qxbCQho

После нажатия ОК откроется новое диалоговое окно с просьбой выбрать шаблон проекта. Вы можете увидеть два нижних меню в верхнем левом углу окна шаблона. Выберите «.NET Core» и «ASP.NET Core 2.1» в раскрывающемся меню. Затем выберите шаблон Blazor (на стороне сервера в ASP.NET Core) и нажмите OK.

apVoM-bwspujj5zLwGZ1bNJdWNelcHQSdXEd

Это создаст наше серверное решение Blazor. Вы можете увидеть структуру папок в Solution Explorer, как показано на рисунке ниже:

cuCSqzS3yfGhGWLsjFrd0xsE0ijhORI2zvxi

Решение имеет два файла проекта:

  1. ServerSideBlazor.App: это наш основной проект ASP.NET.
  2. ServerSideBlazor.Server: здесь содержится наше серверное приложение Blazor.

Вся наша логика компонент содержится в приложении Blazor на стороне сервера. Однако эта логика не выполняется на стороне клиента в браузере — она выполняется на стороне сервера в хост-программе ASP.NET Core. Это приложение использует blazor.server.js для загрузки вместо blazor.webassembly.js, используемого обычными приложениями Blazor. Это позволяет программе устанавливать соединение SignalR через сеть для обработки обновлений пользовательского интерфейса и пересылки событий. The blazor.server.js находится в папке «ServerSideBlazor.App\bin\Debug\netstandard2.0\dist\_framework», а тег