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


Введение Blazor для разработчиков веб-форм ASP.NET

Подсказка

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

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover эскиз.

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

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

На момент написания статьи почти полмиллиона веб-разработчиков используют ASP.NET веб-формы каждый месяц. Платформа веб-форм ASP.NET стабильна до точки, в которую документы, примеры, книги и записи блога из десяти лет назад остаются полезными и актуальными. Для многих веб-разработчиков .NET "ASP.NET" по-прежнему ассоциируется с "ASP.NET Web Forms", как это было задумано при создании .NET. Аргументы по поводу преимуществ и недостатков Web Forms ASP.NET по сравнению с другими новыми веб-фреймворками .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 могут работать только на компьютерах Windows Server. Многие современные среды теперь используют различные виды платформ для серверов и компьютеров разработки, таким образом, что кроссплатформенная поддержка для многих пользователей является абсолютным требованием.

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

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

Будут ли веб-формы ASP.NET выигрывать от перехода на поддержку открытого исходного кода и кроссплатформенности? Ответ, к сожалению, отрицательный или, по крайней мере, не в той же степени, что и остальная платформа. Команда .NET дала понять , что ASP.NET веб-формы не будут переноситься в .NET Core или .NET 8. Почему так?

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

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

Но есть еще одна тенденция стоит рассмотреть, и это переход к клиенту.

Разработка веб-сайтов на стороне клиента

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

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

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

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

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

Работа по запуску .NET была объявлена в конце 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 веб-формы. Обе платформы предлагают модели программирования UI на основе компонентов, событий и с отслеживанием состояния. Основное отличие архитектуры заключается в том, что ASP.NET веб-формы выполняются только на сервере. Blazor может выполняться на клиенте в браузере. Но если у вас есть опыт работы с ASP.NET Web Forms, многое в Blazor покажется вам знакомым. Blazor — это естественное решение для разработчиков веб-форм ASP.NET, стремящихся воспользоваться преимуществами клиентской разработки и открытого, кроссплатформенного будущего .NET.

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

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

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

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