WinUI 3 — Новая эра разработки под Windows

В календаре 8 марта, а я пишу эту статью.
Почему? — Потому, что WinUI 3 — это важно!

Предыстория

Для того, что бы понять, что из себя представляет WinUI 3 и какую глобальную проблему он решает, предлагаю окунуться в историю десктопной разработки под Windows:

История развития десктопной разработки под WindowsИстория развития десктопной разработки под Windows
  • Итак, на дворе 1995 год, и мы начинаем писать наш калькулятор на C++ и Win32. Win32 — самый низкоуровневый системный API, для работы с визуальным интерфейсом. Ниже только Windows Driver Model для драйверов.

  • 2002 год — наш калькулятор уже может быть написан на более высокоуровневой оболочке — WinForms (Windows Forms). Она создаёт обёртку над Win32 для более простого и удобного взаимодействия с системой. А за счёт .NET Framework и CLR, которые так же вышли в 2002 году, мы можем использовать целый букет из различный языков для разработки. В их числе были C#, С++, VB.Net, J# и другие.

  • WPF — наш ответ устаревшим технологиям. В конце 2006 года Microsoft презентуют WPF — обширный API-интерфейс для создания настольных графических программ, имеющих насыщенный дизайн и интерактивность. Новый подход включал в себя совершенно другую модель построения пользовательских приложений, основывающуюся на .NET Framework и DirectX. Вместе с выходом WPF у нас появляются следующие возможности: WEB-подобная модель компоновки, богатая модель рисования, анимации, поддержка аудио и видео, стили и шаблоны, декларативный пользовательский интерфейс, подход MVVM, и язык разметки XAML.

  • 2012 год — выход Windows 8. Очень много споров и дискуссий было на тему свежей ОС. Но самое интересное изменение, которое с ней случилось — выход WinRT или же Windows Runtime. Это именно то, почему у Windows присутствует 2 меню настроек: новое и панель управления. WinRT по существу является API, основанное на технологии COM. COM, в свою очередь, предполагал использование одних и тех же компонентов системы во многих местах одновременно. Например, PrintDialog — теперь единый компонент, к реальному состоянию которого можно получить доступ из любого места системы. Нам теперь не нужно загружать информацию о нём каждый раз при использовании, как это было с Win32.

  • 2016 — Universal Windows Platform или же UWP. Апогей унификации Windows. Продолжающая идею WinRT, UWP активно объединяет системные функции и компоненты под единым программным интерфейсом, который теперь может работать на всех устройствах с Windows 10 без изменений в коде! Но, это касается не только программных функций, но и визуальных компонентов. Так и появляется на свет WinUI 2 — единый визуальный интерфейс для всех приложений на Windows.

Что мы в итоге получаем?

Как результат — у нас есть мощная платформа, с унифицированным программным и визуальным интерфейсом. Наш стандартный калькулятор уже построен как UWP приложение (Исходный код Windows калькулятора можно найти в открытом доступе на github). Но, что-то всё равно не так…

Предпочтения разработчиков по выбору платформы за 2016 годПредпочтения разработчиков по выбору платформы за 2016 год

Опрос от компании Telerik за 2016 год показал, что сообщество разработчиков без явного энтузиазма брались использовать UWP, как основную платформу в своих новых проектах. Что же не так? А всё дело в унификации приложений для Windows. За счёт оборачивания их в различные новые API и Windows Runtime, разработчики потеряли возможность работать со старыми добрыми Win32 напрямую. Они, в свою очередь, предоставляют огромнейшие возможности для тонкой работы с системой. И тот список системных API, которые сейчас доступны из UWP приложений, кажется просто смешным. Ознакомиться с ним более детально можно здесь: Список системных API, доступных через UWP приложение

WinUI 3

Именно проблему недоступности системных API и будет решать новая версия WinUI. WinUI 3 Preview 4 уже находится в пре-релизе, а официальный релиз намечен на март. Но каким образом удастся получить доступ к системным API приложению, которое изначально задумывалось как работающее на WinRT и UWP API?

Всё просто: Необходимо оделить визуальную часть и среду выполнения. Ключом к этому стала платформа .NET:

Из чего появился .NET 5Из чего появился .NET 5

Что такое .NET?

  • Из блока предыстории можно узнать, что в 2002 году вышла Windows-ориентированная платформа для разработки ПО — .NET Framework. Она развивалась в плоть до 2019 года, когда была выпущена последняя версия — 4.8

  • Параллельно, с 2016 года начала развиваться новая модульная платформа для разработки программного обеспечения с открытым исходным кодом — .NET Core. Кроме того, она была кроссплатформенная.

  • И наконец — .NET 5. Это, выпущенная в 2020 году, единая платформа для разработки ПО. Она объединила в себе все преимущества .NET Framework, .NET Core и некоторых похожих платформ.

f157bcffab8ffab56a9fae1cbad79284.jpg

По заявлениям Microsoft, теперь это единственная платформа, в сторону которой будет развиваться компания.

Планы на развитие и поддержку платформы .NETПланы на развитие и поддержку платформы .NET

И теперь, имея единую программную платформу — .NET 5, компания Microsoft может воплотить идею с использованием унифицированного интерфейса, но при этом оставить возможность использовать удобные API: будь-то UWP API или Win32.

00958f435f1d25f09a69f21f685e5fb9.jpg

Это и является той золотой срединой, когда мы можем использовать современные, производительные визуальные компоненты вместе с функциональностью системных API.

Перспективы WinUI 3

По заявлениям самих Microsoft, на WinUI 3 и его последующие версии, у компании огромные планы. Для начала, уже в осеннем обновлении Windows мы сможем увидеть переход многих частей операционной системы на WinUI 3.

Xamarin, MAUI and WinUI 3?

1c346d51a25128eef7a2d5f3edd296d8.png

MAUI (Multi-platform App UI) — кроссплатформенная библиотека графического интерфейса. Является эволюцией Xamarin.Forms. Для Windows она будет работать именно через компоненты WinUI 3. Больше информации о MAUI: devblog.microsoft, github.

Uno Platform and WinUI 3?

6b98fc8b1f5f40793ac021fa161532e2.png

Uno Platform — это кроссплатформенный графический пользовательский интерфейс с открытым исходным кодом, который позволяет запускать код на основе WinUI и универсальной платформы Windows на iOS, macOS, Linux, Android и WebAssembly.

373b916ad9eb96a9deeb4f7aad572144.png

Команда разработчиков Uno Platform с первых дней анонсировала свою нацеленность на WinUI 3. А спустя 12 часов после выпуска WinUI 3 Preview 4, его поддержка уже была добавлена в Uno Platform. Больше информации об Uno Platform: platform.uno, github.

Будущее системных API

Что касается системных API, Microsoft не оставляют идею их унификации. Поэтому, сейчас в активной разработке находится Project Reunion. Это универсальная модульная оболочка, которая должно предоставить быстрый доступ ко всем Win32 и UWP API.

2d0bb920f31bb706ab50c4095024dd3b.jpg

Project Reunion будет очень тесно связан с WinUI 3. И уже сейчас находится в превью версии.

f0066e46f52845942d25a96d04fe1cb8.jpg

Больше информации о Project Reunion: docs.microsoft.com, github

© Habrahabr.ru