.NET MAUI — je multiplatformní framework Microsoftu pro vytváření nativních aplikací v C# a XAML, vydaný v roce 2022 spolu s .NET 6. Podle Microsoft .NET MAUI Documentation, 2024, MAUI podporuje iOS, Android, Windows, macOS a Tizen, spojuje je do jediného projektu se společnou kódovou základnou. Framework je přímým nástupcem Xamarin.Forms.
Hlavní body
.NET MAUI (Multi-platform App UI) — je evoluce Xamarin.Forms, přepracovaná od základů pro .NET 6+. Na rozdíl od Xamarin.Forms, který vyžadoval samostatné projekty pro každou platformu, MAUI používá jednotnou strukturu se společným .csproj souborem a platformovými složkami Platforms/iOS, Platforms/Android, Platforms/Windows a Platforms/MacCatalyst. První stabilní vydání MAUI proběhlo v květnu 2022.
Klíčový rozdíl .NET MAUI od předchůdce — plná integrace s .NET 8 BCL (Base Class Library). Vývojáři mají přímý přístup k System.Text.Json, System.Net.Http, System.Linq, System.IO a dalším API bez dodatečného SDK. Xamarin.Forms používal .NET Standard 2.0 pro společnou logiku, což omezovalo přístup k novým možnostem platformy .NET.
Podle Microsoft Build 2024 je .NET MAUI používán ve 40 000+ aplikacích v App Store a Google Play. Mezi známé projekty patří UPS Mobile, The Weather Channel a Siemens Teamcenter. Microsoft aktivně vyvíjí MAUI v rámci .NET 9.
Oznámení .NET MAUI proběhlo na Microsoft Build 2020 jako součást strategie sjednocení .NET. Microsoft spojil .NET Core, Mono a .NET Framework do jediné platformy .NET 5+. Xamarin.Forms se stal základem pro MAUI, ale kódová základna byla kompletně přepsána: zastaralá API byla odstraněna, rendery nahrazeny Handlery, DependencyService nahrazen DI kontejnerem.
Verze .NET MAUI 8 (listopad 2023) přidala podporu Native AOT, vylepšený výkon CollectionView, Blazor Hybrid (vkládání Blazor komponent do MAUI aplikace) a nové mapování písem. .NET MAUI 9 (2024) zahrnuje podporu C# 12, vylepšenou integraci s WinUI 3 a macOS Sonoma a nové Drag & Drop API pro všechny platformy.
První rozdíl — jediná aplikace. V Xamarin.Forms byly pro iOS a Android potřeba dva samostatné projekty v jednom řešení. V .NET MAUI jeden projekt s platformovými složkami. To zjednodušuje navigaci v kódu, správu závislostí a CI/CD pipeline. Soubor .csproj používá formát SDK-style s TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.
Druhý rozdíl — architektura vykreslování pomocí Handlerů místo rendererů. V Xamarin.Forms měl každý prvek (Button, Label) svou vlastní třídu Renderer, která vytvářela nativní ovládací prvek. Pro přizpůsobení byl vyžadován Custom Renderer. V MAUI je Handler lehký objekt, který mapuje abstraktní prvek na nativní ovládací prvek a podporuje Property Mappers pro aktualizaci vlastností bez opětovného vytvoření ovládacího prvku.
Třetí rozdíl — jeden DI kontejner Microsoft.Extensions.DependencyInjection. Xamarin.Forms používal DependencyService pro registraci platformových implementací. MAUI vkládá DI do jádra frameworku: služby se registrují v MauiAppBuilder, řadiče přijímají závislosti přes konstruktor. To zjednodušuje testování a následuje moderní .NET praktiky.
Architektura .NET MAUI je založena na vícevrstvém modelu. Spodní vrstva — .NET BCL a Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). Střední vrstva — Microsoft.Maui.dll s jádrem frameworku: Handlers, Layout, Graphics, Controls. Horní vrstva — aplikace vývojáře s XAML stránkami, ViewModel a službami.
Single Project — je klíčová architektonická vlastnost .NET MAUI. Všechny soubory jsou rozděleny do tří kategorií: společný kód (Shared), platformový kód (Platforms) a zdroje (Resources). Multi-targeting v .csproj určuje, pro které platformy se aplikace sestavuje. Každá platforma kompiluje pouze svou složku Platforms a společný kód.
Platformový kód je umístěn v podmíněných složkách. Platforms/Android obsahuje MainActivity.cs, MainApplication.cs a AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist a Entitlements.plist. Platforms/Windows — Package.appxmanifest a App.xaml. Pro podmíněnou kompilaci v kódu se používají direktivy #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.
XAML — deklarativní značkovací jazyk, zděděný z Xamarin.Forms a WPF. V .NET MAUI se XAML používá pro popis stránek (ContentPage), rozvržení (VerticalStackLayout, Grid, FlexLayout), prvků (Label, Entry, Button, Image) a ovládacích prvků (CollectionView, CarouselView). XAML se kompiluje do formátu BAML ve fázi sestavení.
MVVM vzor je implementován přes CommunityToolkit.Mvvm — open-source knihovnu od Microsoftu. Atribut [ObservableProperty] generuje vlastnosti INotifyPropertyChanged, [RelayCommand] vytváří příkazy z metod. Source Generator CommunityToolkit.Mvvm 8.2 transformuje částečnou třídu ViewModel a generuje ObservableObject bez Reflection. To zrychluje Binding o 30% oproti ruční implementaci.
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 = "Stiskni mě",
BackgroundColor = Colors.Blue,
TextColor = Colors.White,
Command = new Command(async () =>
await DisplayAlert("Ahoj", "Světe", "OK"))
}
}
};
}
}
.NET MAUI podporuje 5 platforem: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) a Tizen 6.5+. Každá platforma používá vlastní sadu ovládacích prvků a API. iOS používá UIKit přes Mac Catalyst, Android — AndroidX přes Xamarin.Android, Windows — WinUI 3, macOS — AppKit přes Mac Catalyst.
Na iOS a Android MAUI používá stejné mechanismy vykreslování jako Xamarin.Forms — nativní UI ovládací prvky. Nicméně Handlers poskytují flexibilnější přizpůsobení. Pro platformovou konfiguraci Button na iOS se používá OnPlatform<Button> s PlatformConfiguration.iOS. Pro Windows MAUI používá WinUI 3 — moderní UI framework od Microsoftu s podporou Fluent Design System.
Podpora macOS byla přidána přes Mac Catalyst — technologii Apple, která spouští UIKit aplikace na Macu. To umožňuje 100% opětovné použití iOS MAUI kódu pro macOS verzi aplikace. Pro specifické Mac funkce (Menu Bar, Touch Bar) MAUI poskytuje platformová API přes Mac Catalyst a NSView obaly.
Tizen — platforma Samsung pro Smart TV, smartphony a chytré hodinky. Podpora Tizen v .NET MAUI je implementována přes Samsung Tizen .NET. Aplikace MAUI jsou kompilovány pro Tizen přes Samsung TizenFX vazby. Nicméně Tizen není prioritní platformou Microsoftu — aktualizace pro ni vycházejí se zpožděním 1–2 měsíců.
| Platforma | Minimální verze | UI framework | Status |
|---|---|---|---|
| iOS | iOS 15.0 | UIKit (Mac Catalyst) | Stabilní |
| Android | API 21 (5.0) | AndroidX / Material 3 | Stabilní |
| Windows | Win 10 1809 | WinUI 3 / Fluent Design | Stabilní |
| macOS | macOS 12.0 | AppKit (Mac Catalyst) | Stabilní |
| Tizen | Tizen 6.5 | TizenFX / Samsung | Doplňkové |
Jednotná kódová základna — .NET MAUI snižuje množství duplikace kódu. Jeden projekt v C# a XAML se kompiluje pro 5 platforem a poskytuje až 95% společného kódu pro aplikace s jednoduchým UI. Obchodní logika, služby, datové modely a HTTP klienti jsou ve společném kódu. Pouze platformové funkce (kamera, geolokace, biometrie) vyžadují samostatné implementace přes DI.
Výkon .NET MAUI je vyšší než u Xamarin.Forms. Handlers snižují režii vykreslování: testy Microsoftu ukazují snížení času vykreslování obrazovky o 20–30% oproti Xamarin.Forms 5.0. Native AOT na iOS kompiluje C# kód přímo do ARM64 instrukcí, eliminuje JIT kompilaci a zkracuje dobu spouštění o 40%.
Blazor Hybrid — jedinečná schopnost .NET MAUI. BlazorWebView vkládá Blazor komponenty přímo do MAUI aplikace. Vývojáři webových rozhraní mohou znovu používat Blazor komponenty (Razor stránky, JS-interop, CSS styly) v mobilní aplikaci. Blazor Hybrid funguje na všech 5 MAUI platformách bez změny kódu Blazor komponent.
Ekosystém .NET — přístup k tisícům NuGet balíčků: Entity Framework Core pro práci s databázemi, Serilog pro logování, Polly pro opakované HTTP požadavky, FluentValidation pro validaci. CommunityToolkit.Maui poskytuje hotové UI prvky: Popup, Toast, Snackbar, SemanticScreenReader pro přístupnost. .NET MAUI se integruje s Azure, SignalR a Microsoft Graph SDK.
Vývojářské nástroje — Visual Studio 2022 a Rider od JetBrains. XAML Hot Reload aktualizuje UI bez restartování aplikace za 1–2 sekundy. C# Hot Reload (od .NET 6+) překompiluje změnu metody bez restartování procesu. Visual Studio Debugger, Profiler a IntelliCode doplňují sadu nástrojů pro diagnostiku výkonu a kvality kódu.
Často kladené otázky
.NET MAUI — je multiplatformní framework Microsoftu pro vytváření nativních aplikací v C# a XAML pro iOS, Android, Windows, macOS a Tizen. Je nástupcem Xamarin.Forms, integrovaný do .NET 6+ a používá jeden projekt (Single Project) místo samostatných projektů pro každou platformu.
.NET MAUI používá jeden projekt, Handlery místo rendererů, vestavěný DI kontejner, Native AOT pro iOS a Blazor Hybrid. Xamarin.Forms vyžaduje samostatné projekty pro každou platformu, používá Custom Renderer pro přizpůsobení UI, DependencyService pro DI a nepodporuje Blazor. .NET MAUI je součástí .NET, Xamarin.Forms je samostatné SDK.
Ano, .NET MAUI podporuje macOS přes Mac Catalyst (minimální verze macOS 12.0). iOS aplikace na MAUI se automaticky kompilují pro Mac bez změn kódu. Pro nativní Mac funkce (Menu Bar, Dock, Touch ID) se používají platformová volání přes Mac Catalyst a NSView obaly ve složce Platforms/MacCatalyst.
Ne, .NET MAUI není kompatibilní s Dart/Flutter balíčky. MAUI používá ekosystém .NET a NuGet balíčky. Pro platformové funkce (kamera, Bluetooth, biometrie) se používají nativní knihovny přes Android Bindings (Kotlin/Java) a iOS Bindings (Objective-C/Swift). CommunityToolkit.Maui poskytuje hotové obaly pro oblíbené scénáře.
Rozdíl ve výkonu je minimální. .NET MAUI s Handlery a Native AOT na iOS dosahuje 95–98% výkonu nativní SwiftUI aplikace. Na Androidu je rozdíl s Kotlin aplikací 3–7% v testech vykreslování UI (Microsoft Benchmarks, 2024). Pro většinu obchodních aplikací je rozdíl pro uživatele nepostřehnutelný.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také