Popis architektury .NET MAUI

Dokončeno

Běžným vzorem používaným pro vývoj multiplatformních aplikací je faktorovat obchodní logiku z uživatelského rozhraní a pak vyvíjet samostatná uživatelská rozhraní a logiku uživatelského rozhraní pro každou platformu. Zatímco obchodní logika zůstává pro každý typ zařízení nezměněná, kód, který řídí aplikaci a prezentuje data, se můžou lišit. Tato odchylka je způsobená různými možnostmi, rozhraními API a funkcemi, které zařízení poskytují. Vytváření multiplatformní aplikace tímto způsobem zahrnuje nejen samostatné sady SDK (Software Development Kit), ale zcela různé jazyky a sady nástrojů.

Účelem rozhraní .NET MAUI (multiplatformní aplikační uživatelské rozhraní) je zjednodušit vývoj multiplatformních aplikací. Pomocí rozhraní .NET MAUI vytvoříte víceplatformní aplikace pomocí jednoho projektu, ale v případě potřeby můžete přidat zdrojový kód a prostředky specifické pro danou platformu. Klíčovým cílem rozhraní .NET MAUI je umožnit implementaci co největší části logiky aplikace a rozložení uživatelského rozhraní v jediném základu kódu.

V této lekci se dozvíte o architektuře .NET MAUI a nástrojích potřebných k sestavení aplikací .NET MAUI.

Co je sada technologií .NET MAUI?

.NET poskytuje řadu architektur specifických pro platformu pro vytváření aplikací: .NET pro Android, .NET pro iOS (a iPadOS), .NET pro Mac a WinUI 3 (pomocí sady Windows App SDK). Všechny tyto architektury mají přístup ke stejné knihovně základních tříd .NET 6 (BCL). Tato knihovna poskytuje funkce pro vytváření a správu prostředků a obecně abstrakci podrobností o podkladovém zařízení mimo váš kód. Seznam BCL závisí na modulu runtime .NET, aby poskytoval spouštěcí prostředí pro váš kód. Mono, opensourcová implementace modulu runtime .NET, implementuje prostředí Android, iOS (a iPadOS) a macOS. Win32 ve Windows provádí stejnou roli, s výjimkou toho, že je optimalizovaná pro platformu Windows.

I když seznam BCL umožňuje aplikacím běžícím na různých typech zařízení sdílet společnou obchodní logiku, různé platformy mají různé způsoby definování uživatelského rozhraní aplikace. Platformy poskytují různé modely pro určení způsobu komunikace a spolupráce prvků uživatelského rozhraní. Uživatelské rozhraní pro každou platformu můžete vytvořit samostatně pomocí příslušné architektury specifické pro platformu (.NET pro Android, .NET pro iOS, .NET pro Mac nebo WinUI 3). Tento přístup ale vyžaduje, abyste zachovali základ kódu pro každou řadu jednotlivých zařízení. .NET MAUI poskytuje jednu architekturu pro vytváření uživatelských rozhraní pro mobilní a desktopové aplikace. Uživatelské rozhraní vytvoříte pomocí této architektury (označenou šipkou 1 v následujícím diagramu) a rozhraní .NET MAUI se postará o jeho převod na příslušnou platformu (šipka 2).

Někdy může docházet k tomu, že potřebujete implementovat funkci specifickou pro platformu. V těchto situacích můžete vyvolat metody v rozhraní specifické pro platformu, jak je zvýrazněno šipkou 3 v následujícím diagramu.

Diagram sady technologií .NET MAUI a implementace funkce specifické pro platformu

Jak funguje .NET MAUI?

.NET MAUI abstrahuje implementaci prvku uživatelského rozhraní z jeho logického popisu. Uživatelské rozhraní můžete popsat pomocí jazyka XAML (Extensible Application Markup Language), neutrálního jazyka založeného na jazyce XML. Například následující fragment XAML ukazuje popis ovládacího prvku tlačítka:

<Button Text="Click me"
        SemanticProperties.Hint="Counts the number of times you click"
        Clicked="OnCounterClicked"
        HorizontalOptions="Center" />

Tento příklad definuje popisek tlačítka ("Click me") a určuje, že pojmenovaná metoda OnCounterClicked by se měla spustit, když uživatel tlačítko vybere. Jiné vlastnosti mohou změnit rozložení tlačítka a textu; v tomto příkladu je text zacentrovaný na tlačítku. Sémantické vlastnosti poskytují podporu přístupnosti pro uživatele se zrakovým postižením.

.NET MAUI vždy generuje nativní kód pro cílové zařízení, takže získáte optimální výkon. .NET MAUI používá obslužné rutiny specifické pro každou platformu a prvek uživatelského rozhraní k provedení operace. Pokud například cílíte na iOS pro aplikaci, obslužná rutina .NET MAUI mapuje tento kód na iOS UIButton. Pokud používáte Android, získáte Android AppCompatButton. K těmto obslužným rutinám se přistupuje nepřímo prostřednictvím rozhraní specifického pro řízení, které poskytuje rozhraní .NET MAUI, například IButton pro tlačítko.

Diagram mapování ovládacího prvku XAML na nativní ovládací prvek .NET MAUI Zobrazuje ovládací prvek .NET MAUI implementuje rozhraní, které implementuje také každá nativní obslužná rutina.

Poznámka:

Pokud chcete, můžete také vytvořit uživatelské rozhraní dynamicky pomocí kódu jazyka C#. Tento přístup umožňuje upravit rozložení podle prostředí. Pokud například uživatel nemá odpovídající úroveň autorizace, nemusí se některé ovládací prvky zobrazovat.

.NET MAUI usnadňuje přístup k běžným ovládacím prvkům, jako jsou tlačítka. Další běžné ovládací prvky, jako jsou pole pro zadávání textu, popisky a výběr data, jsou stejně snadné. Jednotlivé ovládací prvky ale nestačí k vytvoření vhodné platformy pro vytváření bohatých aplikací. .NET MAUI také poskytuje:

  • Propracovaný modul rozložení pro navrhování stránek.
  • Více typů stránek pro vytváření bohatých navigačních typů, jako jsou zásuvky.
  • Podpora datových vazeb pro elegantnější a udržovatelné vývojové vzory
  • Možnost vytvářet vlastní obslužné rutiny pro vylepšení způsobu, jakým jsou prezentovány prvky uživatelského rozhraní.
  • Přímý přístup k nativním rozhraním API a abstrakci mnoha běžných potřeb mobilních a desktopových aplikací, které jsou oddělené od uživatelského rozhraní. Základní knihovna umožňuje aplikaci přistupovat k věcem, jako je GPS, akcelerometr a stav baterie a sítě. V této knihovně jsou k dispozici desítky senzorů a služeb, které jsou společné pro vývoj mobilních zařízení.

Kontrola znalostí

1.

Které prostředí poskytuje podporu modulu runtime pro aplikaci WinUI 3?

2.

Který jazyk značek můžete použít k rozložení uživatelského rozhraní pro aplikaci .NET MAUI?