.NET Multi-platform App UI или сокращенно MAUI представляет кроссплатформенный фреймворк от компании Microsoft для создания нативных мобильных и десктопных приложений с использованием языка программирования C# и языка разметки XAML. С помощью .NET MAUI можно разрабатывать приложения под такие операционные системы как Android, iOS, macOS и Windows, используя при этом один и тот же код.
Первая версия MAUI вышла в мае 2022 года, далее в ноябре 2024 года вышли обновления для .NET 9. Однако стоит отметить, что сам фреймворк .NET Multi-platform App UI фактически представляет эволюцию другого фреймворка - Xamarin Forms, который имеет более чем 10-летнюю историю и который с 2016 года был куплен и развивался компанией Microsoft. Поэтому, имя опыт работы с Xamarin Forms, не составит больших проблем перейти на .NET MAUI.
Также стоит отметить, что .NET MAUI - это opensource-фреймворк, код которого можно найти в репозитории на github по адресу https://github.com/dotnet/maui
Зачем использовать .NET Multi-platform App UI, какие преимущества она несет? При разработке приложения сразу под несколько платформ (iOS, Android, Windows, macOS) разработчики сталкиваются со следующими трудностями:
разные платформы для разработки. Например, чтобы создавать приложения для iOS нам необходима соответствующая среда - Mac OS X и ряд специальных инструментов, типа XCode. А в качестве языка программирования выбирается Objective-C или Swift. Для Android мы можем использовать самый разный набор сред - Android Studio, Intellij IDEA, Eclipse и т.д. Но здесь для подавляющего большинства приложений применяется Java или Kotlin.
А для создания приложений под Windows используется Visual Studio, а в качестве языков - C#, F#, VB.NET, C++
Такой диапазон платформ, средств разработки и языков программирования не может положительно сказываться на сроках создания приложений, и, в конечном счете, на денежных средствах, выделяемых на разработку. Было бы очень эффективно иметь один инструмент, который позволял легко и просто создавать приложения сразу для всех платформ. И именно таким инструментом и является платформа MAUI.
Преимущества разработки на MAUI:
На момент написания данной статьи .NET Multi-platform App UI (.NET MAUI) официально поддерживает следующие платформы:
Кроме того, подсистема .NET MAUI Blazor часть выше поднимает планку поддерживаемых версий:
Также неофициально сообществом поддерживается Linux - проект maui-linux. Кроме того, компания Samsung осуществляет поддержку для ОС Tizen.
.NET MAUI объединяет API операционных систем Android, iOS, macOS и Windows в один единый API, который позволяет написать один общий код для всех поддерживаемых операционных систем и при необходимости добавлять для каждой отдельной платформы специфические для нее функциональности. Схематически работу .NET MAUI можно представить следующим образом:
.NET MAUI предоставляет единый фреймворк для создания приложений. Однако в процессе работы он опирается на ряд субплатформ, через которые идет взаимодействие с каждой отдельной операционной системой: .NET for Android, .NET for iOS, .NET for macOS и Windows UI 3 (WinUI 3). И в общем случае код приложения сначала обращается к платформе .NET MAUI, а та затем обращается к субплатформе для конкретной ОС. Хотя фреймворк также позволяет напрямую обращаться коду приложения к этим субплатформам.
Все эти субплатформы работают поверх библиотеки классов .NET Base Class Library (BCL). Эта библиотека позволяет абстрагироваться от деталей реализации конкретной платформы и зависит от среды выполнения .NET, в которой выполняется код. Для Android, iOS и macOS среду выполнения для приложения предоставляет фреймворк Mono (реализация .NET). На Windows среда выполнения предоставляется .NET CoreCLR.
Таким образом, разработчик может определить общую единую логику для приложения для каждой отдельной платформы. И также при необходимости может задействовать специфические для каждой платформы функциональности.
Разрабатывать приложения формально можно на Windows и MacOS. Однако если стоит задача разрабатывать приложения под iOS и MacOS, то для этого необходим MacOS.
В качестве среды разработки используется Visual Studio 2022 и выше. На MacOS в этом случае используется Visual Studio Code.
Для разработки на VS можете посмотреть статью на metanit, я же буду делать приложение испольуя VSC опираясь на официальную инструкцию от Microsoft