Microsoft начинает закрывать круг на своей самой ожидаемой новой платформе

Прошло два года с тех пор, как Microsoft впервые анонсировала Blazor, технологию без подключаемых модулей для запуска кода C # в браузере. Еще в 2018 году Blazor был официальным экспериментом, без обещания, что мы получим товар для доставки. А учитывая заслуженную репутацию Microsoft, разбивающую сердца разработчиков, было много здравомыслящих программистов, которые остались далеко.

Затем, примерно год назад, Blazor вышел из неопределенности как настоящий продукт с реальной поддержкой. Microsoft объявила, что первая версия Blazor WebAssembly (это версия, использующая модель C # в браузере) будет связана с амбициозным выпуском .NET 5, запланированным на конец этого года. Тем временем Microsoft выпустила серию постоянно развивающихся предварительных версий, с которыми можно поиграть.

Эволюция Blazor

В нашем первом взгляде на Blazor мы обнаружили впечатляющую технологию, которая, казалось, изменила кривую того, что возможно в веб-браузере. Слегка прищурьте глаза, и приложение Blazor будет выглядеть как полноценное .NET-приложение на стандартной веб-странице. Он поддерживается на всех основных платформах (Windows, Mac, Linux) и во всех основных браузерах. Производительность достаточно высокая (особенно по сравнению с другими экспериментами на основе WebAssembly, такими как OpenSilver), и она продолжает улучшаться. Размеры загружаемых файлов не такие. Синтаксис чистый и логичный.

Но есть и головные боли - как и следовало ожидать от всего этого болезненно нового. Одна из проблем предыдущих версий заключалась в том, что разработчики были вынуждены действовать вслепую, не имея ни одного из обычных инструментов отладки, которыми известна Visual Studio. А поскольку Blazor упаковывает ваш код в сборку .NET (скомпилированную в IL), он непрозрачен для браузерных инструментов тестирования, таких как Chrome DevTools.

Поэтому, когда Blazor выпустил на этой неделе новую предварительную версию (технически Blazor WebAssembly 3.2.0 Preview 3), самой захватывающей частью было впервые добавление реальной отладки.

Как выглядит отладка в Blazor

Во-первых, следует сделать заявление об отказе от ответственности - отладка в Blazor еще не завершена. Но все детали на месте и готовы к полировке.

Сегодня отладка работает как в VS Code, так и в предварительной версии Visual Studio Community. Однако в VS Code мне не удавалось дойти до финиша. Есть много движущихся частей (новейшие версии .NET Core SDK, шаблон Blazor WebAssembly, компилятор C # и отладчик JavaScript), несколько параметров конфигурации, которые нужно применить, и двухэтапный процесс сборки для отладки. Microsoft опубликовала логическую серию инструкций, и, когда я следовал им, казалось, что все разворачивается идеально - до тех пор, пока символы отладки не загрузились и мои точки останова не проплыли мимо.

Но в сообществе Visual Studio все работает с одной загрузкой. Скачайте последнюю версию (16.6), и вы получите все необходимое, включая .NET Core SDK. Начните новый проект с помощью шаблона Blazor App, выберите Blazor WebAssembly, и вы получите печально известное приложение для проверки и фиксации погоды. Для включения отладки не требуется дополнительных действий.

Вот знакомая точка останова, которую я добавил в код, увеличивающий счетчик:

Когда вы достигнете точки останова, вы можете быть немного разочарованы. В отличие от отладки обычного .NET-приложения, при наведении курсора мыши на переменные не отображаются их значения. Однако в окне «Локальные» обычно отображаются нужные вам данные. Просто разверните ссылку this:

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

Точки останова работают во всем клиентском коде Blazor. И вы также можете поместить их в код на стороне сервера (например, если ваше приложение Blazor вызывает веб-API). Единственное место, которое, похоже, не работает, - это код запуска, который настраивает среду Blazor и загружает ваше приложение.

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

Состояние Blazor сегодня

Ничто из этого не отвечает на реальный вопрос - будет ли Blazor краткосрочной искрой или долгосрочным решением? У Blazor есть один отличный мотивирующий актив: возможность запускать один и тот же стек на клиенте и сервере. Эта цель настолько соблазнительна, что помогла node.js превратиться в один из самых популярных проектов сообщества. Blazor использует то же желание. Приступить к использованию безопасных типов классов C # и .NET - это просто леденец.

Стоит ли инвестировать в Blazor сегодня? Это зависит от того, сколько времени вы можете позволить себе гореть. В моей работе меня поощряют изучать захватывающие новые технологии, пока они все еще развиваются. Иногда эти технологии становятся очень популярными, как первая версия ASP.NET. В других случаях они горят ярко в течение короткого периода времени, а затем жестоко отодвигаются на второй план. (Silverlight, я смотрю на вас.) Нет никаких сомнений в том, что Blazor может стать краеугольным камнем стека .NET - пойти по пути ASP.NET, а не по пути Silverlight. Но также нет никакой гарантии, что мы живем в эти сроки.

А пока наслаждайтесь поездкой, балуйтесь, но держитесь за более зрелые технологии, такие как React, для развития вашего основного бизнеса - по крайней мере, на несколько месяцев.

Чтобы получать рассылку с лучшими техническими новостями раз в месяц, подпишитесь на Информационный бюллетень Young Coder.