.NET MAUI — шта је то, архитектура и вишеплатформски развој

Аутор: IT Sectr Објављено: 2026-05-01 Време читања: 8 мин

.NET MAUI — је вишеплатформски фрејмворк компаније Мицрософт за креирање изворних апликација у 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. Мицрософт активно развија MAUI у оквиру .NET 9.

Историја и порекло .NET MAUI

Најава .NET MAUI догодила се на Microsoft Build 2020 као део стратегије унификације .NET-а. Мицрософт је објединио .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 — библиотеке отвореног кода од Мицрософта. Атрибут [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 фрејмворк од Мицрософта са подршком за 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 није приоритетна платформа за Мицрософт — ажурирања за њу излазе са закашњењем од 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 смањују overhead рендеровања: 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 — је вишеплатформски фрејмворк компаније Мицрософт за креирање изворних апликација у 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 — вишеплатформски фрејмворк Мицрософта у 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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође