.NET MAUI — що це таке, архітектура та кросплатформна розробка

Автор: IT Sectr Опубліковано: 2026-05-01 Час читання: 8 хв

.NET MAUI — це кросплатформний фреймворк Microsoft для створення нативних додатків на C# та XAML, випущений у 2022 році разом з .NET 6. За даними Microsoft .NET MAUI Documentation, 2024, MAUI підтримує iOS, Android, Windows, macOS та Tizen, об'єднуючи їх в єдиний проект зі спільною кодовою базою. Фреймворк є прямим наступником Xamarin.Forms.

Головне

  • .NET MAUI — наступник Xamarin.Forms, вбудований у .NET 6+ без окремого SDK
  • Єдиний Single Project замінює три окремі проекти платформ
  • XAML та C# використовуються для декларативної побудови UI та бізнес-логіки
  • Handlers замінили застарілі рендерери Xamarin.Forms для платформної абстракції
  • Підтримка 5 платформ: iOS, Android, Windows, macOS, Tizen

Що таке .NET MAUI

.NET MAUI (Multi-platform App UI) — це еволюція Xamarin.Forms, перероблена з нуля під .NET 6+. На відміну від Xamarin.Forms, який вимагав окремі проекти для кожної платформи, MAUI використовує єдину структуру зі спільним файлом .csproj та платформними папками Platforms/iOS, Platforms/Android, Platforms/Windows та Platforms/MacCatalyst. Перший стабільний реліз MAUI відбувся у травні 2022 року.

Ключова відмінність .NET MAUI від попередника — повна інтеграція з .NET 8 BCL (Base Class Library). Розробники отримують доступ до System.Text.Json, System.Net.Http, System.Linq, System.IO та інших API безпосередньо без додаткового SDK. Xamarin.Forms використовував .NET Standard 2.0 для спільної логіки, що обмежувало доступ до нових можливостей платформи .NET.

За даними Microsoft Build 2024, .NET MAUI використовується в 40 000+ додатках в App Store та Google Play. Серед відомих проектів — UPS Mobile, The Weather Channel та Siemens Teamcenter. Microsoft активно розвиває MAUI в рамках .NET 9, запланованого на листопад 2024 року.

Історія та походження .NET MAUI

Анонс .NET MAUI відбувся на Microsoft Build 2020 як частина стратегії .NET unification. Microsoft об'єднала .NET Core, Mono та .NET Framework в єдину платформу .NET 5+. Xamarin.Forms став основою для MAUI, але кодова база була повністю переписана: застарілі API видалені, рендерери замінені на Handlers, DependencyService замінено на DI-контейнер.

Версія .NET MAUI 8 (листопад 2023) додала підтримку Native AOT, покращену продуктивність CollectionView, Blazor Hybrid (вбудовування Blazor-компонентів у MAUI-додаток) та нове мапування шрифтів. .NET MAUI 9 (2024) включає підтримку C# 12, покращену інтеграцію з WinUI 3 та macOS Sonoma, а також новий Drag & Drop API для всіх платформ.

Відмінність .NET MAUI від Xamarin.Forms

Перша відмінність — єдиний додаток. У Xamarin.Forms для iOS та Android потрібно було два окремі проекти в одному рішенні. У .NET MAUI один проект з платформними папками. Це спрощує навігацію по коду, управління залежностями та CI/CD-конвеєри. Файл .csproj використовує формат SDK-style з TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.

Друга відмінність — архітектура рендерингу через Handlers замість рендерерів. У Xamarin.Forms кожен елемент (Button, Label) мав свій клас Renderer, який створював нативний контрол. Для кастомізації вимагався Custom Renderer. У MAUI Handler — це легкий об'єкт, який мапить абстрактний елемент на нативний контрол та підтримує Property Mappers для оновлення властивостей без перестворення контрола.

Третя відмінність — єдиний DI-контейнер Microsoft.Extensions.DependencyInjection. Xamarin.Forms використовував DependencyService для реєстрації платформних реалізацій. MAUI вбудовує DI в ядро фреймворку: сервіси реєструються в MauiAppBuilder, контролери отримують залежності через конструктор. Це спрощує тестування та слідує сучасним практикам .NET.

Архітектура .NET MAUI

Архітектура .NET MAUI заснована на багатошаровій моделі. Нижній шар — .NET BCL та Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). Середній шар — Microsoft.Maui.dll з ядром фреймворку: Handlers, Layout, Graphics, Controls. Верхній шар — додаток розробника з XAML-сторінками, ViewModel та сервісами.

