Megosztás a következőn keresztül:


Bevezetés a .NET használatába MAUI

Tipp.

Ez a tartalom egy részlet az eBook, Enterprise Application Patterns Using .NET MAUI, elérhető a .NET Docs vagy egy ingyenesen letölthető PDF, hogy lehet olvasni offline.

Vállalati alkalmazásminták .NET-alapú MAUI eBook-borító miniatűr használatával.

Platformtól függetlenül a nagyvállalati alkalmazások fejlesztői számos kihívással szembesülnek:

  • Az alkalmazásra vonatkozó követelmények, amelyek idővel változhatnak.
  • Új üzleti lehetőségek és kihívások.
  • Folyamatos visszajelzés a fejlesztés során, amely jelentősen befolyásolhatja az alkalmazás hatókörét és követelményeit.

Ezeket szem előtt tartva fontos, hogy olyan alkalmazásokat hozzon létre, amelyek könnyen módosíthatók vagy meghosszabbíthatók az idő múlásával. Az ilyen alkalmazkodóképesség kialakítása nehéz lehet, mivel olyan architektúrát igényel, amely lehetővé teszi az alkalmazás egyes részeinek önálló fejlesztését és tesztelését külön-külön, az alkalmazás többi részének befolyásolása nélkül.

Sok nagyvállalati alkalmazás elég összetett ahhoz, hogy több fejlesztőt igényeljen. Jelentős kihívást jelenthet, ha eldönti, hogyan kell megtervezni egy alkalmazást, hogy több fejlesztő is hatékonyan működjön egymástól függetlenül az alkalmazás különböző részein, miközben biztosítja, hogy a részek zökkenőmentesen össze legyenek építve az alkalmazásba.

Az alkalmazások tervezésének és készítésének hagyományos megközelítése monolitikus alkalmazásnak nevezik, ahol az összetevők szorosan kapcsolódnak egymáshoz, és nincs egyértelmű elkülönítés közöttük. Ez a monolitikus megközelítés általában olyan alkalmazásokat eredményez, amelyek fenntartása nehéz és nem hatékony, mivel nehéz lehet a hibákat megoldani anélkül, hogy az alkalmazás más összetevőit feltörné, és nehéz lehet új funkciókat hozzáadni, vagy lecserélni a meglévő funkciókat.

Ezeknek a kihívásoknak a hatékony megoldása az alkalmazások különálló, lazán összekapcsolt összetevőkre való particionálása, amelyek könnyen integrálhatók egy alkalmazásba. Az ilyen megközelítés számos előnnyel jár:

  • Lehetővé teszi, hogy az egyes funkciókat különböző személyek vagy csapatok fejleszthetik, tesztelhetik, bővíthetik és karbantarthatják.
  • Elősegíti az újrafelhasználást, valamint az alkalmazás horizontális képességei, például a hitelesítés és az adathozzáférés, valamint a vertikális képességek, például az alkalmazásspecifikus üzleti funkciók közötti aggodalmak tiszta elkülönítését. Ez lehetővé teszi az alkalmazásösszetevők közötti függőségek és interakciók egyszerűbb kezelését.
  • Segít fenntartani a szerepkörök elkülönítését azáltal, hogy lehetővé teszi a különböző személyek vagy csapatok számára, hogy szakértelmüknek megfelelően egy adott feladatra vagy funkcióra összpontosítsanak. Ez különösen a felhasználói felület és az alkalmazás üzleti logikája közötti tisztább elkülönítést biztosítja.

Számos problémát azonban meg kell oldani az alkalmazások különálló, lazán összekapcsolt összetevőkre való particionálásakor. Ezek közé tartoznak:

  • Annak eldöntése, hogyan biztosíthatja a felhasználói felület vezérlői és logikája közötti aggodalmak tiszta elkülönítését. A .NET MAUI nagyvállalati alkalmazások létrehozásakor az egyik legfontosabb döntés az, hogy az üzleti logikát kód mögötti fájlokban helyezik-e el, vagy a felhasználói felület vezérlői és logikája közötti aggodalmak tiszta elkülönítését hozzák létre annak érdekében, hogy az alkalmazás karbantarthatóbb és tesztelhetőbb legyen. További információ: Model-View-ViewModel.
  • Annak meghatározása, hogy függőségi injektálási tárolót használ-e. A függőséginjektálási tárolók csökkentik az objektumok közötti függőségi kapcsolatot azáltal, hogy lehetővé teszi az osztályok példányainak létrehozására az injektált függőségekkel, és a tároló konfigurációja alapján kezelhetik élettartamukat. További információ: Függőséginjektálás.
  • A platform által biztosított esemény és a lazán összekapcsolt üzenetalapú kommunikáció közötti választás olyan összetevők között, amelyek nem képesek objektum- és típushivatkozások alapján összekapcsolni azokat. További információ: Bevezetés a lazán összekapcsolt összetevők közötti kommunikációba.
  • A lapok közötti navigálás módjának eldöntése, beleértve a navigáció meghívását és a navigációs logika helyét. További információ: Navigáció.
  • A felhasználói bemenet helyességének ellenőrzésének meghatározása. A döntésnek tartalmaznia kell a felhasználói adatok ellenőrzésének módját, valamint azt, hogy miként értesítheti a felhasználót az érvényesítési hibákról. További információ: Érvényesítés.
  • A hitelesítés végrehajtásának és az erőforrások hitelesítéssel történő védelmének eldöntése. További információ: Hitelesítés és engedélyezés.
  • A távoli adatok webszolgáltatásokból való elérésének meghatározása, beleértve az adatok megbízható lekérésének és az adatok gyorsítótárazásának módját. További információ: Távoli adatok elérése.
  • Az alkalmazás tesztelésének eldöntése. További információ: Egységtesztelés.

