Пишем GUI на .NET для Linux

Полезности | создано: 18.09.2022 | опубликовано: 18.09.2022 | обновлено: 13.01.2024 | просмотров: 17160

Довольно часто возникает вопрос "как можно писать приложения для 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 можно! Выбирать вам!

Поблагодарить

Хотите тоже получать донаты? Тогда заходите на boosty.to и регистрируйтесь!

Кстати, я использую хостинг reg.ru. Подключайся с промокодом 9A17-953A-8591-CF98.