Современные пользователи ожидают, что приложения будут работать одинаково хорошо на Windows, macOS, iOS и Android. Для разработчиков это означает необходимость создавать кроссплатформенные приложения, которые выглядят и функционируют одинаково на разных устройствах. Именно для этого Microsoft предлагает .NET MAUI (Multi-platform App UI) — мощный фреймворк, объединяющий опыт Xamarin.Forms и возможности .NET 9. В этой статье разберём полный цикл: от идеи до публикации готового приложения.
Что такое .NET MAUI
.NET MAUI — это кроссплатформенный фреймворк для создания приложений на C# и XAML. Он позволяет использовать единый код и общий UI для разных платформ:
– Windows
– macOS
– iOS
– Android
При этом разработчики могут подключать нативные API, использовать библиотеку Essentials для работы с устройством и расширять интерфейс под каждую платформу.
Планирование приложения: от идеи до архитектуры
Перед стартом важно определить:
1. Кто целевая аудитория приложения.
2. Какие платформы будут поддерживаться.
3. Какие API и нативные функции понадобятся (камера, геолокация, уведомления).
4. Архитектуру проекта (MVVM, MVU или Blazor Hybrid).
Совет: для кроссплатформенной логики удобно использовать MVVM, а для современных приложений с веб-контентом — Blazor Hybrid, который позволяет встраивать Razor-компоненты прямо в MAUI.
Создание проекта в Visual Studio
– Установите Visual Studio 2022/2025 с рабочей нагрузкой «.NET Multi-platform App UI».
– Создайте новый проект «.NET MAUI App».
Структура проекта уже готова:
– MainPage.xaml
и MainPage.xaml.cs
— основной экран.
– Platforms
— папки с кодом для каждой платформы.
– MauiProgram.cs
— точка входа приложения.
Разработка интерфейса
UI в .NET MAUI создаётся на XAML или C#. Например, простая страница:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
x:Class="MyApp.MainPage">
<VerticalStackLayout>
<Label Text="Добро пожаловать в .NET MAUI!"
FontSize="24"
HorizontalOptions="Center" />
<Button Text="Нажми меня"
Clicked="OnButtonClicked" />
</VerticalStackLayout>
</ContentPage>
Кнопки, списки, панели и другие элементы работают одинаково на всех платформах, но при этом сохраняют нативный вид.
Работа с платформенными API
Через .NET MAUI Essentials можно использовать встроенные возможности устройства:
– Датчики (акселерометр, гироскоп).
– Камера и галерея.
– Геолокация.
– Push-уведомления.
Например, получение текущего местоположения:
var location = await Geolocation.Default.GetLocationAsync();
if (location != null)
Console.WriteLine($"Широта: {location.Latitude}, Долгота: {location.Longitude}");
Интеграция с библиотеками
В .NET MAUI поддерживается NuGet, поэтому можно подключать популярные пакеты:
– SQLite для локальной базы данных.
– Newtonsoft.Json или System.Text.Json для сериализации.
– CommunityToolkit.Maui для готовых UI-компонентов.
Тестирование приложения
Разработчики могут запускать проект:
– на эмуляторе Android;
– на iOS-симуляторе (требуется macOS);
– на Windows или macOS напрямую.
Совет: используйте Hot Reload, чтобы изменения в XAML применялись сразу, без полной пересборки.
Оптимизация и отладка
– Анализируйте производительность с помощью Profiler в Visual Studio.
– Проверяйте память и утечки через встроенные средства диагностики.
– Для iOS и Android используйте «Release»-сборку, чтобы оценить реальную скорость.
Публикация приложения
1. Для Android создаётся APK или AAB, который можно загрузить в Google Play.
2. Для iOS — IPA, распространяемый через App Store.
3. Для Windows — MSIX через Microsoft Store.
4. Для macOS — .pkg или Mac App Store.
Преимущества .NET MAUI
– Единая кодовая база для 4 платформ.
– Поддержка нативных API.
– Быстрая разработка благодаря Hot Reload.
– Интеграция с экосистемой .NET и Visual Studio.
.NET MAUI — это мощный инструмент, который позволяет разработчикам создавать современные кроссплатформенные приложения, сохраняя при этом нативный опыт пользователей. От идеи до релиза весь процесс можно вести в Visual Studio, используя общий код, XAML-интерфейсы и богатый набор библиотек. Для бизнеса это означает сокращение затрат, а для программистов — удобство и скорость разработки.