A .NET MAUI-architektúra ismertetése

Befejeződött

A platformfüggetlen alkalmazások fejlesztéséhez gyakran használt minta az üzleti logika figyelembe vétele a felhasználói felületről, majd külön felhasználói felületek és felhasználói felületi logika fejlesztése minden platformhoz. Bár az üzleti logika minden eszköztípus esetében változatlan marad, az alkalmazást meghajtó és az adatokat bemutató kód eltérő lehet. Ez a variancia az eszközök által biztosított különböző képességek, API-k és funkciók miatt van. A többplatformos alkalmazások ily módon történő létrehozása magában foglalja nem csak a különálló SDK-k, hanem a különböző nyelvek és eszközkészletek kezelését is.

A .NET MAUI célja a többplatformos alkalmazásfejlesztés egyszerűsítése. A .NET MAUI használatával egyetlen projekttel hozhat létre többplatformos alkalmazásokat, de szükség esetén platformspecifikus forráskódot és erőforrásokat is hozzáadhat. A .NET MAUI fő célja, hogy a lehető legtöbb alkalmazáslogikát és felhasználói felületi elrendezést implementálhassa egyetlen kódbázisban.

Ebben a leckében megismerkedhet a .NET MAUI architektúrával és a .NET MAUI-alkalmazások létrehozásához szükséges eszközökkel.

Mi a .NET MAUI technológiai verem?

A .NET platformspecifikus keretrendszereket biztosít az alkalmazások létrehozásához: .NET androidos, .NET for iOS (és iPadOS), .NET for Mac és WinUI 3 (a Windows-alkalmazás SDK kihasználva). Ezek a keretrendszerek mind ugyanahhoz a .NET 6 alaposztálytárhoz (BCL) férnek hozzá. Ez a kódtár az erőforrások létrehozására és kezelésére, valamint az alapul szolgáló eszköz részleteinek a kódtól való általános absztrakciójára szolgál. A BCL a .NET-futtatókörnyezettől függ, hogy megadja a kód végrehajtási környezetét. Android, iOS (és iPadOS) és macOS esetén a környezetet a Mono, a .NET-futtatókörnyezet nyílt forráskódú implementálása valósítja meg. Windows rendszeren a Win32 ugyanazt a szerepkört látja el, kivéve, ha a Windows platformra van optimalizálva.

Bár a BCL lehetővé teszi a különböző típusú eszközökön futó alkalmazások számára a közös üzleti logika megosztását, a különböző platformok különböző módokon határozzák meg az alkalmazások felhasználói felületét. A platformok különböző modelleket biztosítanak annak meghatározásához, hogy a felhasználói felület elemei hogyan kommunikálnak és működnek együtt. Az egyes platformok felhasználói felületét külön-külön készítheti el a megfelelő platformspecifikus keretrendszerrel (androidos.NET, .NET iOS, .NET for Mac vagy WinUI 3), de ez a megközelítés megköveteli, hogy minden egyes eszközcsaládhoz fenntartson egy kódbázist. A .NET MAUI egyetlen keretrendszert biztosít a mobil- és asztali alkalmazások felhasználói felületeinek létrehozásához. Ezzel a keretrendszerrel hozza létre a felhasználói felületet (az alábbi ábrán az 1. nyíl jelzi), és a .NET MAUI gondoskodik a megfelelő platformmá alakításáról (Arrow 2).

Előfordulhat, hogy platformspecifikus funkciót kell implementálnia. Ilyen helyzetekben metódusokat hívhat meg a platformspecifikus keretrendszerben, amint azt az alábbi diagram 3.

Diagram of the .NET MAUI technology stack and how to implement a platform-specific feature.

Hogyan működik a .NET MAUI?

A .NET MAUI a logikai leírásból absztrakciót hoz létre egy felhasználói felületi elem implementációjából. A felhasználói felületet egy XML-alapú platformsemleges nyelv, az XAML használatával ismertetheti. Az alábbi XAML-töredék például egy gombvezérlő leírását mutatja:

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

Ez a példa meghatározza a gomb címkéjét ("Kattintson rám"), és megadja, hogy egy elnevezett OnCounterClicked metódust kell futtatni, amikor a felhasználó kiválasztja a gombot. Más tulajdonságok módosíthatják a gomb és a szöveg elrendezését; ebben a példában a szöveg középre van kapcsolva a gombon. A szemantikai tulajdonságok támogatják a látássérült felhasználók akadálymentességét.

A .NET MAUI mindig natív kódot hoz létre a céleszközhöz, így optimális teljesítményt érhet el. A .NET MAUI az egyes platformokra és felhasználói felületi elemekre jellemző "kezelőket" használ egy művelet végrehajtásához. Ha például iOS-t céloz meg az alkalmazáshoz, egy .NET MAUI-kezelő leképezi ezt a kódot egy iOS-es UIButtonra. Ha Androidon fut, androidos AppCompatButtont fog kapni. Ezek a kezelők közvetetten a .NET MAUI által biztosított vezérlőspecifikus felületen keresztül érhetők el, például egy gombhoz az IButtonon keresztül.

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.

Megjegyzés:

Tetszés szerint dinamikusan is létrehozhatja a felhasználói felületet C# kóddal. Ezzel a módszerrel a környezetnek megfelelően módosíthatja az elrendezést. Előfordulhat például, hogy nem szeretné, hogy bizonyos vezérlők megjelenjenek, ha a felhasználó nem rendelkezik megfelelő engedélyezési szinttel.

A .NET MAUI megkönnyíti a gyakori vezérlők, például a gombok elérését. Az egyéb gyakori vezérlők – például a szövegbeviteli mezők, a címkék és a dátumválasztók – is ugyanolyan egyszerűek. Az egyes vezérlők azonban nem elegendőek ahhoz, hogy jó platformot hozzanak létre a gazdag alkalmazások létrehozásához. A .NET MAUI a következőket is biztosítja:

  • Bonyolult elrendezési motor lapok tervezéséhez.
  • Több oldaltípus a gazdag navigációs típusok, például a fiókok létrehozásához.
  • Az adatkötés támogatása elegánsabb és karbantarthatóbb fejlesztési mintákhoz.
  • Egyéni kezelők létrehozásának lehetősége a felhasználói felület elemeinek megjelenítésének javítására.
  • A natív API-khoz való közvetlen hozzáférés és a felhasználói felülettől különálló mobil & asztali alkalmazások számos gyakori igényének absztrakciója. Az alapvető fontosságú kódtár lehetővé teszi az alkalmazások számára, hogy hozzáférjenek olyan dolgokhoz, mint a GPS, a gyorsulásmérő, valamint az akkumulátor és a hálózati állapot. A mobilfejlesztéshez több tucat érzékelő és szolgáltatás is elérhető ezen a könyvtáron keresztül.

Tudáspróba

1.

Melyik környezet nyújt futtatókörnyezeti támogatást egy WinUI 3-alkalmazáshoz?

2.

Melyik korrektúranyelvet használhatja a .NET MAUI-alkalmazások felhasználói felületének elrendezéséhez?