Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Это не последняя версия этой статьи. В текущей версии см. версию .NET 10 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущей версии см. версию .NET 10 этой статьи.
Добро пожаловать в Blazor!
Blazor — это .NET фронтенд-веб-фреймворк, который поддерживает как отрисовку на стороне сервера, так и интерактивность на стороне клиента в одной модели программирования:
Blazor— это платформа для создания интерактивного клиентского веб-интерфейса с .NET:
- Создавайте богатые интерактивные интерфейсы с помощью C#.
- совместное использование серверной и клиентской логик приложений, написанных с помощью .NET;
- Отобразите пользовательский интерфейс в виде HTML и CSS для широкой поддержки браузеров, включая мобильные.
- создание гибридных классических и мобильных приложений с помощью .NET и Blazor;
- Создавайте богатые интерактивные интерфейсы с помощью C#.
- совместное использование серверной и клиентской логик приложений, написанных с помощью .NET;
- Отобразите пользовательский интерфейс в виде HTML и CSS для широкой поддержки браузеров, включая мобильные.
Использование .NET для разработки веб-приложений на стороне клиента предоставляет следующие преимущества:
- Напишите код в C#, который может повысить производительность разработки и обслуживания приложений.
- возможность использовать существующую экосистему .NET с библиотеками .NET;
- высокая производительность, надежность и безопасность платформы .NET;
- Сохраняйте продуктивность в Windows, Linux или macOS с помощью среды разработки, такой как Visual Studio или Visual Studio Code. интеграция с современными платформами размещения, такими как Docker.
- создавайте приложения на основе распространенных языков, платформ и инструментов, которые отличаются стабильностью, широким набором функций и простотой в использовании.
Примечание.
Для быстрого ознакомительного руководства см. статью Blazor.
Компоненты
Blazor приложения основаны на компонентах. Компонентом Blazor называется любой элемент пользовательского интерфейса, например страница, диалоговое окно или форма ввода данных.
Компоненты являются классами C# .NET, встроенными в сборки .NET, которые:
- определяют гибкую логику визуализации пользовательского интерфейса;
- обрабатывать события пользователя.
- можно вкладывать друг в друга и использовать повторно;
- можно делиться и распространять в виде Razor или пакетов NuGet.
Класс компонента обычно записывается в виде страницы разметки Razor с расширением файла .razor. Компоненты в Blazor обычно называются компонентами Razor (или компонентами Blazor).
Razor — это синтаксис для объединения разметки HTML с кодом C#, предназначенный для повышения производительности разработчика.
Razorпозволяет переключаться между разметкой HTML и C# в одном файле с поддержкой программирования IntelliSense в Visual Studio.
Blazor использует естественные HTML-теги для композиции пользовательского интерфейса. Razor Следующая разметка демонстрирует компонент, который увеличивает счетчик, когда пользователь выбирает кнопку.
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
Компоненты преобразуются в хранящееся в памяти представление модели DOM для браузера, которое называется деревом отображения, позволяя гибко и эффективно обновлять пользовательский интерфейс.
Создайте полноценное веб-приложение с помощью Blazor
Blazor Web AppS предоставляет архитектуру на основе компонентов с отрисовкой на стороне сервера и полной интерактивностью на стороне клиента в одном решении, где можно переключаться между режимами отрисовки на стороне сервера и на стороне клиента и даже смешивать их на одной странице.
Blazor Web Apps могут быстро доставлять пользовательский интерфейс в браузер, отрисовывая HTML-содержимое на сервере в ответ на запросы. Страница загружается быстро, так как отрисовка пользовательского интерфейса выполняется быстро на сервере без необходимости скачать большой пакет JavaScript. Blazor также может дополнительно улучшить пользовательский опыт благодаря различным прогрессивным улучшениям для серверного рендеринга, таким как улучшенная навигация с отправкой форм и потоковая отрисовка асинхронно создаваемого содержимого.
Blazor поддерживает интерактивную отрисовку на стороне сервера (интерактивная служба SSR), где взаимодействие пользовательского интерфейса обрабатывается с сервера через подключение к браузеру в режиме реального времени. Интерактивная служба SSR обеспечивает широкий пользовательский интерфейс, например от клиентского приложения, но без необходимости создавать конечные точки API для доступа к ресурсам сервера. Содержимое интерактивных страниц предварительно отрисовывается, при этом содержимое изначально создается на сервере и передается клиенту без включения обработчиков событий для отрисованных компонентов управления. Сервер выводит HTML-интерфейс страницы как можно скорее в ответ на первоначальный запрос, что делает приложение более адаптивным к пользователям.
Blazor Web App поддерживают интерактивность с отрисовкой на стороне клиента (CSR), которая опирается на среду выполнения .NET, построенную на основе WebAssembly, которую можно скачать вместе с приложением. При запуске Blazor в WebAssembly код .NET может получить доступ к полной функциональности браузера и взаимодействия с JavaScript. Код .NET выполняется в песочнице безопасности браузера с защитой, которую песочница предоставляет от вредоносных действий на клиентском компьютере.
Blazor приложения могут полностью выполняться в WebAssembly в браузере без участия сервера. Для автономного Blazor WebAssembly приложения ресурсы развертываются как статические файлы на веб-сервере или службе, способных обслуживать статичное содержимое клиентам. После скачивания автономные Blazor WebAssembly приложения можно кэшировать и выполнять в автономном режиме как прогрессивное веб-приложение (PWA).
Создание собственного клиентского приложения с помощью Blazor Hybrid
Blazor Hybrid позволяет использовать Razor компоненты в собственном клиентском приложении с сочетанием нативных и веб-технологий для веб-, мобильных и классических платформ. Код выполняется нативно в процессе .NET и отображает веб-интерфейс для внедренного Web View элемента управления с помощью локального канала взаимодействия. WebAssembly не используется в гибридных приложениях. Гибридные приложения создаются с помощью .NET Multi-platform App UI (.NET MAUI), которая является кроссплатформенной платформой для создания собственных мобильных и классических приложений с помощью C# и XAML.
Поддержка Blazor Hybrid включает Windows Presentation Foundation (WPF) и Windows Forms для перехода приложений с более ранних технологий на .NET MAUI.
Blazor Server
Blazor Serverобеспечивает поддержку размещения Razor компонентов на сервере в приложении ASP.NET Core. Обновления пользовательского интерфейса обрабатываются через подключение SignalR.
Среда выполнения остается на сервере и обрабатывает следующие операции:
- выполнение кода приложения на языке C#;
- отправка событий пользовательского интерфейса из браузера на сервер;
- применение полученных с сервера обновлений пользовательского интерфейса к отображаемому компоненту.
Подключение, используемое Blazor Server для обмена данными с браузером, также применяется для обработки вызовов взаимодействия JavaScript.
Blazor Serverприложения отображают содержимое иначе, чем в традиционных моделях отрисовки пользовательского интерфейса в приложениях ASP.NET Core с помощью Razor представлений или Razor страниц. В обеих моделях используется язык Razor для описания отрисовываемого содержимого HTML, но они значительно отличаются по способу отрисовки разметки.
При отрисовке страницы или представления Razor каждая строка кода Razor генерирует HTML в виде текста. После отрисовки сервер удаляет экземпляр страницы или представления, включая любое созданное состояние. Когда поступает новый запрос на страницу, вся страница повторно генерируется в формате HTML и отправляется клиенту.
Blazor Server создает граф компонентов, похожий на DOM HTML или XML. Граф компонента включает в себя состояние, содержащееся в свойствах и полях. Blazor вычисляет граф компонента для создания двоичного представления разметки, которая отправляется клиенту для отрисовки. После соединения между клиентом и сервером статические предварительно отрисованные элементы компонента заменяются интерактивными элементами. Предварительное отображение содержимого на сервере для быстрой загрузки HTML-содержимого на клиенте делает приложение более адаптивным к клиенту.
Когда компоненты становятся интерактивными в клиенте, обновления пользовательского интерфейса запускаются за счет взаимодействия с пользователем и событий приложения. При обновлении граф компонентов перерисовывается, и в пользовательском интерфейсе вычисляется разница. Эта разница является наименьшим набором изменений DOM, необходимых для обновления пользовательского интерфейса на клиенте. Дифф отправляется клиенту в двоичном формате и применяется браузером.
Компонент уничтожается после того, как пользователь покидает компонент.
Blazor WebAssembly
Blazor WebAssembly — это фреймворк для одностраничных приложений (SPA) для создания интерактивных клиентских веб-приложений с .NET.
Выполнение кода .NET в веб-браузерах становится возможным благодаря технологии WebAssembly (сокращенно wasm). WebAssembly — это компактный формат байт-кода, оптимизированный для быстрой загрузки и максимального быстродействия. WebAssembly — это открытый веб-стандарт, который поддерживается в веб-браузерах без подключаемых модулей. WebAssembly работает во всех современных веб-браузерах, включая мобильные браузеры.
Код WebAssembly может обращаться к любым функциям браузера через JavaScript благодаря поддержке взаимодействия с JavaScript (сокращенно JavaScript interop или JS interop). Код .NET, который обрабатывается через WebAssembly в браузере, выполняется в песочнице для JavaScript этого браузера, которая включает средства защиты от вредоносных действий на клиентском компьютере.
Blazor WebAssembly При создании и запуске приложения:
- Файлы кода C# и файлы Razor компилируются в сборки .NET.
- Сборки и среда выполнения .NET загружаются в браузер.
- Blazor WebAssembly инициализирует среду выполнения .NET WebAssembly и настраивает среду выполнения для загрузки сборок для приложения. Среда выполнения использует взаимодействие с JavaScript для обработки операций с моделью DOM и вызовов API браузера.
Размер опубликованного приложения, его размер загрузочного файла, является ключевым фактором производительности и удобства использования приложения. Крупное приложение скачивается в браузере довольно долго, что ухудшает взаимодействие с пользователем. Blazor WebAssembly оптимизирует размер полезных данных, чтобы сократить время загрузки:
- Неиспользуемый код удаляется из приложения при его публикации триммером промежуточного кода.
- HTTP-ответы сжимаются;
- среда выполнения и сборки .NET кэшируются в браузере.
Blazor Hybrid
Гибридные приложения используют смесь нативных и веб-технологий. Приложение Blazor Hybrid использует Blazor в нативном клиентском приложении. Razorкомпоненты выполняются изначально в процессе .NET и отображают веб-интерфейс в внедренном Web View элементе управления с помощью локального канала взаимодействия. WebAssembly не используется в гибридных приложениях. Гибридные приложения используют следующие технологии:
- .NET Multi-platform App UI (.NET MAUI): кроссплатформенная платформа для создания собственных мобильных и настольных приложений с помощью C# и XAML.
- Windows Presentation Foundation (WPF): платформа пользовательского интерфейса, которая является независимой от разрешения и использует подсистему отрисовки на основе векторов, созданную для использования современного графического оборудования.
- Windows Forms. Платформа пользовательского интерфейса, которая создает расширенные клиентские приложения для Windows. Платформа разработки Windows Forms поддерживает широкий набор функций для разработки приложений, включая элементы управления, графику, привязку данных и ввод пользователя.
Интероперабельность с JavaScript
Для приложений, которым требуются сторонние библиотеки JavaScript и доступ к API браузера, компоненты взаимодействуют с JavaScript. Компоненты могут использовать любую библиотеку или API, которые может использовать JavaScript. Код C# может вызывать код JavaScript, а код JavaScript — код C#.
Совместное использование кода и .NET Standard
Blazorреализует стандарт .NET, который позволяет Blazor проектам ссылаться на библиотеки, соответствующие спецификациям .NET Standard. .NET Standard — это формальная спецификация API-интерфейсов .NET, которые доступны во всех реализациях .NET. Библиотеки классов .NET Standard можно совместно использовать на разных платформах .NET, таких как Blazor, .NET Framework, .NET Core, .NET Multi-platform App UI (.NET MAUI), Mono и Unity.
API, которые не применимы в веб-браузере (например, для доступа к файловой системе, открытия сокетов и работы с потоками), выбрасывают исключение PlatformNotSupportedException.
Следующие шаги
ASP.NET Core