International conference of developers
and users of free / open source software

Платформа .NET Core 2.0 в Linux: миграция, разработка, графический интерфейс

Виталий Липатов, St. Petersburg, Russian Federation

LVEE Winter 2018

.NET Core platform is a cross-platform analogue of .NET Framework on a base class library (BCL) level. It implements the .NET Standard 2.0 specification. This report is a review of development tools, development environment options and methods of creating graphical interfaces that are aimed at creating cross-platform user applications.

Платформа .NET Core

По сути .NET Core является повторной разработкой .NET Framework, но имеющей открытую лицензию (MIT) и работающей на всех платформах (Windows, Linux, MacOS). Обеспечивается совместимость c .NET Framework на уровне базовых классов (BCL), согласно стандарту .NET Standard 2.0, к которому, по замыслу архитекторов Microsoft, должна стремиться любая существующая реализация .NET.

На сегодняшний день .NET Core претендует на то, чтобы быть полноценной платформой промышленного уровня.

В составе SDK поставляется компилятор C# с открытым исходным кодом из состава .NET Compiler Platform — Roslyn.

Как и полагается современной платформе, имеется менеджер пакетов (Nuget), и репозиторий пакетов.

Платформа очень быстро развивается (сотни коммитов различных разработчиков каждый день), появляются и исчезают проблемы, меняется схема сборки, учитываются нюансы различных дистрибутивов Linux.

К сожалению, во многом платформа выглядит чуждой на Linux-системах.

Главные моменты: проект обязательно должен быть собран под .NET Core (в отличие от Mono, совместимого с .NET Framework и запускающего его программы без пересборки), а также отсутствует встроенная поддержка графического интерфейса.

Отдельно графический интерфейс может быть реализован следующими способами:

  • Создание приложения в модели ASP.NET Core и отображения клиенту интерфейса через произвольный браузер;
  • Использование Electron для отображения интерфейса. Это придаст приложению свойства десктопности (отдельность в панели задач, нахождение в трее, взаимодействие с операционной системой);
  • Использование Avalonia (свободный межплатформенный GUI для .NET);
  • Использование экзотичного проекта electron-edge, выполняющего .NET и Node.js в одном процессе в Electron. На данный момент проект поддерживает только старую версию .NET Core 1.0 и не рассматривается.

Среды разработки и средства разработки GUI

Electron

Electron – это фреймворк для создания нативных приложений с использованием веб-технологий. Electron позволяет использовать браузерный движок в качестве основы для построения нативных приложений с GUI, добавляя к нему набор своих API, недоступных в обычном браузере.

Electron построен на основе Node.js (который в свою очередь использует v8) и Chromium. Приложение на Electron имеет основной процесс (Main), который является точкой входа в приложение, и по меньшей мере один процесс браузера (Renderer), в котором производится отрисовка GUI.

Main – это Node.js-приложение, которое управляет окнами (Renderer), а также имеет доступ к API, связанным с системным GUI: строка меню, контекстное меню, работа с треем, диалоги, модальные окна и т. д. В Main также доступны встроенные модули Node.js (fs, http, net…) и сторонние, устанавливаемые через пакетный менеджер npm.

В Renderer загружается HTML-страница, таблицы стилей и JS-скрипты. От обычного браузера отличается наличием доступа к модулям из Node.js и возможность обмена сообщениями с Main при помощи встроенного в Electron механизма IPC.

Примером реального приложения, написанного на Electron, является редактор Visual Studio Code.

Visual Studio Code

VS Code – это кроссплатформенный редактор для кода с открытым исходным кодом от компании Microsoft, не имеющий ничего общего с небезызвестной IDE Visual Studio.

VS Code позиционируется как редактор, но по сути это нечто среднее между редактором и IDE. Основные возможности:

  • подсветка синтаксиса;
  • автодополнение с учётом языковых конструкций;
  • поддержка отладки;
  • интеграция с системами контроля версий – поддержка Git встроена.
    VS Code не завязан на какую-либо конкретную платформу или язык, а благодаря механизму плагинов можно добавлять поддержку различных языков и дополнительных инструментов. Поддержка JavaScript и TypeScript есть «из коробки». Редактор хорошо интегрируется со всеми популярными языками: C/C++, Java, Python, C#, Ruby, PHP, Go.

Avalonia

Avalonia – свободный кроссплатформенный GUI-фреймворк для .NET Framework / .NET Core. Avalonia во многом похож на WPF, который реализован для Windows, использует XAML и подразумевает использование MVVM-архитектуры приложений, но при этом не привязан к Windows-платформе и Microsoft.

Avalonia работает не только на десктопе (Linux, Windows, MacOS), но и на мобильных устройствах (Android, iOS). Фреймворк имеет свой набор GUI-элементов, которые одинаково выглядят на всех системах.
Фреймворк пока что находится в alpha-версии, но он активно развивается и выглядит довольно перспективным решением для создания кроссплатформенных графических приложений. Его важным преимуществом является сходство с WPF, вплоть до использования тех же XAML-файл с описанием интерфейса, что упрощает портирование существующих WPF-приложений.

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Back