.NET MAUI ist ein plattformübergreifendes Microsoft-Framework zur Erstellung nativer Anwendungen in C# und XAML, das 2022 zusammen mit .NET 6 veröffentlicht wurde. Laut Microsoft .NET MAUI Documentation, 2024 unterstützt MAUI iOS, Android, Windows, macOS und Tizen und vereint sie in einem einzigen Projekt mit einer gemeinsamen Codebasis. Das Framework ist der direkte Nachfolger von Xamarin.Forms.
Wichtige Punkte
.NET MAUI (Multi-platform App UI) ist eine Weiterentwicklung von Xamarin.Forms, die für .NET 6+ von Grund auf neu entwickelt wurde. Im Gegensatz zu Xamarin.Forms, das für jede Plattform separate Projekte erforderte, verwendet MAUI eine einheitliche Struktur mit einer gemeinsamen .csproj-Datei und Plattformordnern Platforms/iOS, Platforms/Android, Platforms/Windows und Platforms/MacCatalyst. Die erste stabile MAUI-Version wurde im Mai 2022 veröffentlicht.
Der Hauptunterschied zwischen .NET MAUI und seinem Vorgänger ist die vollständige Integration mit der .NET 8 BCL (Base Class Library). Entwickler erhalten direkten Zugriff auf System.Text.Json, System.Net.Http, System.Linq, System.IO und andere APIs ohne zusätzliches SDK. Xamarin.Forms verwendete .NET Standard 2.0 für gemeinsame Logik, was den Zugriff auf neue .NET-Plattformfunktionen einschränkte.
Laut Microsoft Build 2024 wird .NET MAUI in über 40.000 Anwendungen im App Store und bei Google Play eingesetzt. Zu den bekannten Projekten gehören UPS Mobile, The Weather Channel und Siemens Teamcenter. Microsoft entwickelt MAUI aktiv als Teil von .NET 9 weiter, das für November 2024 geplant ist.
Die Ankündigung von .NET MAUI erfolgte auf der Microsoft Build 2020 im Rahmen der .NET-Unifizierungsstrategie. Microsoft führte .NET Core, Mono und .NET Framework zu einer einzigen .NET 5+-Plattform zusammen. Xamarin.Forms wurde zur Grundlage für MAUI, aber die Codebasis wurde vollständig neu geschrieben: veraltete APIs wurden entfernt, Renderer durch Handlers ersetzt, DependencyService durch einen DI-Container ersetzt.
.NET MAUI 8 (November 2023) fügte Unterstützung für Native AOT, verbesserte CollectionView-Leistung, Blazor Hybrid (Einbettung von Blazor-Komponenten in eine MAUI-Anwendung) und neues Schriftart-Mapping hinzu. .NET MAUI 9 (2024) enthält Unterstützung für C# 12, verbesserte Integration mit WinUI 3 und macOS Sonoma sowie eine neue Drag & Drop-API für alle Plattformen.
Der erste Unterschied ist eine einheitliche Anwendung. In Xamarin.Forms erforderten iOS und Android zwei separate Projekte in einer Projektmappe. In .NET MAUI ein Projekt mit Plattformordnern. Dies vereinfacht die Codenavigation, das Abhängigkeitsmanagement und CI/CD-Pipelines. Die .csproj-Datei verwendet das SDK-Format mit TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.
Der zweite Unterschied ist die Rendering-Architektur mit Handlers anstelle von Renderern. In Xamarin.Forms hatte jedes Element (Button, Label) seine eigene Renderer-Klasse, die ein natives Steuerelement erstellte. Für die Anpassung war ein Custom Renderer erforderlich. In MAUI ist ein Handler ein leichtes Objekt, das ein abstraktes Element auf ein natives Steuerelement abbildet und Property Mappers zum Aktualisieren von Eigenschaften unterstützt, ohne das Steuerelement neu zu erstellen.
Der dritte Unterschied ist ein einheitlicher DI-Container Microsoft.Extensions.DependencyInjection. Xamarin.Forms verwendete DependencyService zur Registrierung von Plattformimplementierungen. MAUI bettet DI in den Framework-Kern ein: Dienste werden in MauiAppBuilder registriert, Controller erhalten Abhängigkeiten über den Konstruktor. Dies vereinfacht Tests und folgt modernen .NET-Praktiken.
Die .NET MAUI-Architektur basiert auf einem mehrschichtigen Modell. Die unterste Schicht ist .NET BCL und Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). Die mittlere Schicht ist Microsoft.Maui.dll mit dem Framework-Kern: Handlers, Layout, Graphics, Controls. Die oberste Schicht ist die Anwendung des Entwicklers mit XAML-Seiten, ViewModel und Diensten.
Single Project ist eine wichtige architektonische Eigenschaft von .NET MAUI. Alle Dateien sind in drei Kategorien unterteilt: gemeinsamer Code (Shared), Plattformcode (Platforms) und Ressourcen (Resources). Multi-Targeting in .csproj gibt an, für welche Plattformen die Anwendung erstellt wird. Jede Plattform kompiliert nur ihren eigenen Platforms-Ordner und den gemeinsamen Code.
Plattformcode wird in bedingten Ordnern platziert. Platforms/Android enthält MainActivity.cs, MainApplication.cs und AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist und Entitlements.plist. Platforms/Windows — Package.appxmanifest und App.xaml. Für die bedingte Kompilierung verwendet der Code die Direktiven #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.
XAML ist eine deklarative Auszeichnungssprache, die von Xamarin.Forms und WPF geerbt wurde. In .NET MAUI wird XAML verwendet, um Seiten (ContentPage), Layouts (VerticalStackLayout, Grid, FlexLayout), Elemente (Label, Entry, Button, Image) und Steuerelemente (CollectionView, CarouselView) zu beschreiben. XAML wird zur Buildzeit in das BAML-Format kompiliert.
Das MVVM-Muster wird über CommunityToolkit.Mvvm implementiert — eine Open-Source-Bibliothek von Microsoft. Das Attribut [ObservableProperty] generiert INotifyPropertyChanged-Eigenschaften, [RelayCommand] erstellt Befehle aus Methoden. Der CommunityToolkit.Mvvm 8.2 Source Generator transformiert die partielle Klasse ViewModel und generiert ObservableObject ohne Reflection. Dies beschleunigt Binding um 30% im Vergleich zur manuellen Implementierung.
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 = "Klick mich",
BackgroundColor = Colors.Blue,
TextColor = Colors.White,
Command = new Command(async () =>
await DisplayAlert("Hallo", "Welt", "OK"))
}
}
};
}
}
.NET MAUI unterstützt 5 Plattformen: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) und Tizen 6.5+. Jede Plattform verwendet ihre eigenen Steuerelemente und APIs. iOS verwendet UIKit über Mac Catalyst, Android — AndroidX über Xamarin.Android, Windows — WinUI 3, macOS — AppKit über Mac Catalyst.
Auf iOS und Android verwendet MAUI dieselben Rendering-Mechanismen wie Xamarin.Forms — native UI-Steuerelemente. Allerdings bieten Handlers eine flexiblere Anpassung. Für die plattformspezifische Button-Konfiguration unter iOS wird OnPlatform<Button> mit PlatformConfiguration.iOS verwendet. Für Windows verwendet MAUI WinUI 3 — ein modernes UI-Framework von Microsoft mit Unterstützung für das Fluent Design System.
Die macOS-Unterstützung wurde über Mac Catalyst hinzugefügt — Apples Technologie, die UIKit-Anwendungen auf dem Mac ausführt. Dies ermöglicht die Wiederverwendung von 100% des MAUI iOS-Codes für die macOS-Version der Anwendung. Für spezifische Mac-Funktionen (Menu Bar, Touch Bar) bietet MAUI Plattform-APIs über Mac Catalyst und NSView-Wrapper.
Tizen ist Samsungs Plattform für Smart TVs, Smartphones und Smartwatches. Die Tizen-Unterstützung in .NET MAUI wird über Samsung Tizen .NET implementiert. MAUI-Anwendungen werden über Samsung TizenFX-Bindings für Tizen kompiliert. Tizen ist jedoch keine prioritäre Plattform für Microsoft — Updates dafür werden mit einer Verzögerung von 1–2 Monaten veröffentlicht.
| Plattform | Mindestversion | UI-Framework | Status |
|---|---|---|---|
| iOS | iOS 15.0 | UIKit (Mac Catalyst) | Stabil |
| Android | API 21 (5.0) | AndroidX / Material 3 | Stabil |
| Windows | Win 10 1809 | WinUI 3 / Fluent Design | Stabil |
| macOS | macOS 12.0 | AppKit (Mac Catalyst) | Stabil |
| Tizen | Tizen 6.5 | TizenFX / Samsung | Zusätzlich |
Einheitliche Codebasis — .NET MAUI reduziert Code-Redundanz. Ein Projekt in C# und XAML wird für 5 Plattformen kompiliert und bietet bis zu 95% gemeinsamen Code für Anwendungen mit einfacher UI. Geschäftslogik, Dienste, Datenmodelle und HTTP-Clients befinden sich im gemeinsamen Code. Nur plattformspezifische Funktionen (Kamera, Geolokalisierung, Biometrie) erfordern separate Implementierungen über DI.
Die Leistung von .NET MAUI ist höher als die von Xamarin.Forms. Handlers reduzieren den Rendering-Überhead: Microsoft-Tests zeigen eine Reduzierung der Bildschirm-Rendering-Zeit um 20–30% im Vergleich zu Xamarin.Forms 5.0. Native AOT unter iOS kompiliert C#-Code direkt in ARM64-Anweisungen, wodurch die JIT-Kompilierung entfällt und die Startzeit um 40% verkürzt wird.
Blazor Hybrid ist eine einzigartige Fähigkeit von .NET MAUI. BlazorWebView bettet Blazor-Komponenten direkt in eine MAUI-Anwendung ein. Web-Entwickler können Blazor-Komponenten (Razor-Seiten, JS-Interop, CSS-Stile) in der mobilen Anwendung wiederverwenden. Blazor Hybrid funktioniert auf allen 5 MAUI-Plattformen, ohne den Code der Blazor-Komponenten zu ändern.
.NET-Ökosystem — Zugriff auf Tausende von NuGet-Paketen: Entity Framework Core für Datenbankoperationen, Serilog für Protokollierung, Polly für wiederholte HTTP-Anfragen, FluentValidation für Validierung. CommunityToolkit.Maui bietet vorgefertigte UI-Elemente: Popup, Toast, Snackbar, SemanticScreenReader für Barrierefreiheit. .NET MAUI integriert sich in Azure, SignalR und das Microsoft Graph SDK.
Entwicklungstools — Visual Studio 2022 und Rider von JetBrains. XAML Hot Reload aktualisiert die UI ohne Neustart der Anwendung in 1–2 Sekunden. C# Hot Reload (ab .NET 6+) kompiliert eine Methodenänderung neu, ohne den Prozess neu zu starten. Visual Studio Debugger, Profiler und IntelliCode ergänzen das Toolkit für Leistungsdiagnose und Codequalität.
Häufig gestellte Fragen
.NET MAUI ist ein plattformübergreifendes Microsoft-Framework zur Erstellung nativer Anwendungen in C# und XAML für iOS, Android, Windows, macOS und Tizen. Es ist der Nachfolger von Xamarin.Forms, in .NET 6+ integriert und verwendet ein einzelnes Projekt (Single Project) anstelle separater Projekte für jede Plattform.
.NET MAUI verwendet ein einzelnes Projekt, Handlers anstelle von Renderern, einen integrierten DI-Container, Native AOT für iOS und Blazor Hybrid. Xamarin.Forms erfordert separate Projekte für jede Plattform, verwendet Custom Renderer für UI-Anpassungen, DependencyService für DI und unterstützt Blazor nicht. .NET MAUI ist Teil von .NET, Xamarin.Forms ist ein separates SDK.
Ja, .NET MAUI unterstützt macOS über Mac Catalyst (Mindestversion macOS 12.0). iOS-Anwendungen auf MAUI werden automatisch für Mac kompiliert, ohne Codeänderungen. Für native Mac-Funktionen (Menu Bar, Dock, Touch ID) werden Plattformaufrufe über Mac Catalyst und NSView-Wrapper im Ordner Platforms/MacCatalyst verwendet.
Nein, .NET MAUI ist nicht mit Dart/Flutter-Paketen kompatibel. MAUI verwendet das .NET-Ökosystem und NuGet-Pakete. Für plattformspezifische Funktionen (Kamera, Bluetooth, Biometrie) werden native Bibliotheken über Android Bindings (Kotlin/Java) und iOS Bindings (Objective-C/Swift) verwendet. CommunityToolkit.Maui bietet vorgefertigte Wrapper für häufige Szenarien.
Der Unterschied in der Leistung ist minimal. .NET MAUI mit Handlers und Native AOT unter iOS erreicht 95–98% der Leistung einer nativen SwiftUI-Anwendung. Unter Android beträgt der Unterschied zu einer Kotlin-Anwendung 3–7% in UI-Rendering-Tests (Microsoft Benchmarks, 2024). Für die meisten Geschäftsanwendungen ist der Unterschied für den Benutzer nicht wahrnehmbar.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch