Ú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.

Enterprise Application Patterns Using .NET MAUI eBook cover thumbnail.

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, eShopOnContainers, což je online obchod, který obsahuje následující funkce:

  • Ověřování a autorizace proti back-endové službě
  • Procházení katalogu košil, kávových hrnek a dalších marketingových 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.

eShopOnContainers high-level architecture

Ukázková aplikace se dodává se třemi klientskými aplikacemi:

  • Aplikace MVC vyvinutá s ASP.NET Core.
  • Jednostránková aplikace (SPA) vyvinutá pomocí Angular 2 a Typescriptu. Tento přístup pro webové aplikace zabraňuje provedení odezvy na server s každou operací.
  • Multiformní aplikace vyvinutá pomocí .NET MAUI, která podporuje iOS, Android, macOS přes Mac Catalyst a Windows 10/11.

Informace o webových aplikacích naleznete v tématu Návrh a vývoj moderních webových aplikací pomocí ASP.NET Core a Microsoft Azure.

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 MVC a nasazují se jako jedinečné kontejnery v rámci jednoho hostitele Dockeru. Společně se tyto back-endové služby označují jako referenční aplikace eShopOnContainers. 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 Dockeru najdete v tématu Kontejnerizované mikroslužby.

Informace o implementaci back-endových služeb naleznete v tématu Mikroslužby .NET: Architektura pro kontejnerizované aplikace .NET.

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 eShopOnContainers. Následující obrázek ukazuje stránky z multiformní aplikace eShopOnContainers, která poskytuje funkce popsané dříve.

The eShopOnContainers MAUI app

Multi-platformní aplikace využívá back-endové služby poskytované referenční aplikací eShopOnContainers. 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 eShopOnContainers pro více platforem provádí následující funkce .NET MAUI :

  • XAML
  • Ovládací prvky
  • Vazby
  • Převaděče
  • 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 .NET MAUI v Centru pro vývojáře Microsoftu a vytváření multiformních aplikací pomocí .NET MAUI.

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

Řešení více platforem aplikací

Řešení multiformních aplikací eShopOnContainers 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 eShopOnContainers lze znovu použít v libovolné aplikaci .NET MAUI s malými nebo žádnými úpravami.

Projekt eShopOnContainers

Projekt eShopOnContainers 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í.
Převaděče 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.