.NET Core GUI
Графический интерфейс для приложения на .NET Core может быть реализован следующими способами:
- Создание приложения в модели ASP.NET Core и отображения клиенту интерфейса через произвольный браузер;
- Использование Electron для отображения интерфейса. Это придаст приложению свойства десктопности (отдельность в панели задач, нахождение в трее при необходимости, взаимодействие с операционной системой);
- Использование Avalonia (свободный межплатформенный GUI для .NET);
- Использование проекта electron-edge, выполняющего .NET и Node.js в одном процессе в Electron. На данный момент проект поддерживает только старую версию .NET Core 1.0 и не рассматривается.
- Использование связки с одной из существующих библиотек:
- Qt
- libui, реализующей GUI нативными средствами на каждой платформе (похожа на упрощённый wxWidgets):
Avalonia
Avalonia – свободный кроссплатформенный GUI-фреймворк для .NET, способный работать под .NET Core, который доступен под Linux. Avalonia во многом похож на WPF, использует XAML и подразумевает использование MVVM-архитектуры приложений, но при этом не привязан к Windows-платформе и Microsoft. Avalonia работает не только на десктопе (Linux, Windows, MacOS), но и на мобильных устройствах (Android, iOS). Фреймворк имеет свой набор GUI-элементов, которые одинаково выглядят на всех системах.
Фреймворк пока что находится в alpha-версии, но он активно развивается и выглядит довольно перспективным решением для создания кроссплатформенных графических приложений. Его важным преимуществом является сходство с WPF, вплоть до использования тех же XAML-файл с описанием интерфейса, что упрощает портирование существующих WPF-приложений.
Ссылки
SpaceVIL
https://spvessel.com/ SpaceVIL основан на OpenGL и кроссплатформенной библиотекой GLFW. Особенности — высокая производительность и идентичность поддержки как dotnet, так и jvm.
Eto.Forms
https://github.com/picoe/Eto A cross platform desktop and mobile user interface framework Похож по на gtk но с уклоном на простоту WinForms. Пытается определить платформу и в зависимости от этого(подобно авалония) выбирает графическую библиотеку (gtk2, gtk, WinForms и т.д.).
GtkSharp
GtkSharp is a C# wrapper for Gtk and its related components. The component list includes the following libraries: glib, gio, cairo, pango, atk, gdk.
Target framework Target Gtk Version Extra notes
Настройка рабочего места .Net Core разработчика в Alt Linux
Многие разработчики и пользователи с насторожённостью относятся к Linux и ко всему, что с ним связано. Причина такого отношения – недостаточная осведомленность. Также распространено мнение, что Linux и ПО для него разрабатывается некими энтузиастами, которые создают ПО исключительно для решения своих небольших задач и такое ПО не подходит для использования в серьезных коммерческих проектах. На самом деле Linux дистрибутивы развивается и поддерживаются крупными организациями, которые зарабатывают на ОС Linux опосредовано, за счет оказания дополнительных (облачных и не только) услуг. Вспомним Canonical и их ОС Ubuntu, Red Hat с одноименным дистрибутивом.
В экосистеме Linux имеется множество специализированных программ для пользователей «среднего» и «продвинутого» уровня, многие из них прежде всего рассчитаны на ИТ-специалистов, поскольку продолжительное время Linux использовался в качестве надежной серверной ОС и ОС для встраиваемого оборудования. Для Linux пока еще не хватает приложений для так называемых «просьюмеров» — пользователей-непрофессионалов, которые покупают программы профессионального уровня (Adobe Premiere, Final Cut Pro, Photoshop, CAD-системы и прочие), но ситуация постепенно изменяется и производители ПО начинают выпускать версии своих профессиональных приложений для Linux. Для разработчиков на Linux уже в настоящее время открыты огромные возможности, начиная от набора всевозможных специализированных инструментов, которые при желании можно доработать для своих нужд, до различных удобных (и не очень) IDE для работы с разными языками программирования.
В данной статье рассмотрим вариант быстрой настройки рабочего места разработчика .Net core на Alt Linux Workstation.
Развертывание Alt Linux
В качестве системы был выбран Alt Linux Workstation 9.0, прежде всего, чтобы учесть вектор развития в сторону импортозамещения. Вы можете использовать тот дистрибутив, который вам будет наиболее знаком.
На официальном сайте Microsoft представлен список поддерживаемых дистрибутивов Linux и их версий: https://docs.microsoft.com/ru-ru/dotnet/core/install/linux.
Дистрибутив был скачан с помощью торрент-треккера, файлы для треккера можно взять на официальном сайте https://torrent.altlinux.org/.
При развертывании ОС был приятно удивлен, т.к. действий от пользователя требуется минимум, достаточно выполнить ряд простых шагов. Установка выполняется быстро, интуитивно понятно, практически не отличается развёртывания ОС Windows:
1. Выполнение языковой настройки.
2. Укажите региональные настройки.
3. Выполните разметку диска.
На этом пункте необходимо остановиться и подумать, какие разделы и для чего нам будут нужны.
Мы планируем выполнять разработку, при этом наша разработка не должна влиять на ОС, поэтому примем, что разработку мы будем вести только в домашнем каталоге пользователя, а домашний каталог (каталог /home) вынесем на отдельный раздел, чтобы мы ни при каких обстоятельствах мы не могли занять дисковое пространство, необходимое для ОС. Во многих статьях в Интернет рекомендуют вынести каталог /var на отдельный раздел, т.к. в этом каталоге хранится дополнительное установленное ПО и лог-файлы приложений. В нашем случае, мы не знаем, сколько нам потребуется места для /var, будем считать, что выделяемого пространства под систему и приложения мы заложили достаточно, поэтому ограничимся только вынесением каталога /home на отдельный раздел.
Выберем ручную настройку разделов:
Создадим новую таблицу разделов:
Не забывайте про раздел SAWP, этот раздел необходим для хранения дампов виртуальной памяти приложений, обычно примерно вдвое превосходящий по размеру объём оперативной памяти. По данному разделу есть неплохая статья, на рекомендации по которой можно ориентироваться: https://liberatum.ru/e/linux-optimal-swap-size.
4. Выберем состав необходимого ПО. Оставим только нужное.
5. Дождаться завершения установки ОС.
6. Подтвердить установку загрузчика Linux на основную загрузочную запись диска.
7. Выполнить настройку сетевого адаптера.
В данном случае оставим все по умолчанию. При разворачивании на вашем рабочем месте, необходимо уточнить сетевые настройки у системных инженеров вашей компании. В любом случае сетевые настройки можно изменить после развертывания ОС.
8. После настройки учетных записей, установка ОС будет завершена.
Разворачивание инструментария .Net core
Прежде всего необходимо установить обновления ОС. Все действия по установке и настройке системы будем выполнять под учетной записью root (суперпользователь ОС, обладающий максимальными правами).
Запускаем эмулятор терминала Konsole (из комплекта поставки) и начинаем выполнять настройку рабочего места.
[user@host-15 ~]$ su Password: ****** [root@host-15 ~]$ apt-get update [root@host-15 ~]$ apt-get dist-upgrade
Для разработки на .Net core потребуется установить мета-пакет dotnet и SDK-пакет dotnet-sdk:
[root@host-15 ~]$ apt-get install dotnet dotnet-sdk
Пакеты разработки установлены, можно начинать создавать первую программу.
Под обычным пользователем перейдем в домашний каталог пользователя и создадим специальный каталог для разработки /projects.
[user@host-15 ~]$ mkdir /home/user/projects
Перейдем в каталог для проектов и создадим первое консольное приложение (проект).
[user@host-15 ~]$ cd /home/user/projects [user@host-15 projects]$ dotnet new console –o HelloWorld
После выполнения команды, был сформирован каталог с консольным приложением. Внутри каталога располагается файл Program.cs, в котором можно увидеть исходный код нашего тестового проекта.
Для того, чтобы скомпилировать и выполнить проект, необходимо перейти в каталог проекта и выполнить команду dotnet run.
[user@host-15 projects]$ cd HelloWorld [user@host-15 HelloWorld]$ dotnet run Hello World! [user@host-15 HelloWorld]$
После выполнения команды в папке bin/Debug/netcore3.1/ будет сформирован исполняемый файл приложения, которое можно запустить, как любой другой исполняемый файл в Linux:
[user@host-15 HelloWorld]$ cd bin/Debug/netcore3.1 [user@host-15 netcore3.1]$ ./HelloWorld Hello World! [user@host-15 netcore3.1]$
Развертывание редактора Visual Studio Code
Для удобства ведения разработки необходимо развернуть специализированное IDE для работы с C#. Специализированое IDE позволит повысить удобство разработки и значительно сократить время, требуемое на разработку за счет автоматических подстановок элементов кода и подсказок. Будем использовать специальный инструмент Visual Studio Code, который рекомендуется Microsoft для работы с .Net core.
Для Alt Linux инструмент Visual Studio Code поставляется вместе с пакетом code.
[root@host-15 ~]$ apt-get install code
После установки пакета, в системе появится редактор Visual Studio Code (Text Editor), который можно запустить из меню приложений:
Для работы с C# в Visual Studio Code необходимо установить расширение C# for Visual Studio Code, которое включает в себя инструменты для удобной разработки на .Net core, подсветку синтаксиса для C#, а также обеспечивает поддержку отладки .Net core. Подробнее про расширение можно почитать на странице этого расширения https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp.
Установку расширения можно выполнить прямо в редакторе:
Запустим IDE и откроем папку нашего проекта.
В редакторе вы можете быстро переключаться между файлами проекта, создавать новые файлы проекта и папки.
На вкладке TERMINAL удобно вызывать процесс сборки и выполнения приложения.
Вместо заключения
Как видим процесс подготовки рабочего места разработчика .net core на Linux довольно простой, вся настройка по данной статье занимает примерно 45 мин, при этом основное время приходится время установки ОС Linux.
Также мы разработали тестовую программу и запустили ее в рамках редактора Visual Studio Code.
В следующей статье попробуем написать простой микросервис, который сможет выполнять некоторые полезные действия.