Что такое .NET MAUI?
Мультиплатформенный пользовательский интерфейс приложений .NET (.NET MAUI) — это кроссплатформенная платформа для создания собственных мобильных и классических приложений с помощью C# и XAML.
С помощью .NET MAUI можно разрабатывать приложения, которые могут работать в Android, iOS, macOS и Windows из одной общей базы кода.
.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 для Mac Catalyst и библиотеки Пользовательского интерфейса Windows 3 (WinUI 3). Все эти платформы имеют доступ к одной библиотеке базовых классов .NET (BCL). Эта библиотека абстрагирует сведения о базовой платформе от кода. BCL зависит от среды выполнения .NET, чтобы предоставить среду выполнения для кода. Для Android, iOS и macOS среда реализуется с помощью Mono, реализация .NET-рантайма. На Windows, общеязыковая среда выполнения .NET Core , известная как CLR, обеспечивает выполнение.
Хотя BCL позволяет приложениям, работающим на разных платформах, совместно использовать общую бизнес-логику, различные платформы имеют различные способы определения пользовательского интерфейса для приложения, а также предоставляют различные модели для указания того, как элементы пользовательского интерфейса взаимодействуют и взаимодействуют. Вы можете создать пользовательский интерфейс для каждой платформы отдельно с помощью соответствующей платформы (.NET для Android, .NET для iOS, .NET для Mac Catalyst или WinUI 3), но этот подход требует поддержания базы кода для каждого отдельного семейства устройств.
.NET MAUI предоставляет единую платформу для создания пользовательских интерфейсов для мобильных и классических приложений. На следующей схеме показано высокоуровневое представление архитектуры приложения .NET MAUI:
В приложении .NET MAUI вы пишете код, который в основном взаимодействует с элементами управления .NET MAUI и уровнем API (1). Затем этот слой напрямую использует собственные 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.
- Горячая перезагрузка .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, которая позволяет изменять исходный код на управляемом языке во время выполнения приложения, без необходимости вручную приостанавливать или устанавливать точку останова. Затем изменения кода можно применить к работающему приложению без перекомпиляции.
.NET MAUI также включает поддержку горячей перезагрузки XAML, которая позволяет сохранять файлы XAML и просматривать изменения, отраженные в работающем приложении без повторной компиляции. Кроме того, состояние навигации и данные будут поддерживаться, что позволяет быстро вносить изменения в UI без потери места в приложении.