Single Project та Multi-Targeting

Single Project — це ключова архітектурна особливість .NET MAUI. Всі файли розділені на три категорії: спільний код (Shared), платформний код (Platforms) та ресурси (Resources). Multi-targeting в .csproj вказує, для яких платформ збирається додаток. Кожна платформа компілює тільки свою папку Platforms та спільний код.

Платформний код розміщується в умовних папках. Platforms/Android містить MainActivity.cs, MainApplication.cs та AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist та Entitlements.plist. Platforms/Windows — Package.appxmanifest та App.xaml. Для умовної компіляції в коді використовуються директиви #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.

XAML та MVVM у .NET MAUI

XAML — декларативна мова розмітки, успадкована від Xamarin.Forms та WPF. У .NET MAUI XAML використовується для опису сторінок (ContentPage), макетів (VerticalStackLayout, Grid, FlexLayout), елементів (Label, Entry, Button, Image) та контролів (CollectionView, CarouselView). XAML компілюється у BAML-формат на етапі збірки.

MVVM-патерн реалізується через CommunityToolkit.Mvvm — бібліотеку від Microsoft з відкритим кодом. Атрибут [ObservableProperty] генерує INotifyPropertyChanged-властивості, [RelayCommand] створює команди з методів. Source Generator CommunityToolkit.Mvvm 8.2 трансформує partial class ViewModel, генеруючи ObservableObject без Reflection. Це прискорює Binding на 30% порівняно з ручною реалізацією.

Приклад додатку на .NET MAUI

csharp
using Microsoft.Maui;
using Microsoft.Maui.Controls;

namespace MauiApp;

public class MainPage : ContentPage
{
    public MainPage()
    {
        Title = "MAUI App";
        
        Content = new VerticalStackLayout
        {
            Spacing = 12,
            Padding = new Thickness(16),
            Children =
            {
                new Label
                {
                    Text = "Hello, .NET MAUI!",
                    FontSize = 24,
                    FontAttributes = FontAttributes.Bold
                },
                new Button
                {
                    Text = "Натисни мене",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Привіт", "Світ", "OK"))
                }
            }
        };
    }
}

Платформи та підтримка

.NET MAUI підтримує 5 платформ: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) та Tizen 6.5+. Кожна платформа використовує свій набір контролів та API. iOS використовує UIKit через Mac Catalyst, Android — AndroidX через Xamarin.Android, Windows — WinUI 3, macOS — AppKit через Mac Catalyst.

На iOS та Android MAUI використовує ті ж механізми рендерингу, що й Xamarin.Forms — нативні UI-контроли. Однак Handlers забезпечують більш гнучку кастомізацію. Для платформного налаштування Button на iOS використовується OnPlatform<Button> з PlatformConfiguration.iOS. Для Windows MAUI використовує WinUI 3 — сучасний UI-фреймворк від Microsoft з підтримкою Fluent Design System.

macOS підтримка додана через Mac Catalyst — технологію Apple, яка запускає UIKit-додатки на Mac. Це дозволяє перевикористовувати 100% iOS-коду MAUI для macOS-версії додатку. Для специфічних Mac-функцій (Menu Bar, Touch Bar) MAUI надає платформні API через Mac Catalyst та NSView-обгортки.

Tizen — платформа Samsung для Smart TV, смартфонів та розумних годинників. Підтримка Tizen у .NET MAUI реалізована через Samsung Tizen .NET. MAUI-додатки компілюються для Tizen через Samsung-біндинги TizenFX. Однак Tizen не є пріоритетною платформою Microsoft — оновлення для неї виходять із затримкою 1–2 місяці.

ПлатформаМінімальна версіяUI-фреймворкСтатус
iOSiOS 15.0UIKit (Mac Catalyst)Стабільний
AndroidAPI 21 (5.0)AndroidX / Material 3Стабільний
WindowsWin 10 1809WinUI 3 / Fluent DesignСтабільний
macOSmacOS 12.0AppKit (Mac Catalyst)Стабільний
TizenTizen 6.5TizenFX / SamsungДодатково

Переваги .NET MAUI

Єдина кодова база — .NET MAUI скорочує обсяг дублювання коду. Один проект на C# та XAML компілюється під 5 платформ, забезпечуючи до 95% спільного коду для додатків з простим UI. Бізнес-логіка, сервіси, моделі даних та HTTP-клієнти знаходяться в спільному коді. Тільки платформні фічі (камера, геолокація, біометрія) вимагають окремих реалізацій через DI.

