Что такое .NET MAUI?

NET Multi-Platform App UI (.NET MAUI) — это кросс-платформенная платформа для создания собственных мобильных и классических приложений с помощью C# и XAML.

С помощью .NET MAUI можно разрабатывать приложения, которые могут работать на Android, iOS, macOS и Windows из одной общей базы кода.

Поддерживаемые платформы .NET MAUI.

.NET MAUI — это эволюция Xamarin.Forms с открытым кодом, которая распространяется с мобильных приложений на настольные компьютеры, а элементы управления пользовательского интерфейса перестроены с нуля для повышения производительности и расширяемости. Если вы ранее использовали Xamarin.Forms для создания кроссплатформенных пользовательских интерфейсов, вы заметите много сходств с .NET MAUI. Однако между ними также есть некоторые различия. С помощью .NET MAUI можно создавать многоплатформенные приложения с помощью одного проекта, но при необходимости можно добавить исходный код и ресурсы для конкретной платформы. Одной из основных целей .NET MAUI является возможность реализовать в общей базе кода как можно больше логики и макета пользовательского интерфейса для приложения.

Для кого предназначен .NET MAUI

.NET MAUI предназначен для разработчиков, которые хотят:

  • Создание кроссплатформенных приложений на XAML и C# из одной общей базы кода в Visual Studio.
  • Совместное использование макета пользовательского интерфейса и разработка на различных платформах.
  • Совместное использование кода, тестов и бизнес-логики на разных платформах.

Принцип работы .NET MAUI

.NET MAUI объединяет API-интерфейсы Android, iOS, macOS и Windows в единый API, который предоставляет разработчикам возможность выполнять однократную запись в любом месте, обеспечивая дополнительный доступ к каждому аспекту каждой собственной платформы.

.NET 6 или более поздней версии предоставляет ряд платформенных платформ для создания приложений: .NET для Android, .NET для iOS, .NET для macOS и библиотеку пользовательского интерфейса Windows 3 (WinUI 3). Все эти платформы имеют доступ к одной и той же библиотеке базовых классов .NET (BCL). Эта библиотека абстрагирует сведения о базовой платформе от кода. BCL зависит от среды выполнения .NET, чтобы предоставить среду выполнения для кода. Для Android, iOS и macOS среда реализуется mono, реализацией среды выполнения .NET. В Windows .NET CoreCLR предоставляет среду выполнения.

Хотя BCL позволяет приложениям, работающим на разных платформах, совместно использовать общую бизнес-логику, различные платформы имеют разные способы определения пользовательского интерфейса для приложения и предоставляют различные модели для указания способа взаимодействия и взаимодействия элементов пользовательского интерфейса. Вы можете создать пользовательский интерфейс для каждой платформы отдельно с помощью соответствующей платформы (.NET для Android, .NET для iOS, .NET для macOS или WinUI 3), но этот подход требует поддерживать базу кода для каждого отдельного семейства устройств.

.NET MAUI предоставляет единую платформу для создания пользовательских интерфейсов для мобильных и классических приложений. На следующей схеме показано общее представление архитектуры приложения .NET MAUI:

Схема архитектуры .NET MAUI.

В приложении .NET MAUI вы пишете код, который в основном взаимодействует с API .NET MAUI (1). Затем .NET MAUI напрямую использует собственные API платформы (3). Кроме того, при необходимости код приложения может напрямую использовать API-интерфейсы платформы (2).

Приложения .NET MAUI можно создавать на ПК или Mac и компилировать в собственные пакеты приложений:

  • Приложения Android, созданные с помощью .NET MAUI, компилируются из C# на промежуточный язык (IL), который затем компилируется JIT в собственную сборку при запуске приложения.
  • Приложения iOS, созданные с помощью .NET MAUI, полностью заранее скомпилированы из C# в собственный код сборки ARM.
  • В приложениях macOS, созданных с помощью .NET MAUI, используется Mac Catalyst— решение apple, которое переносит приложение iOS, созданное с помощью UIKit, на рабочий стол и дополняет его дополнительными API AppKit и платформы по мере необходимости.
  • Приложения Для Windows, созданные с помощью .NET MAUI, используют библиотеку Windows UI 3 (WinUI 3) для создания собственных приложений, предназначенных для рабочего стола Windows. Дополнительные сведения о WinUI 3 см. в статье Библиотека пользовательского интерфейса Windows.

