Sdílet prostřednictvím


Úvod do .NET MAUI

Tip

Tento obsah je výňatek z elektronické knihy, vzory podnikových aplikací pomocí .NET MAUI, dostupné na .NET Docs nebo jako zdarma ke stažení PDF, které lze číst offline.

Vzory podnikových aplikací pomocí úvodní miniatury eBooku .NET MAUI

Bez ohledu na platformu čelí vývojáři podnikových aplikací několika výzvám:

  • Požadavky aplikace, které se můžou v průběhu času měnit.
  • Nové obchodní příležitosti a výzvy.
  • Průběžná zpětná vazba během vývoje, která může významně ovlivnit rozsah a požadavky aplikace.

S ohledem na tyto aspekty je důležité vytvářet aplikace, které je možné snadno upravit nebo prodloužit v průběhu času. Navrhování takové adaptability může být obtížné, protože vyžaduje architekturu, která umožňuje nezávisle vyvíjet a testovat jednotlivé části aplikace, aniž by to mělo vliv na zbytek aplikace.

Mnoho podnikových aplikací je dostatečně složité, aby vyžadovalo více než jednoho vývojáře. Může být velmi náročné rozhodnout se, jak navrhnout aplikaci, aby více vývojářů mohlo efektivně pracovat na různých částech aplikace nezávisle na sobě a současně zajistit, aby se jednotlivé části při integraci do aplikace bezproblémově spojily.

Tradiční přístup k návrhu a sestavení aplikace vede k tomu, co se označuje jako monolitická aplikace, kde jsou komponenty úzce svázané bez jasného oddělení mezi nimi. Tento monolitický přístup obvykle vede k aplikacím, které jsou obtížné a neefektivní k údržbě, protože může být obtížné vyřešit chyby bez přerušení jiných komponent v aplikaci a může být obtížné přidat nové funkce nebo nahradit stávající funkce.

Účinným řešením těchto problémů je rozdělit aplikaci do samostatných volně propojených komponent, které je možné snadno integrovat do aplikace. Takový přístup nabízí několik výhod:

  • Umožňuje vyvíjet, testovat, rozšiřovat a udržovat jednotlivé funkce různými jednotlivci nebo týmy.
  • Podporuje opakované použití a čisté oddělení obav mezi horizontálními možnostmi aplikace, jako je ověřování a přístup k datům, a vertikálními funkcemi, jako jsou specifické obchodní funkce aplikace. To umožňuje snadnější správu závislostí a interakcí mezi komponentami aplikace.
  • Pomáhá udržovat oddělení rolí tím, že umožňuje různým jednotlivcům nebo týmům zaměřit se na konkrétní úkol nebo část funkčnosti podle jejich odborných znalostí. Konkrétně poskytuje čistější oddělení mezi uživatelským rozhraním a obchodní logikou aplikace.

Při dělení aplikace do samostatných volně propojených komponent je však potřeba vyřešit mnoho problémů. Tady jsou některé z nich:

  • Rozhodování o tom, jak zajistit čisté oddělení obav mezi ovládacími prvky uživatelského rozhraní a jejich logikou. Jedním z nejdůležitějších rozhodnutí při vytváření podnikové aplikace .NET MAUI je, jestli se má obchodní logika umístit do souborů kódu, nebo jestli vytvořit čisté oddělení obav mezi ovládacími prvky uživatelského rozhraní a jejich logikou, aby byla aplikace udržovatelná a testovatelná. Další informace naleznete v tématu Model-View-ViewModel.
  • Určení, jestli se má použít kontejner injektáž závislostí. Kontejnery injektáže závislostí snižují propojení závislostí mezi objekty tím, že poskytují zařízení pro vytváření instancí tříd s vloženými závislostmi a správu jejich životnosti na základě konfigurace kontejneru. Další informace naleznete v tématu Injektáž závislostí.
  • Volba mezi platformou poskytovanou událostmi a volně propojenou komunikací založenou na zprávách mezi komponentami, které jsou nevhodné pro propojení podle odkazů na objekt a typ. Další informace naleznete v tématu Úvod do komunikace mezi volně propojenými komponentami.
  • Rozhodování o tom, jak přecházet mezi stránkami, včetně způsobu vyvolání navigace a umístění navigační logiky Další informace najdete v článku o navigaci.
  • Určení, jak ověřit správnost vstupu uživatele Rozhodnutí musí zahrnovat, jak ověřit vstup uživatele a jak uživatele informovat o chybách ověření. Další informace najdete v tématu Ověření.
  • Rozhodování o tom, jak provádět ověřování a jak chránit prostředky s autorizací Další informace najdete v tématu Ověřování a autorizace.
  • Určení přístupu ke vzdáleným datům z webových služeb, včetně toho, jak spolehlivě načítat data a jak ukládat data do mezipaměti Další informace najdete v tématu Přístup ke vzdáleným datům.
  • Rozhodování o tom, jak aplikaci otestovat Další informace najdete v tématu Testování částí.