Продуктивність .NET MAUI вища, ніж у Xamarin.Forms. Handlers скорочують накладні витрати на рендеринг: тести Microsoft показують скорочення часу відмальовки екрану на 20–30% порівняно з Xamarin.Forms 5.0. Native AOT на iOS компілює C#-код безпосередньо в ARM64-інструкції, виключаючи JIT-компіляцію та скорочуючи час запуску на 40%.

Blazor Hybrid — унікальна можливість .NET MAUI. BlazorWebView вбудовує Blazor-компоненти прямо в MAUI-додаток. Розробники веб-інтерфейсів можуть перевикористовувати Blazor-компоненти (Razor-сторінки, JS-інтероп, CSS-стилі) в мобільному додатку. Blazor Hybrid працює на всіх 5 платформах MAUI без зміни коду Blazor-компонентів.

Екосистема .NET — доступ до тисяч NuGet-пакетів: Entity Framework Core для роботи з базами даних, Serilog для логування, Polly для повторних HTTP-запитів, FluentValidation для валідації. CommunityToolkit.Maui надає готові UI-елементи: Popup, Toast, Snackbar, SemanticScreenReader для доступності. .NET MAUI інтегрується з Azure, SignalR та Microsoft Graph SDK.

Інструменти розробки — Visual Studio 2022 та Rider від JetBrains. XAML Hot Reload оновлює UI без перезапуску додатку за 1–2 секунди. C# Hot Reload (з .NET 6+) перекомпілює зміну методу без перезапуску процесу. Visual Studio Debugger, Profiler та IntelliCode доповнюють набір інструментів для діагностики продуктивності та якості коду.

Часті запитання

Що таке .NET MAUI?

.NET MAUI — це кросплатформний фреймворк Microsoft для створення нативних додатків на C# та XAML під iOS, Android, Windows, macOS та Tizen. Він є наступником Xamarin.Forms, вбудований у .NET 6+ та використовує єдиний проект (Single Project) замість окремих проектів для кожної платформи.

Чим .NET MAUI відрізняється від Xamarin.Forms?

.NET MAUI використовує єдиний проект, Handlers замість рендерерів, вбудований DI-контейнер, Native AOT для iOS та Blazor Hybrid. Xamarin.Forms вимагає окремих проектів для кожної платформи, використовує Custom Renderer для кастомізації UI, DependencyService для DI та не підтримує Blazor. .NET MAUI — частина .NET, Xamarin.Forms — окремий SDK.

Чи підтримує .NET MAUI macOS?

Так, .NET MAUI підтримує macOS через Mac Catalyst (мінімальна версія macOS 12.0). iOS-додатки на MAUI автоматично компілюються для Mac без змін коду. Для нативних Mac-функцій (Menu Bar, Dock, Touch ID) використовуються платформні виклики через Mac Catalyst та NSView-обгортки в папці Platforms/MacCatalyst.

Чи можна використовувати Flutter-пакети в .NET MAUI?

Ні, .NET MAUI несумісний з Dart/Flutter-пакетами. MAUI використовує .NET-екосистему та NuGet-пакети. Для платформних фіч (камера, Bluetooth, біометрія) використовуються нативні бібліотеки через Android Bindings (Kotlin/Java) та iOS Bindings (Objective-C/Swift). CommunityToolkit.Maui надає готові обгортки для популярних сценаріїв.

.NET MAUI повільніший за нативний додаток?

Різниця в продуктивності мінімальна. .NET MAUI з Handlers та Native AOT на iOS досягає 95–98% продуктивності нативного SwiftUI додатку. На Android різниця з Kotlin-додатком становить 3–7% у тестах UI-рендерингу (Microsoft Benchmarks, 2024). Для більшості бізнес-додатків різниця непомітна користувачу.

Підсумки

  • .NET MAUI — кросплатформний фреймворк Microsoft на C# та XAML, наступник Xamarin.Forms
  • Single Project з multi-targeting замінює 3 окремі проекти на одну конфігурацію
  • Handlers забезпечують швидший рендеринг, ніж рендерери Xamarin.Forms
  • Blazor Hybrid дозволяє вбудовувати веб-компоненти безпосередньо в мобільний додаток
  • 5 платформ — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT на iOS скорочує час запуску на 40% та розмір бінарника
  • Вибирайте .NET MAUI для проектів на .NET з потребою в кросплатформенності та доступі до нативних API

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також