.NET MAUI — mi ez, architektúra és többplatformos fejlesztés

Szerző: IT Sectr Megjelenés: 2026-05-01 Olvasási idő: 8 perc

.NET MAUI — egy Microsoft által készített többplatformos keretrendszer natív alkalmazások létrehozásához C# és XAML nyelven, amely 2022-ben jelent meg a .NET 6-tal együtt. A Microsoft .NET MAUI Documentation, 2024 szerint a MAUI támogatja az iOS, Android, Windows, macOS és Tizen platformokat, egyesítve őket egyetlen projektben közös kódbázissal. A keretrendszer a Xamarin.Forms közvetlen utódja.

Főbb pontok

  • .NET MAUI — a Xamarin.Forms utódja, beépítve a .NET 6+-ba külön SDK nélkül
  • Egyetlen Single Project váltja fel a három külön platformprojektet
  • XAML és C# használatos a deklaratív UI-építéshez és üzleti logikához
  • Handlers váltották fel az elavult Xamarin.Forms renderelőket a platformabsztrakcióhoz
  • 5 platform támogatása: iOS, Android, Windows, macOS, Tizen

Mi az a .NET MAUI

.NET MAUI (Multi-platform App UI) — a Xamarin.Forms evolúciója, az alapoktól újragondolva a .NET 6+-hoz. Ellentétben a Xamarin.Forms-szal, amely külön projekteket igényelt minden platformhoz, a MAUI egységes struktúrát használ közös .csproj fájllal és Platforms/iOS, Platforms/Android, Platforms/Windows és Platforms/MacCatalyst platformmappákkal. A MAUI első stabil kiadása 2022 májusában történt.

A .NET MAUI legfontosabb különbsége az elődjéhez képest — teljes integráció a .NET 8 BCL-lel (Base Class Library). A fejlesztők közvetlen hozzáférést kapnak a System.Text.Json, System.Net.Http, System.Linq, System.IO és más API-khoz további SDK nélkül. A Xamarin.Forms a .NET Standard 2.0-t használta a közös logikához, ami korlátozta a hozzáférést a .NET platform új képességeihez.

A Microsoft Build 2024 szerint a .NET MAUI-t 40 000+ alkalmazásban használják az App Store-ban és a Google Play-ben. Az ismert projektek között van az UPS Mobile, a The Weather Channel és a Siemens Teamcenter. A Microsoft aktívan fejleszti a MAUI-t a .NET 9 keretében.

A .NET MAUI története és eredete

A .NET MAUI bejelentése a Microsoft Build 2020-n történt a .NET egyesítési stratégia részeként. A Microsoft egyesítette a .NET Core-t, a Mono-t és a .NET Framework-öt egyetlen .NET 5+ platformmá. A Xamarin.Forms lett a MAUI alapja, de a kódbázist teljesen újraírták: az elavult API-kat eltávolították, a renderelőket Handlerekre cserélték, a DependencyService-t DI-konténerre cserélték.

A .NET MAUI 8 verzió (2023. november) hozzáadta a Native AOT támogatását, a továbbfejlesztett CollectionView teljesítményt, a Blazor Hybrid-öt (Blazor komponensek beágyazása MAUI-alkalmazásba) és az új betűtípus-leképezést. A .NET MAUI 9 (2024) tartalmazza a C# 12 támogatását, a továbbfejlesztett integrációt a WinUI 3-mal és a macOS Sonoma-val, valamint az új Drag & Drop API-t minden platformhoz.

A .NET MAUI és a Xamarin.Forms közötti különbség

Az első különbség — egyetlen alkalmazás. A Xamarin.Forms-ban az iOS-hez és Android-hoz két külön projekt kellett egy megoldáson belül. A .NET MAUI-ban egy projekt platformmappákkal. Ez leegyszerűsíti a kódban való navigációt, a függőségek kezelését és a CI/CD-folyamatokat. A .csproj fájl SDK-style formátumot használ TargetFrameworks-szel: net8.0-android, net8.0-ios, net8.0-maccatalyst.

A második különbség — renderelési architektúra Handlereken keresztül renderelők helyett. A Xamarin.Forms-ban minden elemnek (Button, Label) saját Renderer osztálya volt, amely létrehozta a natív vezérlőt. A testreszabáshoz Custom Renderer-re volt szükség. A MAUI-ban a Handler egy könnyű objektum, amely az absztrakt elemet natív vezérlőre képezi le, és támogatja a Property Mappers-t a tulajdonságok frissítéséhez a vezérlő újbóli létrehozása nélkül.

A harmadik különbség — egyetlen DI-konténer Microsoft.Extensions.DependencyInjection. A Xamarin.Forms a DependencyService-t használta a platformimplementációk regisztrálásához. A MAUI a DI-t a keretrendszer magjába építi: a szolgáltatások a MauiAppBuilder-ben regisztrálódnak, a vezérlők a konstruktoron keresztül kapják a függőségeket. Ez leegyszerűsíti a tesztelést és követi a modern .NET gyakorlatokat.