Tato příručka obsahuje pokyny k těmto problémům a zaměřuje se na základní vzory a architekturu pro vytvoření podnikové aplikace pro různé platformy pomocí .NET MAUI. Cílem těchto pokynů je pomoct vytvářet přizpůsobitelné, udržovatelné a testovatelné kódy tím, že řeší běžné scénáře vývoje podnikových aplikací .NET MAUI a oddělením obav prezentace, logiky prezentace a entit prostřednictvím podpory modelu modelu-View-ViewModel (MVVM).

Ukázková aplikace

Tato příručka obsahuje ukázkovou aplikaci, eShop, což je online obchod, který obsahuje následující funkce:

  • Ověřování a autorizace proti back-endové službě
  • Procházení katalogu položek
  • Filtrování katalogu
  • Řazení položek z katalogu
  • Zobrazení historie objednávek uživatele
  • Konfigurace nastavení

Ukázková architektura aplikace

Níže je základní přehled architektury ukázkové aplikace.

Architektura vysoké úrovně eShopu

Ukázková aplikace se dodává s:

  • Hostování a orchestrace aplikací .NET Aspire
  • Webová aplikace Blazor vyvinutá s ASP.NET Core.
  • Multiformní aplikace vyvinutá pomocí .NET MAUI, která podporuje iOS, Android, macOS přes Mac Catalyst a Windows.

Ukázková aplikace obsahuje následující back-endové služby:

  • Mikroslužba identity, která používá ASP.NET Základní identita a IdentityServer.
  • Mikroslužba katalogu, což je služba vytvoření, čtení, aktualizace, odstranění (CRUD), která využívá databázi SQL Serveru pomocí EntityFramework Core.
  • Objednání mikroslužby, což je služba řízená doménou, která používá vzory návrhu řízené doménou.
  • Mikroslužba košíku, což je služba CRUD řízená daty, která používá Redis Cache.

Tyto back-endové služby se implementují jako mikroslužby pomocí ASP.NET Core a nasazují se jako jedinečné kontejnery s .NET Aspire. Společně se tyto back-endové služby označují jako referenční aplikace eShopu. Klientské aplikace komunikují s back-endovými službami prostřednictvím webového rozhraní REST (Representational State Transfer). Další informace o mikroslužbách a konainerech najdete v tématu Kontejnerizované mikroslužby.

Více platforem aplikace

Tato příručka se zaměřuje na vytváření multiplatformních podnikových aplikací pomocí .NET MAUIa jako příklad používá multiplatformní aplikaci eShop. Následující obrázek ukazuje stránky z multiformní aplikace eShop, které poskytují funkce popsané dříve.

Aplikace eShop MAUI

Aplikace pro více platforem využívá back-endové služby poskytované referenční aplikací eShop. Dá se ale nakonfigurovat tak, aby spotřebovávali data ze napodobených služeb pro ty, kteří chtějí zabránit nasazení back-endových služeb.