Ez az útmutató útmutatást nyújt ezekhez a problémákhoz, és a .NET MAUIhasználatával történő platformfüggetlen vállalati alkalmazások létrehozásának alapvető mintáira és architektúrájára összpontosít. Az útmutató célja, hogy segítsen az adaptálható, karbantartható és tesztelhető kód előállításában, a gyakori .NET MAUI vállalati alkalmazásfejlesztési forgatókönyvek megoldásával, valamint a bemutató, a bemutatólogika és az entitások aggodalmainak elkülönítésével a Model-View-ViewModel (MVVM) minta támogatásával.

Mintaalkalmazás

Ez az útmutató egy eShop nevű mintaalkalmazást tartalmaz, amely egy online áruház, amely a következő funkciókat tartalmazza:

  • Hitelesítés és engedélyezés háttérszolgáltatással.
  • Elemek katalógusának böngészése.
  • A katalógus szűrése.
  • Elemek rendelése a katalógusból.
  • A felhasználó rendelési előzményeinek megtekintése.
  • Beállítások konfigurálása.

Mintaalkalmazás-architektúra

Az alábbiakban a mintaalkalmazás architektúrájának magas szintű áttekintése látható.

eShop magas szintű architektúra

A mintaalkalmazás három ügyfélalkalmazást szállít:

  • A ASP.NET Core-nal kifejlesztett MVC-alkalmazás.
  • Az Angular 2 és Typescript használatával kifejlesztett egyoldalas alkalmazás (SPA). A webalkalmazások ezzel a megközelítéssel elkerülhetik, hogy minden művelettel oda-vissza térjenek a kiszolgálóra.
  • A .NET-tel MAUIfejlesztett többplatformos alkalmazás, amely támogatja az iOS, Android és macOS rendszert a Mac Catalyst és a Windows 10/11 rendszeren keresztül.

A webalkalmazásokról további információt a Modern webalkalmazások ASP.NET Core és Microsoft Azure használatával történő kialakításával és fejlesztésével kapcsolatban talál.

A mintaalkalmazás a következő háttérszolgáltatásokat tartalmazza:

  • Egy identitás mikroszolgáltatás, amely ASP.NET Core Identity és IdentityServer szolgáltatást használ.
  • Katalógus mikroszolgáltatás, amely egy adatvezérelt létrehozási, olvasási, frissítési, törlési (CRUD) szolgáltatás, amely egy SQL Server-adatbázist használ az EntityFramework Core használatával.
  • Egy rendelési mikroszolgáltatás, amely egy tartományalapú szolgáltatás, amely tartományalapú tervezési mintákat használ.
  • Egy kosár mikroszolgáltatás, amely egy redis cache-t használó, adatvezérelt CRUD-szolgáltatás.

Ezek a háttérszolgáltatások mikroszolgáltatásként vannak implementálva ASP.NET Core MVC használatával, és egyedi tárolóként vannak üzembe helyezve egyetlen Docker-gazdagépen belül. Ezeket a háttérszolgáltatásokat együttesen eShop referenciaalkalmazásnak nevezzük. Az ügyfélalkalmazások egy rest webes felületen kommunikálnak a háttérszolgáltatásokkal. A mikroszolgáltatásokról és a Dockerről további információt a Tárolóalapú mikroszolgáltatások című témakörben talál.

A háttérszolgáltatások implementálásáról további információt a .NET Microservices: Architecture for Containerized .NET Applications (Tárolóalapú .NET-alkalmazások architektúrája) című témakörben talál.

Többplatformos alkalmazás

Ez az útmutató a platformfüggetlen nagyvállalati alkalmazások .NET MAUIhasználatával történő kiépítésére összpontosít, és példaként az eShop többplatformos alkalmazást használja. Az alábbi képen az eShop többplatformos alkalmazás lapjai láthatók, amelyek a korábban felvázolt funkciókat biztosítják.

Az eShop MAUI alkalmazás

A többplatformos alkalmazás az eShop referenciaalkalmazás által biztosított háttérszolgáltatásokat használja. Azonban konfigurálható úgy, hogy a modellszolgáltatásokból származó adatokat felhasználja azoknak, akik el szeretnék kerülni a háttérszolgáltatások üzembe helyezését.

