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, ale zcela různé jazyky a sady nástrojů.

Účelem rozhraní .NET MAUI 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 seznámíte s architekturou .NET MAUI a nástroji potřebnými k vytváření 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 (s využitím 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. Pro Android, iOS (a iPadOS) a macOS je prostředí implementované mono, opensourcovou implementací modulu runtime .NET. 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), ale tento přístup pak vyžaduje, abyste zachovali základ kódu pro každou řadu 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 of the .NET MAUI technology stack and how to implement a platform-specific feature.

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, 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á k provedení operace "obslužné rutiny" specifické pro každou platformu a prvek uživatelského rozhraní. Pokud například cílíte na iOS pro aplikaci, obslužná rutina .NET MAUI tento kód namapuje 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 of how .NET MAUI maps a XAML control to a native control. It shows the .NET MAUI control implements an interface that each native handler also implements.

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ě jednoduché. 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í.

Prověrka 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?