NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания графического интерфейса (Виталий Липатов, OSSDEVCONF-2017) — различия между версиями

Материал из 0x1.tv

== Thesis ==

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

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

В составе SDK поставляется компилятор C\# с открытым исходным кодом из состава <tt>.NET Compiler Platform -- Roslyn</tt>.

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

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

Ключевым в <tt>.NET Core</tt> является то, что проект обязательно должен быть собран под <tt>.NET Core</tt>   отличие от Mono,
совместимого с <tt>.NET Framework</tt> и запускающего программы без пересборки), а также то, что пока отсутствует поддержка и
спецификации для графического интерфейса.

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


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


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

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

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

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

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

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

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


\item подсветка синтаксиса;
\item автодополнение с учётом языковых конструкций;
\item поддержка отладки;
\item интеграция с системами контроля версий    поддержка <tt>Git</tt> встроена.

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

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

Avalonia работает не только на десктопе (Linux, Windows, MacOS), но и на мобильных устройствах (Android, iOS). Фреймворк
имеет свой набор GUI-элементов, которые одинаково выглядят на всех системах.

Фреймворк пока что находится в alpha-версии, но он активно развивается и выглядит довольно перспективным решением для
создания кроссплатформенных графических приложений. Его важным преимуществом является сходство с WPF, вплоть до
использования тех же XAML-файл с описанием интерфейса, что упрощает портирование существующих WPF-приложений.



{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->


<references/>

[[Категория:OSSDEVCONF-2017]]

Версия 19:40, 3 октября 2017

Докладчик
Виталий Липатов.jpg
Виталий Липатов

Платформа .NET Core является кроссплатформенным аналогом .NET Framework на уровне библиотек базовых классов (BCL) .NET Framework. Она реализует спецификацию .NET Standard 2.0.

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

Видео

Презентация

NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf NET Core 2.0 как универсальная платформа разработки. Миграция с .NET Framework — среда разработки и альтернативные средства создания GUI.pdf

Thesis

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

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

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

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

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

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

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

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


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


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

Electron

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

Electron построен на основе Node.js и 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. Основные возможности:


\item подсветка синтаксиса; \item автодополнение с учётом языковых конструкций; \item поддержка отладки; \item интеграция с системами контроля версий — поддержка Git встроена.

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

Avalonia

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

Avalonia работает не только на десктопе (Linux, Windows, MacOS), но и на мобильных устройствах (Android, iOS). Фреймворк имеет свой набор GUI-элементов, которые одинаково выглядят на всех системах.

Фреймворк пока что находится в alpha-версии, но он активно развивается и выглядит довольно перспективным решением для создания кроссплатформенных графических приложений. Его важным преимуществом является сходство с WPF, вплоть до использования тех же XAML-файл с описанием интерфейса, что упрощает портирование существующих WPF-приложений.


Примечания и ссылки