Skip to content

Latest commit

 

History

History
36 lines (22 loc) · 3.74 KB

maui.md

File metadata and controls

36 lines (22 loc) · 3.74 KB

Multi-platform App User Interface (MAUI)

Полноценная поддержка появилась только в Visual Studio 2022 и .NET Core 6.

"Multi-platform App User Interface" устанавливается отдельным пунктом установщика Visual Studio. Требуется загрузить около 3 ГБ данных.

Создать проект можно используя один из предоставленных шаблонов приложений. Можно собрать приложение и использовать эмуляторы для iOS, Android. Собрать приложения можно также для Windows, Tizen и macOS Catalyst. Однако, образ ранее подготовленный для Android Studio, среда разработки запустить не смогла. Потребовалось скачать новый образ из сети.

При генерации приложения следует избегать использования имени MauiApp :-)

MAUI использует XAML и, таким образом, концептуально близок к WPF и Avalonia. Однако, в рамках проекта Avalonia разрабатываются свои собственные инструменты кросс-платформенной разработки, которые поддерживают Android и iOS. Стоит заметить, что в отличие от MAUI, Avalonia работает на большинстве дистрибутивов Linux.

Выбор между Avalonia и MAUI совсем не прост. На стороне MAUI:

  • официальная поддержка Microsoft (у Avalonia, похоже, спонсорская поддержка Micosoft)
  • доступ к Native API (не знаю, как это реализовано в Avalonia)
  • Hot Reload

Однако на стороне Avalonia:

  • лучшая поддержка Linux
  • Reactive Programming
  • Lightweight

Структура приложения близка к WPF:

  • существует файл "MauiProgram.cs" в котором осуществляется конфигурирование приложения MAUI. В частности, добавляются используемые шрифты
  • есть файл "AppShell.xaml", в котором, вероятно, определяется Routing
  • файл "App.xaml" определяет окно верхнего уровня, в котором определяются используемые ресурсы. Так же в "App.xaml.cs" создаётся MainPage из AppShell: MainPage = new AppShell();
  • "MainPage.xaml" и "MainPage.xaml.cs" определяют основную страницу приложения

Одна из сильных сторон MAUI - повторное использование ресурсов, см. StaticResource, ThemeResource, Binding.

В дополнительных главах (только online, в печатной книге они отсутствуют) книги "C# 10 and .NET 6. Modern Cross-Platform Development" by Mark J. Price в разделе, посвящённом MAIU есть разделы, посвящённые ObservableCollection и интерфейсу INotificationPropertyChanged. В книге есть несколько советов о том, как разрешить небезопасные соединение между приложением и сервером (поменять https на http). См.: ATS, UsesCleartextTraffic.

Исходные тексты MAUI доступны в репозитории dotnet/maui на GitHub.