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

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

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

.NET MAUI supported platforms.

.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 (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 architecture diagram.

В приложении .NET MAUI вы пишете код, который в основном взаимодействует с API MAUI .NET (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 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 Single project.
  • Горячая перезагрузка .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 и просматривать изменения, отраженные в работающем приложении без повторной компиляции. Кроме того, состояние навигации и данные будут поддерживаться, что позволяет быстро выполнять итерацию в пользовательском интерфейсе без потери места в приложении.