Поделиться через


Сравнение архитектуры ASP.NET Web Forms и Blazor

Совет

Это фрагмент из электронной книги для разработчиков ASP NET веб-формы для Azure, Blazor доступных в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

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

Веб-формы ASP.NET

Платформа ASP.NET Web Forms основана на архитектуре, ориентированной на страницы. Каждый HTTP-запрос для расположения в приложении представляет собой отдельную страницу ответа ASP.NET. По мере запроса страниц содержимое браузера заменяется результатами запрошенной страницы.

Страницы состоят из следующих компонентов:

  • Разметка HTML
  • Код C# или Visual Basic
  • Класс кода программной части, содержащий логику и возможности обработки событий
  • Элементы управления

Элементы управления — это многократно используемые модули веб-интерфейса, которые можно программно размещать на странице и взаимодействовать с ними. Страницы состоят из файлов, заканчивающихся на .aspx, содержащих разметку, элементы управления и некоторый код. Классы кода программной части находятся в файлах с одним и тем же базовым именем и расширением .aspx.cs или .aspx.vb, в зависимости от используемого языка программирования. Интересно, что веб-сервер интерпретирует содержимое файлов .aspx и компилирует их при каждом изменении. Повторная компиляция выполняется, даже если веб-сервер уже запущен.

Элементы управления можно создавать с разметкой и доставлять в качестве пользовательских элементов управления. Пользовательский элемент управления является производным от класса UserControl и имеет схожую структуру со страницей. Разметка для пользовательских элементов управления хранится в файле .ascx. Сопутствующий класс кода программной части находится в файле .ascx.cs или .ascx.vb. Элементы управления также могут быть полностью собраны с помощью кода путем наследования от WebControl или базового класса CompositeControl.

Страницы также имеют обширный жизненный цикл событий. Каждая страница создает события инициализации, загрузки, предварительной отрисовки и выгрузки, которые происходят, когда среда выполнения ASP.NET выполняет код страницы для каждого запроса.

Элементы управления на странице обычно выполняют обратную передачу на ту же страницу, в которой был представлен элемент управления, и вместе с ними передаются полезные данные из скрытого поля формы с именем ViewState. Поле ViewState содержит сведения о состоянии элементов управления на момент подготовки к просмотру и представлению на странице, позволяя среде выполнения ASP.NET сравнивать и выдавать изменения в содержимом, переданном на сервер.

Blazor

Blazor — это клиентская платформа веб-интерфейса, сходная с интерфейсными платформами JavaScript, такими как Angular или React. Blazor обрабатывает взаимодействия пользователей и отображает необходимые обновления пользовательского интерфейса. Blazorне основан на модели ответа на запрос. Взаимодействие с пользователем обрабатывается как события, которые не находятся в контексте конкретного HTTP-запроса.

Приложения Blazor состоят из одного или нескольких корневых компонентов, отображаемых на HTML-странице.

Blazor components in HTML

Способ, с помощью которого пользователь указывает, где должны преобразоваться для просмотра компоненты, а также способ их связывания для взаимодействия с пользователем, зависит от модели размещения.

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

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

Blazor DOM interaction

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