Введение в использование Blazor для разработчиков ASP.NET Web Forms.

Совет

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

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

Платформа ASP.NET Web Forms является стандартом для веб-разработки .NET с тех пор, как .NET Framework впервые появилась в 2002. В то время, когда Интернет еще только делал первые шаги, ASP.NET Web Forms сделала создание веб-приложений простым и продуктивными, путем внедрения многих из шаблонов, которые использовались для разработки под настольные системы. В ASP.NET Web Forms веб-страницы можно быстро составлять из многократно используемых элементов управления пользовательского интерфейса. Взаимодействие с пользователем обрабатывается естественным образом, как события. Существует обширная экосистема элементов управления пользовательского интерфейса веб-форм, предоставляемых корпорацией Майкрософт и разработчиками элементов управления. Элементы управления позволяют упростить подключение к источникам данных и отображение визуализаций с богатыми данными. Для тех, кто мыслит визуально, конструктор Web Forms предоставляет простой интерфейс для управления элементами управления с помощью перетаскивания.

С течением времени, корпорация Майкрософт представила новые веб-платформы на основе ASP.NET, чтобы не отставать от тенденций веб-разработки. К некоторым таким веб-платформам относятся ASP.NET MVC, веб-страницы ASP.NET и, недавно, ASP.NET Core. С появлением каждой новой платформы появлялись прогнозы о неизбежном закате ASP.NET Web Forms и ее критика как устаревшей, старомодной веб-платформы. Несмотря на эти прогнозы, многие веб-разработчики .NET продолжают находить ASP.NET Web Forms простым, стабильным и продуктивным способом выполнения своей работы.

На момент написания статьи почти половина веб-разработчиков использует ASP.NET Web Forms каждый месяц. Платформа ASP.NET Web Forms настолько стабильна, что документы, образцы, книги и записи в блогах десятилетней давности остаются полезными и актуальными. Для многих разработчиков веб-приложений .NET "ASP.NET" по-прежнему является синонимом "ASP.NET Web Forms", как это было во времена создания концепции .NET. Споры о достоинствах и недостатках ASP.NET Web Forms по сравнению с другими новыми веб-платформами .NET могут продолжаться. ASP.NET Web Forms остается популярной платформой для создания веб-приложений.

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

  1. Переход и кросс-платформенной разработке и открытому коду.
  2. Перемещение логики приложений на клиент.

Открытый исходный кодом и кросс-платформенная разработка в .NET

При первом появлении .NET и ASP.NET Web Forms экосистема платформы выглядела сильно иначе, чем сегодня. На рынке для настольных компьютеров и серверов господствовала Windows. Альтернативные платформы, такие как macOS и Linux, только еще пытались встать на ноги. ASP.NET Web Forms поставляется с .NET Framework в качестве компонента только для Windows. Это означает, что приложения ASP.NET Web Forms могут работать только на компьютерах Windows Server. Многие современные среды теперь используют различные типы платформ для серверов и компьютеров разработки, так что кроссплатформенная поддержка является безоговорочным требованием многих пользователей.

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

Сообщество .NET использует как кроссплатформенную поддержку, так и открытый код. .NET Core — это кроссплатформенная реализация .NET с открытым кодом, которая работает на различных платформах, включая Windows, macOS и различные дистрибутивы Linux. Xamarin предоставляет Mono, версию .NET с открытым кодом. Моно работает на устройствах Android, iOS и ряда других форм-факторов, включая часы и интеллектуальные телевизоры. В 2020 году корпорация Майкрософт выпустила версию .NET 5, которая объединила .NET Core и Mono в "одну среду выполнения и платформу .NET, которую можно использовать везде, с унифицированными поведением среды выполнения и возможностями разработчиков".

Получит ли платформа ASP.NET Web Forms преимущества от перехода на открытый исходный код и кроссплатформенность? Ответ, увы — "нет" или по крайней мере не в той же мере, что и остальная часть платформы. Команда .NET дала понять, что ASP.NET веб-формы не будут перенесены в .NET Core или .NET 8. Почему так?

Усилия по переносу ASP.NET Web Forms начались с первых дней .NET Core. Было обнаружено слишком радикальное количество критических изменений. Кроме того, здесь надо признаться, что даже корпорация Майкрософт может поддерживать лишь ограниченное число веб-платформ одновременно. Возможно, кто-то из сообщества возьмет на себя создание кросс-платформенной версии ASP.NET Web Forms с открытым исходным кодом. Исходный код ASP.NET Web Forms был выложен для публики в справочной форме. Но пока что представляется, что ASP.NET Web Forms останется предназначенной только для Windows и без модели публикации с открытым исходным кодом. Если для ваших сценариев важна поддержка разных платформ или открытый исходный код, необходимо найти что-то новое.

Означает ли это, что ASP.NET Web Forms мертва и ее больше не следует использовать? Конечно нет! Пока .NET Framework поставляется в составе Windows, ASP.NET Web Forms будет поддерживаемой платформой. Для многих разработчиков Web Forms отсутствие поддержки кросс-платформенной работы и открытого кода не создает проблем. Если у вас нет требования к кроссплатформенной поддержке, открытому коду или любому из других новых функций в .NET Core или .NET 8, то придерживаться ASP.NET веб-формы в Windows хорошо. ASP.NET Web Forms будет еще много лет представлять собой эффективный способ написания веб-приложений.