A .NET MAUI architektúrája

A .NET MAUI architektúrája többrétegű modellen alapul. Az alsó réteg — .NET BCL és Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). A középső réteg — Microsoft.Maui.dll a keretrendszer magjával: Handlers, Layout, Graphics, Controls. A felső réteg — a fejlesztő alkalmazása XAML-oldalakkal, ViewModel-lel és szolgáltatásokkal.

Single Project és Multi-Targeting

Single Project — a .NET MAUI egyik legfontosabb architekturális jellemzője. Minden fájl három kategóriába van osztva: közös kód (Shared), platformkód (Platforms) és erőforrások (Resources). A .csproj-ban lévő multi-targeting határozza meg, hogy mely platformokra épül az alkalmazás. Minden platform csak a saját Platforms mappáját és a közös kódot fordítja le.

A platformkód feltételes mappákban található. A Platforms/Android tartalmazza a MainActivity.cs, MainApplication.cs és AndroidManifest.xml fájlokat. Platforms/iOS — AppDelegate.cs, Info.plist és Entitlements.plist. Platforms/Windows — Package.appxmanifest és App.xaml. A feltételes fordításhoz a kódban a #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST direktívák használatosak.

XAML és MVVM a .NET MAUI-ban

XAML — deklaratív jelölőnyelv, a Xamarin.Forms-tól és a WPF-től örökölve. A .NET MAUI-ban a XAML oldalak (ContentPage), elrendezések (VerticalStackLayout, Grid, FlexLayout), elemek (Label, Entry, Button, Image) és vezérlők (CollectionView, CarouselView) leírására szolgál. A XAML a build fázisban BAML formátumba fordul.

Az MVVM minta a CommunityToolkit.Mvvm — egy Microsoft által készített nyílt forráskódú könyvtáron keresztül valósul meg. Az [ObservableProperty] attribútum INotifyPropertyChanged tulajdonságokat generál, a [RelayCommand] metódusokból hoz létre parancsokat. A Source Generator CommunityToolkit.Mvvm 8.2 átalakítja a partial class ViewModel-t, ObservableObject-et generálva Reflection nélkül. Ez 30%-kal gyorsítja a Binding-et a kézi megvalósításhoz képest.

Példa alkalmazásra a .NET MAUI-ban

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 = "Nyomj meg",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Helló", "Világ", "OK"))
                }
            }
        };
    }
}

Platformok és támogatás

.NET MAUI 5 platformot támogat: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) és Tizen 6.5+. Minden platform a saját vezérlő- és API-készletét használja. Az iOS a UIKit-et használja Mac Catalyst-en keresztül, az Android — AndroidX-et a Xamarin.Android-n keresztül, a Windows — WinUI 3-at, a macOS — AppKit-et Mac Catalyst-en keresztül.

iOS-en és Androidon a MAUI ugyanazokat a renderelési mechanizmusokat használja, mint a Xamarin.Forms — natív UI vezérlőket. Azonban a Handlers rugalmasabb testreszabást biztosítanak. Az iOS-en a Button platform konfigurációjához az OnPlatform<Button> használatos a PlatformConfiguration.iOS-szel. A Windows-hoz a MAUI a WinUI 3-at használja — egy modern Microsoft UI keretrendszert Fluent Design System támogatással.

A macOS támogatás a Mac Catalyst — az Apple technológiáján keresztül került hozzáadásra, amely UIKit alkalmazásokat futtat Mac-en. Ez lehetővé teszi az iOS MAUI kód 100%-os újrafelhasználását a macOS verzióhoz. A speciális Mac funkciókhoz (Menu Bar, Touch Bar) a MAUI platform API-kat biztosít Mac Catalyst-en és NSView burkolókon keresztül.

Tizen — a Samsung platformja Smart TV-khez, okostelefonokhoz és okosórákhoz. A Tizen támogatás a .NET MAUI-ban a Samsung Tizen .NET-en keresztül valósul meg. A MAUI alkalmazások a Samsung TizenFX kötéseken keresztül fordulnak Tizen-re. Azonban a Tizen nem prioritása a Microsoftnak — a frissítések 1–2 hónapos késéssel jelennek meg.

PlatformMinimális verzióUI keretrendszerStátusz
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 / SamsungKiegészítő

A .NET MAUI előnyei

Egységes kódbázis — a .NET MAUI csökkenti a kódismétlés mértékét. Egyetlen projekt C#-ban és XAML-ben 5 platformra fordul, akár 95% közös kódot biztosítva az egyszerű UI-val rendelkező alkalmazások számára. Az üzleti logika, szolgáltatások, adatmodellek és HTTP kliensek a közös kódban találhatók. Csak a platformfunkciók (kamera, helymeghatározás, biometria) igényelnek külön implementációkat DI-n keresztül.

