Пишем GUI на .NET для Linux
Полезности | создано: 18.09.2022 | опубликовано: 18.09.2022 | обновлено: 13.01.2024 | просмотров: 22923
Довольно часто возникает вопрос "как можно писать приложения для Linux используя .NET". Кажется, пришло время ответить на этот вопрос. Тем более, выход MAUI лишь добавил непонятностей в эту тему.
Пишем на C# приложение с GUI для Linux
Довольно часто возникает вопрос "как можно писать приложения для Linux используя .NET". Кажется, пришло время ответить на этот вопрос. Тем более, выход в MAUI лишь добавил непонятностей в эту тему.
Сколько вариантов?
Вариантов, на самом деле, не один, и даже не два, а немного больше. Я насчитал четыре: Avalonia, Uno, MAUI, Blazor. Причем, некоторые из перечисленных вариантов представляют собой "полноценные" приложения, которые очень похожи на Windows-приложения, то есть графическим интерфейсом (GUI). Другие - это Single Page Application (SPA), то есть работают как frontend + backend. Где frontend это и есть SPA на базе Blazor (Blazor WebAssembly или Blazor Server). А роли backend может выступать, например, Web API, опять же написанный на C#.NET.
Не могу не отменить, что в роли frontend может выступать любой SPA-фреймворк, такие как React, Vue.js, AngularJS, BackBoneJS, Aurelia, EmberJS, Svelte и т.д. и т.п. Просто если мы говорим о возможности писать на C#, то я не беру JavaScript-фреймворки во внимание.
А теперь, давайте про каждый немного подробнее.
Avalonia
Это самый интересный, на мой взгляд, вариант, потому что он очень похож на WPF
. Вот как описан этот фреймворк на сайте производителя
Avalonia - это кроссплатформенный фреймворк пользовательского интерфейса для dotnet, обеспечивающий гибкую систему стилизации и поддерживающий широкий спектр операционных систем, таких как Windows, Linux, macOS. Авалония зрелая и готова к производству. У нас также есть поддержка бета-версии для iOS, Android и на ранних стадиях поддержка браузера через WASM.
Avalonia поддерживается Visual Studio через плагин, а также можно использовать Rider.
Uno
Еще один вариант, писать под Linux, используя C# - это платформа Uno
. Вот про нее говорится на сайте разработчика.
https://platform.uno/ - Платформа пользовательского интерфейса с открытым исходным кодом для создания приложений с одной кодовой базой для Windows, iOS, Android, WebAssembly, macOS и Linux
Зрелый, готовый к применению фреймворк и даже, наверное, платформа.
MAUI
Изначально предполагалось, что MAUI даст возможность писать код на .NET, а значит и на C# и для платформы linux. MAUI станет следующей вехой в развитии Xamarin.Forms
, которые после выхода MAUI должны были перейти в режим "поддержки и исправления ошибок". То есть MAUI была призвана заменить Xamarin.Forms
.
Но, когда вышла финальная версия MAUI, оказалось, что поддержки Linux просто нет. Более того, насколько я понял, поддержка платформы Linux не планируется. Печально...
Но мир не без добрых людей. Существует .NET Multi-platform App UI (.NET MAUI), которая создана и поддерживается сообществом разработчиков и доступна в виде Open-source. Вот что про нее написано в github.com:
NET Multi-platform App UI (.NET MAUI) — это кроссплатформенная платформа для создания собственных мобильных и классических приложений на C# и XAML. Используя .NET MAUI, вы можете разрабатывать приложения, которые могут работать на Android, iOS, iPadOS, macOS и Windows из одной общей кодовой базы.
Blazor
Это, как я уже говорил ранее, не совсем GUI. Это уже другой тип разработки основанный на Web-разработке. То есть когда есть frontend и backend
Заключение
В качестве заключения хочется ответить, что возможность писать для Linux на .NET платформе не ограничивается перечисленными мной вариантами. Существуют и другие менее распространенные способы, например, GtkSharp, Qml.Net, mono, ImGui.NET и даже ElectronJs (хотя это уже снова не .NET, а JavaScript).
Писать под Linux на NET можно! Выбирать вам!