.NET MAUI — co to je, architektura a multiplatformní vývoj

Autor: IT Sectr Publikováno: 2026-05-01 Doba čtení: 8 min

.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 — nástupce Xamarin.Forms, integrovaný do .NET 6+ bez samostatného SDK
  • Jeden Single Project nahrazuje tři samostatné projekty platforem
  • XAML a C# se používají pro deklarativní tvorbu UI a obchodní logiky
  • Handlers nahradily zastaralé renderery Xamarin.Forms pro platformovou abstrakci
  • Podpora 5 platforem: iOS, Android, Windows, macOS, Tizen

Co je .NET MAUI

.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.

Historie a původ .NET MAUI

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.

Rozdíl mezi .NET MAUI a Xamarin.Forms

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

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 a Multi-Targeting

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 a MVVM v .NET MAUI

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.

Příklad aplikace v .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 = "Stiskni mě",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Ahoj", "Světe", "OK"))
                }
            }
        };
    }
}

Platformy a podpora

.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ů.

PlatformaMinimální verzeUI frameworkStatus
iOSiOS 15.0UIKit (Mac Catalyst)Stabilní
AndroidAPI 21 (5.0)AndroidX / Material 3Stabilní
WindowsWin 10 1809WinUI 3 / Fluent DesignStabilní
macOSmacOS 12.0AppKit (Mac Catalyst)Stabilní
TizenTizen 6.5TizenFX / SamsungDoplňkové

Výhody .NET MAUI

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

Co je .NET MAUI?

.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.

Čím se .NET MAUI liší od Xamarin.Forms?

.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.

Podporuje .NET MAUI macOS?

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.

Lze použít Flutter balíčky v .NET MAUI?

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.

Je .NET MAUI pomalejší než nativní aplikace?

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í

  • .NET MAUI — multiplatformní framework Microsoftu v C# a XAML, nástupce Xamarin.Forms
  • Single Project s multi-targetingem nahrazuje 3 samostatné projekty jednou konfigurací
  • Handlers poskytují rychlejší vykreslování než renderery Xamarin.Forms
  • Blazor Hybrid umožňuje vkládání webových komponent přímo do mobilní aplikace
  • 5 platforem — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT na iOS zkracuje dobu spouštění o 40% a velikost binárního souboru
  • Zvolte .NET MAUI pro .NET projekty s potřebou multiplatformnosti a přístupu k nativním API

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í.

Prodiskutovat projekt

Přečtěte si také