Платформа .NET Core 2.0 в Linux: миграция, разработка, графический интерфейс
LVEE Winter 2018
Платформа .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