Aplikace eShop pro více platforem provádí následující funkce .NET MAUI :

  • XAML
  • Ovládací prvky
  • Vazby
  • Konvertory
  • Styly
  • Animace
  • Příkazy
  • Chování
  • Aktivační události
  • Účinek
  • Vlastní ovládací prvky

Další informace o této funkci najdete v dokumentaci k .NETMAUI.

Testy jednotek jsou navíc k dispozici pro některé třídy v aplikaci eShop pro více platforem.

Řešení více platforem aplikací

Řešení více platforem eShopu uspořádá zdrojový kód a další prostředky do několika projektů. Všechny základní mobilní komponenty jsou obsaženy v jednotném projektu s názvem eShopContainers. Toto je funkce zavedená v .NET 6, která umožňuje projektu cílit na více výstupů, což pomáhá eliminovat potřebu více projektů platformy, které bychom použili v Xamarin.Forms a starších verzích .NET. Další projekt je součástí testování jednotek.

I když má tento projekt všechny jeho komponenty uložené v jednotném projektu, stojí za to zvážit oddělení do několika projektů na základě vašich potřeb. Pokud máte například více implementací poskytovatelů služeb založených na službě s vlastními závislostmi, může být vhodné tyto implementace poskytovatele služeb rozdělit do vlastního samostatného projektu. Mezi vhodné kandidáty pro oddělení projektů patří sdílené modely, implementace služeb, klientské komponenty rozhraní API, databáze nebo vrstvy ukládání do mezipaměti. Jakékoli místo, kde se cítíte, že by firma mohla znovu použít komponentu v jiném projektu, je potenciálním kandidátem na oddělení. Tyto projekty je pak možné zabalit prostřednictvím NuGetu pro snadnou distribuci a správu verzí.

Všechny projekty používají složky k uspořádání zdrojového kódu a dalších prostředků do kategorií. Třídy z multiformní aplikace eShop lze znovu použít v libovolné aplikaci .NET MAUI s malými nebo žádnými úpravami.

Projekt eShop

Projekt eShop obsahuje následující složky:

Složka Popis
Animace Obsahuje třídy, které umožňují použití animací v XAML.
Chování Obsahuje chování, která jsou vystavena třídám zobrazení.
Ovládací prvky Obsahuje vlastní ovládací prvky používané aplikací.
Konvertory Obsahuje převaděče hodnot, které na vazbu aplikují vlastní logiku.
Výjimky Obsahuje vlastní serviceAuthenticationException.
Rozšíření Obsahuje rozšiřující metody pro třídy VisualElement a IEnumerable<T> třídy.
Pomocníci Obsahuje pomocné třídy pro aplikaci.
Modely Obsahuje třídy modelu pro aplikaci.
Vlastnosti Obsahuje AssemblyInfo.cs, soubor metadat sestavení .NET.
Služby Obsahuje rozhraní a třídy, které implementují služby poskytované aplikaci.
Triggery Obsahuje trigger BeginAnimation, který se používá k vyvolání animace v XAML.
Ověření Obsahuje třídy zahrnuté do ověřování vstupu dat.
Modely Zobrazení Obsahuje logiku aplikace, která je vystavená stránkám.
Zobrazení Obsahuje stránky aplikace.

Shrnutí

Multiplatformní vývojářské nástroje a platformy multiplatformních aplikací od Microsoftu poskytují komplexní řešení pro mobilní klientské aplikace B2E, B2B a B2C, které poskytují možnost sdílet kód napříč všemi cílovými platformami (iOS, macOS, Android a Windows) a pomáhá snížit celkové náklady na vlastnictví. Aplikace můžou sdílet své uživatelské rozhraní a kód logiky aplikace a přitom zachovat vzhled a chování nativní platformy.

Vývojáři podnikových aplikací čelí několika výzvám, které mohou během vývoje změnit architekturu aplikace. Proto je důležité vytvořit aplikaci, aby ji bylo možné upravit nebo prodloužit v průběhu času. Navrhování takové adaptability může být obtížné, ale obvykle zahrnuje rozdělení aplikace do samostatných volně propojených komponent, které lze snadno integrovat do aplikace.