.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.

История и произход на .NET MAUI

Обявяването на .NET MAUI се състоя на Microsoft Build 2020 като част от стратегията за обединение на .NET. 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 трансформира частичния клас 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също