Но есть и другая тенденция, которую стоит рассмотреть, и это сдвиг к клиенту.

Веб-разработка на стороне клиента

Все веб-платформы на основе .NET, в том числе ASP.NET Web Forms, имеют одну общую черту: они визуализируются сервером. В веб-приложениях, отображаемых сервером, браузер выполняет запрос к серверу, который выполняет некоторый код (код .NET в приложениях ASP.NET) для получения ответа. Этот ответ отправляется обратно в браузер для обработки. В этой модели браузер используется в качестве механизма тонкой визуализации. Трудная работа по созданию пользовательского интерфейса, выполнению бизнес-логики и управлению состоянием происходит на сервере.

Однако браузеры стали универсальными платформами. Они реализуют постоянно увеличивающееся число открытых веб-стандартов, предоставляющих доступ к возможностям компьютера пользователя. Почему бы использовать вычислительные возможности, хранилище, память и другие ресурсы клиентского устройства? Взаимодействия пользовательского интерфейса в особенности могут обеспечить более насыщенное и интерактивное поведения при полной или хотя бы частичной обработке на стороне клиента. Логика и данные, которые должны обрабатываться на сервере, по-прежнему могут обрабатываться на сервере. Тут можно использовать вызовы веб-API или даже протоколы реального времени, например WebSockets. Эти преимущества доступны разработчикам веб-приложений бесплатно, если они готовы писать JavaScript. Клиентские платформы пользовательского интерфейса, такие как Angular, React и Vue, упрощают веб-разработку на стороне клиента. Их популярность растет. Разработчики ASP.NET Web Forms также могут воспользоваться преимуществами клиента и даже получить встроенную поддержку с помощью интегрированных платформ JavaScript, таких как ASP.NET AJAX.

Но у использования двух различных платформ и экосистем (.NET и JavaScript) есть своя цена. Для этого необходим опыт работы в двух параллельных средах с различными языками, платформами и инструментами. Код и логику нельзя легко сделать общими для клиента и сервера, что приводит к дублированию и издержкам на разработки. Также может быть сложно угнаться за экосистемой JavaScript, которая уже давно развивается с бешеной скоростью. Платформа внешнего интерфейса и предпочтения в средствах сборки быстро меняются. Отрасль перешла от Grunt к Gulp, затем Webpack и т. д. То же непрерывное бурление шло и в области платформ внешнего интерфейса, таких как Query, Knockout, Angular, React и Vue. Но, учитывая монополию JavaScript в браузерах, выбора тут не было. То есть, пока веб-сообщество не собралось и не совершило чудо!

WebAssembly удовлетворяет потребность

В 2015 основные поставщики браузеров присоединились к консорциуму W3C для создания нового открытого веб-стандарта с именем WebAssembly. WebAssembly — это байтовый код для сети. Если вы можете скомпилировать код в WebAssembly, он сможет работать в любом браузере на любой платформе, почти с их нормальной быстротой. Начальные усилия были направлены на C/C++. Результатом стала впечатляющая демонстрация использования подсистем трехмерной графики непосредственно в браузере, без подключаемых модулей. WebAssembly с тех пор был стандартизирован и внедрен во всех основных браузерах.

Работа над использованием .NET в WebAssembly была заявлена в конце 2017 г., а в 2020 г. эта возможность была реализована, в том числе с поддержкой в .NET 5 и последующих выпусках. Возможность запуска кода .NET непосредственно в браузере обеспечивает веб-разработку с полным стеком на платформе .NET.

Blazor: веб-разработка с полным стеком на платформе .NET

Сама по себе, возможность запуска кода .NET в браузере не предоставляет полноценного интерфейса для создания клиентских веб-приложений. Вот где может пригодиться Blazor. Blazor представляет собой клиентскую платформу веб-интерфейса, основанную на C#, а не на JavaScript. Blazor может выполняться непосредственно в браузере с помощью WebAssembly. Подключаемые модули браузера не требуются. Кроме того, приложения Blazor могут запускать на стороне сервера .NET и выполнять все взаимодействия пользователя в режиме реального времени с помощью браузера.

Blazor имеет замечательную поддержку на уровне средств в Visual Studio и Visual Studio Code. Платформа также включает в себя полную модель компонентов пользовательского интерфейса и имеет встроенные возможности для следующего:

  • Формы и проверка
  • Внедрение зависимостей
  • маршрутизация на стороне клиента;
  • Макеты
  • Отладка в браузере
  • Взаимодействие с JavaScript

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

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

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

Начало работы с Blazor

Начать работу с Blazor просто. Перейдите к https://blazor.net и проследуйте по ссылкам, чтобы установить соответствующий пакет SDK для .NET и шаблоны проектов Blazor. Кроме того, вы найдете инструкции по настройке инструментов Blazor в Visual Studio или Visual Studio Code.