Az eShop többplatformos alkalmazás a következő .NET-funkciókat MAUI gyakorolja:

  • XAML
  • Vezérlők
  • Kötések
  • Konverterek
  • Stílusok
  • Animációk
  • Parancsok
  • Viselkedésmódok
  • Triggerek
  • Hatások
  • Egyéni vezérlők

További információ erről a funkcióról: .NET-dokumentáció a Microsoft Fejlesztői központban, valamint többplatformos alkalmazások létrehozása a .NET-telMAUI.MAUI

Emellett az egységtesztek az eShop többplatformos alkalmazás egyes osztályaihoz is elérhetők.

Többplatformos alkalmazásmegoldás

Az eShop többplatformos alkalmazásmegoldás több projektbe rendezi a forráskódot és az egyéb erőforrásokat. Az összes alapvető mobilösszetevő egy eShopContainers nevű egyedi projektben található. Ez a .NET 6-ban bevezetett funkció lehetővé teszi, hogy egy projekt több kimenetet célozzon meg, ami segít kiküszöbölni a Xamarin.Formsban és a korábbi .NET-verziókban használt több platformprojekt szükségességét. Az egységteszteléshez további projekt is tartozik.

Bár ennek a projektnek az összes összetevője egyedi projektben van tárolva, érdemes megfontolni, hogy az igényeinek megfelelően több projektre különítse el. Ha például több, saját függőségekkel rendelkező szolgáltatáson alapuló szolgáltatói implementációval rendelkezik, érdemes lehet ezeket a szolgáltatói implementációkat külön projektbe bontani. A projektek elkülönítésére alkalmas jelöltek közé tartoznak a megosztott modellek, a szolgáltatás implementációi, az API-ügyfélösszetevők, az adatbázis- vagy gyorsítótárazási rétegek. Minden olyan hely, ahol úgy érzi, hogy az üzlet újra felhasználhat egy összetevőt egy másik projektben, potenciálisan alkalmas az elkülönítésre. Ezek a projektek ezután a NuGeten keresztül csomagolhatók a könnyű terjesztés és verziószámozás érdekében.

Az összes projekt mappák használatával rendezi a forráskódot és más erőforrásokat kategóriákba. Az eShop többplatformos alkalmazás osztályai bármilyen .NET-alkalmazásban MAUI újra felhasználhatók, módosítás nélkül.

eShop projekt

Az eShop projekt a következő mappákat tartalmazza:

Mappa Leírás
Animációk Olyan osztályokat tartalmaz, amelyek lehetővé teszik az animációk használatát az XAML-ben.
Viselkedésmódok Olyan viselkedéseket tartalmaz, amelyek az osztályok megtekintéséhez vannak közzétéve.
Vezérlők Az alkalmazás által használt egyéni vezérlőket tartalmazza.
Konverterek Olyan értékkonvertereket tartalmaz, amelyek egyéni logikát alkalmaznak egy kötésre.
Kivételek Az egyéni ServiceAuthenticationExceptionet tartalmazza.
Kiterjesztés Bővítménymetelyeket tartalmaz az osztályokhoz és IEnumerable<T> az VisualElement osztályokhoz.
Segítők Segédosztályokat tartalmaz az alkalmazáshoz.
Modellek Az alkalmazás modellosztályai.
Tulajdonságok Egy .NET-szerelvény metaadatfájlja, AssemblyInfo.cs tartalmaz.
Szolgáltatások Olyan felületeket és osztályokat tartalmaz, amelyek az alkalmazás számára biztosított szolgáltatásokat implementálják.
Eseményindítók A BeginAnimation eseményindítót tartalmazza, amely egy animáció XAML-ben való meghívására szolgál.
Érvényesítés Az adatbevitel ellenőrzésében részt vevő osztályokat tartalmazza.
ViewModels A lapok számára elérhető alkalmazáslogikát tartalmazza.
Nézetek Az alkalmazás lapjait tartalmazza.

Összegzés

A Microsoft platformfüggetlen, többplatformos alkalmazásfejlesztési eszközei és platformjai átfogó megoldást nyújtanak a B2E, B2B és B2C mobilügyfél-alkalmazásokhoz, lehetővé teszik a kód megosztását az összes célplatformon (iOS, macOS, Android és Windows) és segítenek csökkenteni a teljes tulajdonosi költséget. Az alkalmazások megoszthatják felhasználói felületüket és alkalmazáslogika-kódjukat, miközben megtartják a natív platform megjelenését és hangulatát.

A nagyvállalati alkalmazások fejlesztői számos olyan kihívással szembesülnek, amelyek megváltoztathatják az alkalmazás architektúráját a fejlesztés során. Ezért fontos, hogy egy alkalmazást úgy hozzon létre, hogy az idővel módosítható vagy bővíthető legyen. Az ilyen alkalmazkodóképesség kialakítása nehéz lehet, de általában az alkalmazások különálló, lazán összekapcsolt összetevőkre való particionálásával jár, amelyek könnyen integrálhatók egy alkalmazásba.