Blazor Desktop: Electron для .NET? 🤔

Не так давно Blazor WebAssembly был просто экспериментом во время выполнения для C # в веб-браузере Microsoft. Зная Microsoft, которая оставила позади множество крупных корпоративных проектов, не было известно, чего ожидать от Blazor. Со временем Blazor превратился в настоящий проект и был запущен в производство в рекордно короткие сроки. Теперь все слухи ходят вокруг Blazor Desktop.

В середине февраля Microsoft выпустила первую предварительную версию LTS .NET 6 для выпуска в ноябре. В их презентации говорилось о Blazor Desktop, но больше всего разработчиков смутило то, что они не упомянули, что предварительная версия .NET 6 не включает эту функцию.

Electron для приложений .NET ✅

Вопрос, который мы задаем себе сейчас:

Что на самом деле такое Blazor Desktop?

Microsoft любит сравнивать его с Electron, который представляет собой настольный контейнер для приложений JavaScript, с которым работают такие приложения, как Slack. Electron сегодня все еще довольно популярен, несмотря на свои проблемы, и самое любопытное то, что он разработан на GitHub, который принадлежит компании Microsoft.

Дело в том, что Electron не только используется для выполнения кода JavaScript для веб-страниц, но также имеет локальную версию Node.js и широкий спектр расширений, которые предоставляют приложениям JavaScript с возможностями рабочего стола. Как мы знаем, в мире Microsoft нет эквивалента…

Как будет выглядеть Electron для Blazor в стиле Microsoft?

Ответ: WebWindow.

WebWindow - это эксперимент Стива Андерсона, который попытался создать облегченный контейнер для размещения приложений Blazor. В последние дни Microsoft отказалась от того, что Blazor Desktop вдохновлен WebWindow.

Какие функции есть в Blazor Desktop? 🤔

Чтобы привыкнуть к этой идее, WebWindow делает то, что предполагает его название: окно рабочего стола, в котором отображается пользовательский веб-интерфейс. Он генерируется самой операционной системой, например, WebKitGTK будет использоваться в Linux, WebWiew2 в Windows и WKWebView в MacO .

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

Первое большое отличие состоит в том, что контейнер WebWindow не использует WebAssembly. Одно и то же приложение Blazor можно запустить в WebWindow так же, как на веб-странице. Но при использовании веб-страницы она запускается с облегченной средой выполнения .NET, которая работает с WebAssembly.. Когда вы делаете то же самое в WebWindow, кроссплатформенность. NET Runtime будет использоваться напрямую. Это гарантирует, что собственная среда выполнения превзойдет размещенную версию WebAssembly.

Второе большое отличие заключается в том, что в приложении Blazor Desktop, размещенном в WebWindow, нет интегрированного веб-сервера, в этом случае он использует .NET 100% . Хотя на данный момент мы не видели, как это будет реализовано, но если все пойдет в соответствии с планами Microsoft, это будет похоже на использование Electron без необходимости изучать Node.

Интерфейс по-прежнему веб 💻

Все это вызывает довольно очевидный вопрос ...

Зачем использовать Blazor Desktop, если можно просто создать кроссплатформенное приложение на .NET?

Проблема со всем этим - интерфейс, поскольку .NET 5 предлагает множество инструментов для пользовательского интерфейса (UWP, WPF, Windows Forms), но ни один из них не работает в любой другой операционной системе, кроме Windows. Blazor Desktop позволит вам программировать серверную часть, используя среду выполнения .NET, о которой мы говорили ранее. Это можно было бы объединить с моделью Blazor UI, затем я бы работал через WebWindow для управления UI.

🟢 Заключение:

Еще рано, но давайте кратко рассмотрим возможные функции Blazor Desktop:

  • Меньший размер разряда, чем у Electron
  • Меньше накладных расходов на память, чем у Electron
  • Система настольных приложений с кроссплатформенным пользовательским веб-интерфейсом
  • Лучшая собственная производительность, чем у Blazor WebAssembly

Плохая часть?

Что ж, вам должно быть комфортно с моделью приложения Blazor, поскольку она имеет большое влияние со стороны ASP.NET Razor и не похожа ни на один из инструментов для приложений Windows .NET.

И не только это, Blazor Desktop - это всего лишь следствие .NET MAUI, фреймворка для сближения моделей пользовательского интерфейса рабочего стола. Существует также возможность использовать WebWindow для создания гибридных приложений, которые объединяют содержимое различных инструментов пользовательского интерфейса. В качестве примера представьте окно с элементами управления WPF рядом с областью содержимого Blazor.

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

Опыт веб-модели показал, что с помощью собственных расширений намного проще создать новую модель пользовательского интерфейса. Хотя, если вы ожидаете чего-то лучшего, у вас все еще есть Flutter от Google.

А пока мы можем только надеяться, что .NET 6 предоставит нам более надежные способы разработки настольных веб-приложений на любом рабочем столе, работающих в знакомой среде выполнения и написанных на полностью C # . Конечно, несколько лет назад такая возможность казалась нежизнеспособной.