Блазор
Оригинальный автор(ы) | Майкрософт |
---|---|
Разработчик(и) | Фонд .NET |
Первоначальный выпуск | 2018 |
Репозиторий | github |
Операционная система | Linux , MacOS , Windows |
Входит в комплект | Ядро ASP.NET |
Тип | Веб-фреймворк |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | дотнет |
Blazor — это с открытым исходным кодом бесплатная веб-платформа , которая позволяет разработчикам создавать пользовательские веб-интерфейсы (UI) на основе компонентов с использованием C# и HTML . [1] [2] [3] [4] [5] Он разрабатывается Microsoft как часть платформы веб-приложений ASP.NET Core .
Blazor можно использовать для разработки одностраничных , мобильных или серверных приложений с использованием технологий .NET.
История
[ редактировать ]В 2017 году на NDC в Осло Стив Сандерсон, инженер-программист Microsoft, представил [6] экспериментальная среда клиентских веб-приложений для .NET , которую он назвал «Blazor». Демонстрация включала интерактивное приложение, работающее в браузере с использованием WebAssembly , и элементарный опыт разработки в Visual Studio. Сандерсон продемонстрировал, как создавать интерактивные компоненты с использованием синтаксиса C# и Razor . Затем приложение было скомпилировано в сборки .NET, которые работали в облегченной сторонней среде выполнения .NET с открытым исходным кодом, называемой DotNetAnywhere, которая была скомпилирована в WebAssembly.
Название «Blazor», как объяснил Стив Сандерсон, представляет собой сочетание слов «Браузер» и «Бритва». (из Razor используемого синтаксиса )
Blazor был признан Microsoft официальным проектом с открытым исходным кодом, а в 2018 году Blazor Server был выпущен для общественности как часть .NET Core 3.1. Он позволил интерактивному веб-приложению, управляемому сервером, обновлять клиентский браузер через WebSockets . Вскоре после этого был выпущен Blazor WebAssembly. В отличие от прототипа, он использовал среду выполнения Mono .NET в WebAssembly. Это та же среда выполнения, которая используется для разработки мобильных приложений с помощью .NET MAUI (ранее Xamarin ).
Исходный код Blazor сначала находился в собственном репозитории на GitHub, пока не был объединен с монорепозиторием ASP.NET Core . С тех пор разработка ведется оттуда.
С выпуском .NET 5 Blazor прекратил работу с Internet Explorer и устаревшей версией Microsoft Edge . [7]
В 2023 году с выходом .NET 8 серверный Blazor претерпел некоторые фундаментальные изменения. [8] для включения страниц, отображаемых на стороне сервера (SSR), которые по сути не являются интерактивными, что позволяет использовать Blazor в качестве альтернативы MVC Razor Pages . Благодаря этому изменению разработчики могут указать для каждого компонента (или страницы), должен ли он быть интерактивным и должен ли он запускаться на сервере или в браузере с помощью WebAssembly. Они называются интерактивными «режимами рендеринга».
Компоненты
[ редактировать ]Компоненты формально называются компонентами Razor .
Компонент Razor состоит в основном из HTML, смешанного с синтаксисом шаблонов Razor, что позволяет встроенному использованию C# влиять на рендеринг.
Модель компонента Blazor гарантирует, что отображаемая разметка обновляется при изменении состояния компонента, обычно в ответ на действия пользователя.
Хотя и разметку, и код C# можно разместить в одном .razor
файл, также возможно иметь отдельный файл кода программной части с разделяемым классом.
Компоненты компилируются в классы .NET. Разметка компонента в формате HTML и Razor преобразуется в код, который создает дерево рендеринга, которое затем управляет фактическим рендерингом.
Пример
[ редактировать ]В следующем примере показано, как реализовать простой счетчик, который можно увеличить нажатием кнопки:
<h1>Counter</h1>
<p>Count: @count</p>
<button @onclick="Increment">Increment</button>
@code
{
private int count = 0;
private void Increment()
{
if(count == 20) count = 0;
else count++;
}
}
Модели хостинга
[ редактировать ]Приложения Blazor можно размещать разными способами. Это модели хостинга для .NET 8.
Веб-приложение Blazor (сервер)
[ редактировать ]Размещаемое на сервере приложение Blazor как часть приложения ASP.NET Core.
Статический рендеринг на стороне сервера (SSR)
[ редактировать ]По умолчанию компоненты отображаются сервером как статический HTML без какой-либо интерактивности. Интерактивность можно включить для каждого компонента, установив режим рендеринга.
Это эквивалентно тому, как отображаются представления MVC и страницы Razor.
Режимы рендеринга
[ редактировать ]Источник: [9]
В .NET 8 Blazor представил концепцию режимов рендеринга, которая определяет, являются ли компоненты Razor интерактивными и что управляет этой интерактивностью.
Режим рендеринга наследуется в иерархии компонентов от самого верхнего родительского компонента, для которого установлен режим рендеринга. Это не может быть переопределено дочерними компонентами, если его режим рендеринга не является статическим сервером по умолчанию.
- Статический сервер . Компонент отображается статически на сервере без интерактивности. Это значение по умолчанию.
- Интерактивный сервер — компонент работает на сервере в интерактивном режиме. Интерактивность управляется сервером, а изменения передаются клиенту через WebSocket с помощью SignalR .
- Интерактивная WebAssembly — компонент работает в интерактивном режиме в браузере с использованием WebAssembly.
- Интерактивный автоматический режим : при этом компонент первоначально загружается в режиме рендеринга интерактивного сервера во время загрузки пакета Blazor. При последующих посещениях на клиенте используется Interactive WebAssembly.
Предварительный рендеринг
[ редактировать ]Интерактивные компоненты предварительно визуализируются на сервере перед тем, как материализоваться на клиенте и начать интерактивность. Это поведение включено по умолчанию, но его можно отключить.
Улучшенная навигация
[ редактировать ]Эта функция делает навигацию на статическом сайте более плавной, как в одностраничном приложении (SPA).
При переходе от одной статической страницы к другой приложение перехватывает навигацию, получая только содержимое целевой страницы, а затем применяет только изменения к DOM . Таким образом, страница не мерцает, как это обычно происходит при полной перезагрузке при переходе на другую страницу.
Веб-сборка (автономная)
[ редактировать ]Это автономное интерактивное приложение WebAssembly, работающее в клиентском браузере.
При переходе к приложению в браузере пакет приложения загружается, затем загружается и выполняется в изолированной программной среде браузера.
Приложение WebAssembly также можно превратить в прогрессивное веб-приложение (PWA).
До .NET 8 существовал шаблон проекта, в котором приложение Blazor WebAssembly размещалось в приложении ASP.NET Core, содержащем веб-API. Это было удалено в пользу шаблона проекта веб-приложения Blazor, хотя функциональность осталась.
Гибридный
[ редактировать ]Позволяет приложениям Blazor запускаться в собственном приложении с помощью WebView. [10] Рендеринг осуществляется в процессе хостинга, без веб-сервера.
Гибридные приложения можно размещать в Windows Presentation Foundation или WinForms приложении .
Этот подход используется для создания собственных мобильных приложений с помощью Blazor с использованием .NET MAUI .
Сервер (устаревший)
[ редактировать ]Предполагаемое использование заключалось в том, чтобы включить интерактивные компоненты, управляемые сервером, с отправкой изменений клиенту с помощью WebSockets.
Компонент был отображен на странице MVC Razor.
Он также включил предварительную отрисовку компонентов WebAssembly.
Эта модель хостинга формально называлась «Blazor Server».
Он устарел в пользу веб-приложения Blazor.
См. также
[ редактировать ]- asm.js — предшественник WebAssembly, позволяющий использовать клиентские веб-приложения, написанные на C или C++.
- Google Native Client - устаревший предшественник Google браузера. WebAssembly, который позволяет запускать собственный код в веб-браузере независимо от операционной системы
Ссылки
[ редактировать ]- ^ Страл, Рик (31 июля 2018 г.). «Веб-сборка и Blazor: повторная сборка Интернета» . Блог Рика Страла . Самостоятельно опубликовано . Архивировано из оригинала 22 октября 2018 года.
- ^ Томассетти, Федерико (4 сентября 2018 г.). «Blazor: .NET в браузере» . tomassetti.me . Струмента. Архивировано из оригинала 22 октября 2018 года.
- ^ Джеймс, Майк (12 февраля 2018 г.). «Blazor .NET в браузере» . i-programmer.info . Самостоятельно опубликовано . Архивировано из оригинала 18 февраля 2018 г.
- ^ Миллер, Джонатан (сентябрь 2018 г.). «C# в браузере с Blazor» . Журнал MSDN . 33 (9). Архивировано из оригинала 22 октября 2018 года.
- ^ Рот, Дэниел (22 марта 2018 г.). «Начните создавать веб-приложения .NET, которые работают в браузере с помощью Blazor» . Блог ASP.NET . Майкрософт . Архивировано из оригинала 30 апреля 2019 г.
- ^ «Веб-приложения на самом деле не могут *этого*, не так ли? - Стив Сандерсон» . Ютуб . 10 июля 2017 г. Проверено 28 февраля 2024 г.
- ^ Рот, Дэниел (30 сентября 2020 г.). «Обновлена поддержка браузера Blazor для .NET 5» . репозиторий dotnet/aspnetcore . Microsoft — через GitHub.com .
- ^ «Основы ASP.NET Core Blazor» . 2024-12-02 . Проверено 28 февраля 2024 г.
- ^ «Режимы рендеринга ASP.NET Core Blazor» . 09.02.2024 . Проверено 26 марта 2024 г.
- ^ «Гибрид ASP.NET Core Blazor» . Проверено 14 ноября 2023 г.
Дальнейшее чтение
[ редактировать ]- Энгстрем, Джимми (2021). Веб-разработка с помощью Blazor: практическое руководство для разработчиков .NET по созданию интерактивных пользовательских интерфейсов с помощью C# . Пакт Паблишинг. ISBN 978-1800208728 .
- Химшут, Питер (2021). Microsoft Blazor: создание веб-приложений в .NET 6 и более поздних версиях . Апресс. ISBN 978-1484278444 .
- Райт, Той (2021). Blazor WebAssembly на примере: руководство на основе проектов по созданию веб-приложений с помощью .NET, Blazor WebAssembly и C# . Пакт Паблишинг. ISBN 978-1800567511 .
- Сэйнти, Крис (2022). Блазор в действии . Публикации Мэннинга. ISBN 978-1617298646 .
Внешние ссылки
[ редактировать ]- Официальный сайт
- ASP.NET Core на GitHub
- Blazor School — документация сообщества Blazor.
- Университет Блазор — документация Blazor из вторичного независимого источника.