Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подсказка
Это фрагмент из электронной книги для разработчиков ASP NET веб-формы для Azure, Blazor доступных в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.
Blazor приложения могут размещаться одним из следующих способов:
- На стороне клиента в браузере WebAssembly.
- Серверная часть приложения ASP.NET Core.
Blazor WebAssembly Приложения
Blazor WebAssembly приложения выполняются непосредственно в браузере в среде выполнения .NET, основанной на WebAssembly. Blazor WebAssembly приложения работают так же, как интерфейсные платформы JavaScript, такие как Angular или React. Однако вместо написания JavaScript вы пишете C#. Среда выполнения .NET загружается вместе с сборкой приложения и любыми необходимыми зависимостями. Чтобы пользоваться браузером, подключаемые модули или расширения не требуются.
Скачанные сборки являются обычными сборками .NET, как и в любом другом приложении .NET. Так как среда выполнения поддерживает .NET Standard, вы можете использовать существующие библиотеки .NET Standard с BlazorWebAssembly приложением. Однако эти сборки по-прежнему будут выполняться в песочнице безопасности браузера. Некоторые функции могут вызывать PlatformNotSupportedException, например, при попытке доступа к файловой системе или открытии произвольных сетевых подключений.
Когда приложение загружается, среда выполнения .NET запускается и указывает на сборку приложения. Выполняется логика запуска приложения и отрисовываются корневые компоненты. Blazor вычисляет обновления пользовательского интерфейса на основе отрисованных выходных данных компонентов. Затем применяются обновления DOM.
Blazor WebAssembly приложения выполняются исключительно на стороне клиента. Такие приложения можно развернуть на платформах для размещения статических сайтов, таких как GitHub Pages или Azure Static Website Hosting. .NET не требуется на сервере вообще. Для глубокого связывания с частями приложения обычно требуется решение маршрутизации на сервере. Решение маршрутизации перенаправляет запросы в корневой каталог приложения. Например, это перенаправление можно обрабатывать с помощью правил перезаписи URL-адресов в IIS.
Чтобы получить все преимущества Blazor и полноценной веб-разработки на платформе .NET, разместите приложение BlazorWebAssembly, используя ASP.NET Core. Используя .NET как на клиенте, так и на сервере, вы можете легко совместно использовать код и создавать приложение с помощью одного согласованного набора языков, платформ и инструментов. Blazor предоставляет удобные шаблоны для настройки решения, которое содержит как приложение BlazorWebAssembly, так и проект хоста ASP.NET Core. При построении решения встроенные статические файлы из Blazor приложения размещаются приложением ASP.NET Core с уже настроенной резервной маршрутизацией.
Blazor Серверные приложения
Помните из Blazor обсуждения архитектуры что Blazor компоненты передают свои выходные данные в промежуточную абстракцию, называемую RenderTree
. Затем платформа Blazor сравнивает то, что было отрисовано, с тем, что было отрисовано ранее. Различия применяются к DOM.
Blazor Компоненты отделены от способа применения отрисованных выходных данных. Следовательно, сами компоненты не должны выполняться в том же процессе, что и процесс обновления пользовательского интерфейса. На самом деле, они даже не должны работать на одном компьютере.
В Blazor серверных приложениях компоненты выполняются на сервере, а не на стороне клиента в браузере. События пользовательского интерфейса, происходящие в браузере, отправляются на сервер через подключение в режиме реального времени. События отправляются в соответствующие экземпляры компонентов. Компоненты отрисовываются и вычисляемый дифф пользовательского интерфейса сериализуются и отправляются в браузер, где он применяется к DOM.
Модель Blazor хостинга может быть вам знакома, если вы использовали ASP.NET AJAX и UpdatePanel элемент управления. Элемент UpdatePanel
управления обрабатывает частичные обновления страницы в ответ на срабатывание событий на странице. Когда UpdatePanel
активируется, он запрашивает частичное обновление, а затем применяет его без необходимости обновлять страницу. Состояние пользовательского интерфейса управляется с помощью ViewState
.
Blazor Серверные приложения немного отличаются в том, что приложению требуется активное подключение к клиенту. Кроме того, на сервере сохраняется все состояние пользовательского интерфейса. Помимо этих различий, две модели концептуально похожи.
Выбор правильной Blazor модели размещения
Как описано в Blazor документации по модели размещения, разные модели размещения обладают своими плюсами и минусами.
Модель BlazorWebAssembly размещения имеет следующие преимущества:
- Нет зависимости на стороне сервера .NET. Приложение полностью работает после скачивания на клиент.
- Ресурсы и возможности клиента используются полностью.
- Рабочая нагрузка переносится с сервера на клиент.
- Веб-сервер ASP.NET Core не требуется для размещения приложения. Сценарии бессерверного развертывания возможны (например, обслуживание приложения из CDN).
Недостатки BlazorWebAssembly модели хостинга:
- Возможности браузера ограничивают приложение.
- Требуется аппаратное и программное обеспечение клиента (например, поддержка WebAssembly).
- Размер загрузки больше, а для загрузки приложений требуется больше времени.
- Поддержка среды выполнения и инструментов .NET менее зрела. Например, существуют ограничения в поддержке и отладке .NET Standard .
И наоборот, модель Blazor размещения сервера предлагает следующие преимущества:
- Размер загрузки гораздо меньше, чем клиентское приложение, и приложение загружается гораздо быстрее.
- Приложение использует все возможности сервера, включая использование любых совместимых API .NET.
- .NET на сервере используется для запуска приложения, поэтому существующие средства .NET, такие как отладка, работают должным образом.
- Поддерживаются тонкие клиенты. Например, серверные приложения работают с браузерами, которые не поддерживают WebAssembly и на устройствах с ограниченными ресурсами.
- База кода приложения .NET/C#, включая код компонента приложения, не отправляется клиентам.
Недостатки Blazor модели размещения сервера:
- Более высокая задержка пользовательского интерфейса. Каждое взаимодействие с пользователем включает передачу данных по сети.
- Автономная работа не поддерживается. Если подключение клиента завершается сбоем, приложение перестает работать.
- Масштабируемость является сложной задачей для приложений с большим количеством пользователей. Сервер должен управлять несколькими клиентскими подключениями и обрабатывать состояние клиента.
- Для обслуживания приложения требуется сервер ASP.NET Core. Бессерверные сценарии развертывания невозможно. Например, вы не можете обслуживать приложение из CDN.
Предыдущий список компромиссов может быть пугающим, но модель размещения может быть изменена позже. Независимо от выбранной Blazor модели размещения, модель компонента совпадает. В принципе, одни и те же компоненты можно использовать с любой моделью размещения. Код приложения не изменяется; однако рекомендуется вводить абстракции, чтобы компоненты оставались не зависящими от модели. Абстракции позволяют приложению проще внедрять другую модель размещения.
Развертывание приложения
ASP.NET приложения веб-форм обычно размещаются в службах IIS на компьютере или кластере Windows Server. Blazor приложения также могут:
- Размещаться на IIS либо как статические файлы, либо как приложение ASP.NET Core.
- Используйте гибкость ASP.NET Core для размещения на различных платформах и серверных инфраструктурах. Например, можно разместить Blazor приложение с помощью Nginx или Apache в Linux. Дополнительные сведения о публикации и развертывании Blazor приложений см. в Blazor документации по размещению и развертыванию.
В следующем разделе мы рассмотрим, как настроены проекты для серверных приложений Blazor, WebAssembly и Blazor.