.NET MAUI — ce este, arhitectură și dezvoltare cross-platform

Autor: IT Sectr Publicat: 2026-05-01 Timp de citire: 8 min

.NET MAUI — este un framework cross-platform Microsoft pentru crearea de aplicații native în C# și XAML, lansat în 2022 împreună cu .NET 6. Potrivit Microsoft .NET MAUI Documentation, 2024, MAUI suportă iOS, Android, Windows, macOS și Tizen, unindu-le într-un singur proiect cu o bază de cod comună. Framework-ul este succesorul direct al Xamarin.Forms.

Principalele puncte

  • .NET MAUI — succesorul Xamarin.Forms, integrat în .NET 6+ fără SDK separat
  • Un singur Single Project înlocuiește trei proiecte separate de platformă
  • XAML și C# sunt utilizate pentru construirea declarativă a UI și logicii de business
  • Handlers au înlocuit rendererele învechite Xamarin.Forms pentru abstractizarea platformei
  • Suport pentru 5 platforme: iOS, Android, Windows, macOS, Tizen

Ce este .NET MAUI

.NET MAUI (Multi-platform App UI) — este evoluția Xamarin.Forms, reproiectată de la zero pentru .NET 6+. Spre deosebire de Xamarin.Forms, care necesita proiecte separate pentru fiecare platformă, MAUI utilizează o structură unică cu un fișier .csproj comun și foldere de platformă Platforms/iOS, Platforms/Android, Platforms/Windows și Platforms/MacCatalyst. Prima lansare stabilă MAUI a avut loc în mai 2022.

Diferența cheie a .NET MAUI față de predecesor — integrarea completă cu .NET 8 BCL (Base Class Library). Dezvoltatorii au acces direct la System.Text.Json, System.Net.Http, System.Linq, System.IO și alte API-uri fără SDK suplimentar. Xamarin.Forms utiliza .NET Standard 2.0 pentru logica comună, ceea ce limita accesul la noile capacități ale platformei .NET.

Potrivit Microsoft Build 2024, .NET MAUI este utilizat în 40 000+ de aplicații în App Store și Google Play. Printre proiectele cunoscute — UPS Mobile, The Weather Channel și Siemens Teamcenter. Microsoft dezvoltă activ MAUI în cadrul .NET 9.

Istoria și originea .NET MAUI

Anunțul .NET MAUI a avut loc la Microsoft Build 2020 ca parte a strategiei de unificare .NET. Microsoft a unit .NET Core, Mono și .NET Framework într-o singură platformă .NET 5+. Xamarin.Forms a devenit baza pentru MAUI, dar baza de cod a fost complet rescrisă: API-urile învechite au fost eliminate, rendererele au fost înlocuite cu Handlers, DependencyService a fost înlocuit cu un container DI.

Versiunea .NET MAUI 8 (noiembrie 2023) a adăugat suport pentru Native AOT, performanță îmbunătățită CollectionView, Blazor Hybrid (înglobarea componentelor Blazor în aplicația MAUI) și o nouă cartografiere a fonturilor. .NET MAUI 9 (2024) include suport pentru C# 12, integrare îmbunătățită cu WinUI 3 și macOS Sonoma, precum și o nouă API Drag & Drop pentru toate platformele.

Diferența dintre .NET MAUI și Xamarin.Forms

Prima diferență — aplicație unică. În Xamarin.Forms pentru iOS și Android erau necesare două proiecte separate într-o singură soluție. În .NET MAUI un singur proiect cu foldere de platformă. Acest lucru simplifică navigarea codului, gestionarea dependențelor și conductele CI/CD. Fișierul .csproj utilizează formatul SDK-style cu TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.

A doua diferență — arhitectura de randare prin Handlers în loc de renderere. În Xamarin.Forms fiecare element (Button, Label) avea propria sa clasă Renderer, care crea un control nativ. Pentru personalizare era necesar un Custom Renderer. În MAUI Handler este un obiect ușor care mapează un element abstract la un control nativ și suportă Property Mappers pentru actualizarea proprietăților fără recrearea controlului.

A treia diferență — container DI unic Microsoft.Extensions.DependencyInjection. Xamarin.Forms utiliza DependencyService pentru înregistrarea implementărilor de platformă. MAUI integrează DI în nucleul framework-ului: serviciile se înregistrează în MauiAppBuilder, controlerele primesc dependențe prin constructor. Acest lucru simplifică testarea și este conform cu practicile moderne .NET.

Arhitectura .NET MAUI