Teljesítmény — a .NET MAUI magasabb, mint a Xamarin.Forms-é. A Handlers csökkentik a renderelési többletterhelést: a Microsoft tesztei 20–30%-os képernyő-megjelenítési időcsökkenést mutatnak a Xamarin.Forms 5.0-hoz képest. A Native AOT iOS-en közvetlenül ARM64 utasításokra fordítja a C# kódot, kiküszöbölve a JIT fordítást és 40%-kal csökkentve az indítási időt.

Blazor Hybrid — a .NET MAUI egyedi képessége. A BlazorWebView közvetlenül a MAUI alkalmazásba ágyazza a Blazor komponenseket. A webes felületek fejlesztői újrahasználhatják a Blazor komponenseket (Razor oldalak, JS-interop, CSS stílusok) a mobilalkalmazásban. A Blazor Hybrid mind az 5 MAUI platformon működik a Blazor komponensek kódjának módosítása nélkül.

.NET ökoszisztéma — hozzáférés több ezer NuGet csomaghoz: Entity Framework Core adatbázisokhoz, Serilog naplózáshoz, Polly ismételt HTTP kérésekhez, FluentValidation érvényesítéshez. A CommunityToolkit.Maui kész UI elemeket biztosít: Popup, Toast, Snackbar, SemanticScreenReader az akadálymentesítéshez. A .NET MAUI integrálódik az Azure-ral, SignalR-rel és a Microsoft Graph SDK-val.

Fejlesztői eszközök — Visual Studio 2022 és Rider a JetBrains-től. A XAML Hot Reload frissíti a UI-t az alkalmazás újraindítása nélkül 1–2 másodperc alatt. A C# Hot Reload (.NET 6+-tól) újrafordítja a metódusmódosítást a folyamat újraindítása nélkül. A Visual Studio Debugger, Profiler és IntelliCode kiegészíti a teljesítmény- és kódminőség-diagnosztikai eszközöket.

Gyakran ismételt kérdések

Mi az a .NET MAUI?

.NET MAUI — egy Microsoft által készített többplatformos keretrendszer natív alkalmazások létrehozásához C# és XAML nyelven iOS, Android, Windows, macOS és Tizen rendszerekre. A Xamarin.Forms utódja, beépítve a .NET 6+-ba, és egyetlen projektet (Single Project) használ a platformonkénti külön projektek helyett.

Miben különbözik a .NET MAUI a Xamarin.Forms-tól?

.NET MAUI egyetlen projektet, Handlereket renderelők helyett, beépített DI-konténert, Native AOT-t iOS-hez és Blazor Hybrid-öt használ. A Xamarin.Forms külön projekteket igényel minden platformhoz, Custom Renderer-t használ a UI testreszabásához, DependencyService-t a DI-hez, és nem támogatja a Blazort. A .NET MAUI a .NET része, a Xamarin.Forms egy külön SDK.

Támogatja a .NET MAUI a macOS-t?

Igen, a .NET MAUI támogatja a macOS-t a Mac Catalyst-en keresztül (minimális verzió: macOS 12.0). Az iOS alkalmazások a MAUI-ban automatikusan Mac-re fordulnak kódmódosítás nélkül. A natív Mac funkciókhoz (Menu Bar, Dock, Touch ID) platformhívások használatosak a Mac Catalyst-en és NSView burkolókon keresztül a Platforms/MacCatalyst mappában.

Használhatóak Flutter csomagok a .NET MAUI-ban?

Nem, a .NET MAUI nem kompatibilis a Dart/Flutter csomagokkal. A MAUI a .NET ökoszisztémát és NuGet csomagokat használja. A platformfunkciókhoz (kamera, Bluetooth, biometria) natív könyvtárak használatosak az Android Bindings (Kotlin/Java) és iOS Bindings (Objective-C/Swift) segítségével. A CommunityToolkit.Maui kész burkolókat biztosít a népszerű forgatókönyvekhez.

Lassabb a .NET MAUI, mint egy natív alkalmazás?

A teljesítménybeli különbség minimális. A .NET MAUI Handlerekkel és Native AOT-val iOS-en eléri a natív SwiftUI alkalmazás teljesítményének 95–98%-át. Androidon a különbség a Kotlin alkalmazáshoz képest 3–7% a UI renderelési tesztekben (Microsoft Benchmarks, 2024). A legtöbb üzleti alkalmazás esetében a különbség észrevehetetlen a felhasználó számára.

Összefoglalás

  • .NET MAUI — Microsoft többplatformos keretrendszere C#-ban és XAML-ben, a Xamarin.Forms utódja
  • Single Project multi-targetinggel 3 külön projektet vált fel egyetlen konfigurációval
  • Handlers gyorsabb renderelést biztosítanak, mint a Xamarin.Forms renderelők
  • Blazor Hybrid lehetővé teszi webkomponensek közvetlen beágyazását a mobilalkalmazásba
  • 5 platform — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT iOS-en 40%-kal csökkenti az indítási időt és a bináris fájl méretét
  • Válassza a .NET MAUI-t olyan .NET projektekhez, amelyek többplatformosságot és natív API hozzáférést igényelnek

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is