Примечание

Для создания приложений для iOS и macOS требуется компьютер Mac.

Что предоставляет .NET MAUI

.NET MAUI предоставляет коллекцию элементов управления, которые можно использовать для отображения данных, запуска действий, указания действий, отображения коллекций, выбора данных и многого другого. В дополнение к коллекции элементов управления .NET MAUI также предоставляет:

  • Сложный механизм макета для разработки страниц.
  • Несколько типов страницы для создания полнофункциональных типов навигации, таких как панели.
  • Поддержка привязки данных для более элегантных и удобных для поддержки шаблонов разработки.
  • Возможность настраивать обработчики для улучшения способа представления элементов пользовательского интерфейса.
  • Кроссплатформенные API для доступа к собственным функциям устройств. Эти API позволяют приложениям получать доступ к функциям устройства, таким как GPS, акселерометр, а также состояния батареи и сети. Дополнительные сведения см. в статье Кроссплатформенные API для функций устройств.
  • Кроссплатформенная графическая функция, которая предоставляет холст рисования, поддерживающий рисование и рисование фигур и изображений, операции создания и преобразования графических объектов.
  • Единая система проектов, использующая мультинацеливание для android, iOS, macOS и Windows. Дополнительные сведения см. в разделе Отдельный проект .NET MAUI.
  • Горячая перезагрузка .NET, чтобы вы могли изменять XAML и управляемый исходный код во время работы приложения, а затем наблюдать за результатом изменений без перестроения приложения. Дополнительные сведения см. в разделе Горячая перезагрузка .NET.

Кроссплатформенные API для функций устройств

.NET MAUI предоставляет кроссплатформенные API для собственных функций устройств. Ниже приведены примеры функциональных возможностей ,предоставляемых .NET MAUI для доступа к функциям устройства.

  • Доступ к датчикам, таким как акселерометр, компас и гироскоп на устройствах.
  • Возможность проверять состояние сетевого подключения устройства и обнаруживать изменения.
  • Укажите сведения об устройстве, на котором выполняется приложение.
  • Копирование и вставка текста в системный буфер обмена между приложениями.
  • Выберите один или несколько файлов на устройстве.
  • Безопасное хранение данных в виде пар "ключ-значение".
  • Используйте встроенные механизмы преобразования текста в речь для чтения текста с устройства.
  • Инициируйте потоки проверки подлинности на основе браузера, которые прослушивают обратный вызов для определенного зарегистрированного URL-адреса приложения.

Один проект

Один проект .NET MAUI использует интерфейс разработки для конкретной платформы, который обычно встречается при разработке приложений, и абстрагирует их в один общий проект, предназначенный для Android, iOS, macOS и Windows.

Единый проект .NET MAUI обеспечивает упрощенную и согласованную кроссплатформенную разработку независимо от целевых платформ. Отдельный проект .NET MAUI предоставляет следующие возможности:

  • Один общий проект, предназначенный для Android, iOS, macOS и Windows.
  • Упрощенный выбор целевого объекта отладки для запуска приложений .NET MAUI.
  • Общие файлы ресурсов в рамках одного проекта.
  • Один манифест приложения, указывающий заголовок, идентификатор и версию приложения.
  • Доступ к API-интерфейсам и средствам для конкретной платформы при необходимости.
  • Одна кроссплатформенная точка входа в приложение.

Один проект .NET MAUI включается с использованием нескольких нацеливание и проектов в стиле пакета SDK. Дополнительные сведения об отдельном проекте .NET MAUI см. в разделе Отдельный проект .NET MAUI.

Горячая перезагрузка

.NET MAUI включает поддержку горячей перезагрузки .NET, которая позволяет изменять управляемый исходный код во время работы приложения без необходимости вручную приостанавливать или переходить к точке останова. Затем изменения кода можно применить к работающему приложению без перекомпиляции.

.NET MAUI также поддерживает горячую перезагрузку XAML, которая позволяет сохранять XAML-файлы и просматривать изменения, отраженные в работающем приложении, без перекомпиляции. Кроме того, будут поддерживаться состояние и данные навигации, что позволяет быстро выполнять итерацию по пользовательскому интерфейсу без потери места в приложении.