Arhitectura .NET MAUI se bazează pe un model multistrat. Stratul inferior — .NET BCL și Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). Stratul mijlociu — Microsoft.Maui.dll cu nucleul framework-ului: Handlers, Layout, Graphics, Controls. Stratul superior — aplicația dezvoltatorului cu pagini XAML, ViewModel și servicii.

Single Project și Multi-Targeting

Single Project — este o caracteristică arhitecturală cheie a .NET MAUI. Toate fișierele sunt împărțite în trei categorii: cod comun (Shared), cod de platformă (Platforms) și resurse (Resources). Multi-targeting în .csproj specifică pentru care platforme se construiește aplicația. Fiecare platformă compilează doar propriul folder Platforms și codul comun.

Codul de platformă este plasat în foldere condiționate. Platforms/Android conține MainActivity.cs, MainApplication.cs și AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist și Entitlements.plist. Platforms/Windows — Package.appxmanifest și App.xaml. Pentru compilarea condiționată în cod se utilizează directivele #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.

XAML și MVVM în .NET MAUI

XAML — un limbaj de marcare declarativ, moștenit de la Xamarin.Forms și WPF. În .NET MAUI XAML este utilizat pentru descrierea paginilor (ContentPage), layout-urilor (VerticalStackLayout, Grid, FlexLayout), elementelor (Label, Entry, Button, Image) și controalelor (CollectionView, CarouselView). XAML este compilat în format BAML în etapa de construire.

Modelul MVVM este implementat prin CommunityToolkit.Mvvm — o bibliotecă open-source de la Microsoft. Atributul [ObservableProperty] generează proprietăți INotifyPropertyChanged, [RelayCommand] creează comenzi din metode. Source Generator CommunityToolkit.Mvvm 8.2 transformă clasa parțială ViewModel, generând ObservableObject fără Reflection. Acest lucru accelerează Binding-ul cu 30% comparativ cu implementarea manuală.

Exemplu de aplicație în .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 = "Apasă-mă",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Bună", "Lume", "OK"))
                }
            }
        };
    }
}

Platforme și suport

.NET MAUI suportă 5 platforme: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) și Tizen 6.5+. Fiecare platformă utilizează propriul set de controale și API-uri. iOS utilizează UIKit prin Mac Catalyst, Android — AndroidX prin Xamarin.Android, Windows — WinUI 3, macOS — AppKit prin Mac Catalyst.

Pe iOS și Android MAUI utilizează aceleași mecanisme de randare ca Xamarin.Forms — controale UI native. Cu toate acestea, Handlers asigură o personalizare mai flexibilă. Pentru configurarea platformei Button pe iOS se utilizează OnPlatform<Button> cu PlatformConfiguration.iOS. Pentru Windows MAUI utilizează WinUI 3 — un framework UI modern de la Microsoft cu suport pentru Fluent Design System.

Suportul pentru macOS a fost adăugat prin Mac Catalyst — tehnologia Apple care rulează aplicații UIKit pe Mac. Acest lucru permite reutilizarea a 100% din codul iOS MAUI pentru versiunea macOS a aplicației. Pentru funcțiile specifice Mac (Menu Bar, Touch Bar) MAUI oferă API-uri de platformă prin Mac Catalyst și wrapper-uri NSView.

Tizen — platforma Samsung pentru Smart TV, smartphone-uri și ceasuri inteligente. Suportul Tizen în .NET MAUI este implementat prin Samsung Tizen .NET. Aplicațiile MAUI sunt compilate pentru Tizen prin legăturile Samsung TizenFX. Cu toate acestea, Tizen nu este o platformă prioritară Microsoft — actualizările pentru ea apar cu o întârziere de 1–2 luni.

PlatformaVersiunea minimăFramework UIStatus
iOSiOS 15.0UIKit (Mac Catalyst)Stabil
AndroidAPI 21 (5.0)AndroidX / Material 3Stabil
WindowsWin 10 1809WinUI 3 / Fluent DesignStabil
macOSmacOS 12.0AppKit (Mac Catalyst)Stabil
TizenTizen 6.5TizenFX / SamsungAdițional

Avantajele .NET MAUI

Bază de cod unică — .NET MAUI reduce volumul de duplicare a codului. Un singur proiect în C# și XAML se compilează pentru 5 platforme, asigurând până la 95% cod comun pentru aplicațiile cu UI simplu. Logica de business, serviciile, modelele de date și clienții HTTP se află în codul comun. Doar funcțiile de platformă (cameră, geolocație, biometrie) necesită implementări separate prin DI.

