Что такое .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 UI 3 (WinUI 3). Все эти платформы имеют доступ к одной и той же библиотеке базовых классов .NET 6 (BCL). Эта библиотека абстрагирует сведения о базовой платформе от кода. Список BCL зависит от среды выполнения .NET, чтобы предоставить среду выполнения для кода. Для Android, iOS и macOS среда реализуется Mono, реализацией среды выполнения .NET. В Windows .NET CoreCLR предоставляет среду выполнения.

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

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

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

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

Приложения MAUI .NET можно создавать на ПК или 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 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.
  • Упрощенный выбор целевого объекта отладки для запуска приложений MAUI .NET.
  • Общие файлы ресурсов в рамках одного проекта.
  • Отдельный манифест приложения, указывающий название, идентификатор и версию приложения.
  • Доступ к API и средствам для конкретной платформы при необходимости.
  • Одна кроссплатформенная точка входа приложения.

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

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

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

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