Performanța .NET MAUI este mai mare decât Xamarin.Forms. Handlers reduc overhead-ul de randare: testele Microsoft arată o reducere a timpului de randare a ecranului cu 20–30% comparativ cu Xamarin.Forms 5.0. Native AOT pe iOS compilează codul C# direct în instrucțiuni ARM64, eliminând compilarea JIT și reducând timpul de pornire cu 40%.

Blazor Hybrid — o capacitate unică a .NET MAUI. BlazorWebView încorporează componente Blazor direct în aplicația MAUI. Dezvoltatorii de interfețe web pot reutiliza componente Blazor (pagini Razor, JS-interop, stiluri CSS) în aplicația mobilă. Blazor Hybrid funcționează pe toate cele 5 platforme MAUI fără a modifica codul componentelor Blazor.

Ecosistemul .NET — acces la mii de pachete NuGet: Entity Framework Core pentru lucrul cu baze de date, Serilog pentru logare, Polly pentru cereri HTTP repetate, FluentValidation pentru validare. CommunityToolkit.Maui oferă elemente UI gata făcute: Popup, Toast, Snackbar, SemanticScreenReader pentru accesibilitate. .NET MAUI se integrează cu Azure, SignalR și Microsoft Graph SDK.

Instrumente de dezvoltare — Visual Studio 2022 și Rider de la JetBrains. XAML Hot Reload actualizează UI fără repornirea aplicației în 1–2 secunde. C# Hot Reload (din .NET 6+) recompilează modificarea metodei fără repornirea procesului. Visual Studio Debugger, Profiler și IntelliCode completează setul de instrumente pentru diagnosticarea performanței și calității codului.

Întrebări frecvente

Ce este .NET MAUI?

.NET MAUI — este un framework cross-platform Microsoft pentru crearea de aplicații native în C# și XAML pentru iOS, Android, Windows, macOS și Tizen. Este succesorul Xamarin.Forms, integrat în .NET 6+ și utilizează un singur proiect (Single Project) în loc de proiecte separate pentru fiecare platformă.

Cu ce se deosebește .NET MAUI de Xamarin.Forms?

.NET MAUI utilizează un singur proiect, Handlers în loc de renderere, container DI integrat, Native AOT pentru iOS și Blazor Hybrid. Xamarin.Forms necesită proiecte separate pentru fiecare platformă, utilizează Custom Renderer pentru personalizarea UI, DependencyService pentru DI și nu suportă Blazor. .NET MAUI face parte din .NET, Xamarin.Forms este un SDK separat.

.NET MAUI suportă macOS?

Da, .NET MAUI suportă macOS prin Mac Catalyst (versiunea minimă macOS 12.0). Aplicațiile iOS pe MAUI se compilează automat pentru Mac fără modificări de cod. Pentru funcțiile native Mac (Menu Bar, Dock, Touch ID) se utilizează apeluri de platformă prin Mac Catalyst și wrapper-uri NSView în folderul Platforms/MacCatalyst.

Pot fi utilizate pachete Flutter în .NET MAUI?

Nu, .NET MAUI este incompatibil cu pachetele Dart/Flutter. MAUI utilizează ecosistemul .NET și pachetele NuGet. Pentru funcțiile de platformă (cameră, Bluetooth, biometric) se utilizează biblioteci native prin Android Bindings (Kotlin/Java) și iOS Bindings (Objective-C/Swift). CommunityToolkit.Maui oferă wrapper-uri gata făcute pentru scenarii populare.

.NET MAUI este mai lent decât o aplicație nativă?

Diferența de performanță este minimă. .NET MAUI cu Handlers și Native AOT pe iOS atinge 95–98% din performanța aplicației native SwiftUI. Pe Android diferența cu aplicația Kotlin este de 3–7% în testele de randare UI (Microsoft Benchmarks, 2024). Pentru majoritatea aplicațiilor de business diferența este imperceptibilă utilizatorului.

Concluzii

  • .NET MAUI — framework cross-platform Microsoft în C# și XAML, succesorul Xamarin.Forms
  • Single Project cu multi-targeting înlocuiește 3 proiecte separate cu o singură configurație
  • Handlers asigură randare mai rapidă decât rendererele Xamarin.Forms
  • Blazor Hybrid permite încorporarea componentelor web direct în aplicația mobilă
  • 5 platforme — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT pe iOS reduce timpul de pornire cu 40% și dimensiunea binarului
  • Alegeți .NET MAUI pentru proiecte .NET cu nevoie de cross-platform și acces la API-uri native

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și