Vzory podnikových aplikací s využitím Xamarin.Forms elektronické knihy

Pokyny pro architekturu pro vývoj přizpůsobitelných, udržovatelných a testovatelných Xamarin.Forms podnikových aplikací

Enterprise Application Patterns using Xamarin.Forms eBook

Poznámka:

Tato elektronická kniha byla publikována na jaře roku 2017 a od té doby nebyla aktualizována. Existuje mnoho v knize, která zůstává cenná, ale některé materiály jsou zastaralé.

Tato elektronická kniha obsahuje pokyny k implementaci modelu modelu-View-ViewModel (MVVM), injektáž závislostí, navigace, ověřování a správy konfigurace při zachování volného párování. Kromě toho najdete pokyny k ověřování a autorizaci pomocí IdentityServeru, přístupu k datům z kontejnerizovaných mikroslužeb a testování jednotek.

Předmluva

Tato kapitola vysvětluje účel a rozsah průvodce a na to, na koho se zaměřuje.

Úvod

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.

MVVM

Model-View-ViewModel (MVVM) pomáhá vyčistit obchodní a prezentační logiku aplikace od uživatelského rozhraní. Udržování čistého oddělení mezi logikou aplikace a uživatelským rozhraním pomáhá řešit řadu problémů s vývojem a může usnadnit testování, údržbu a vývoj aplikace. Může také výrazně zlepšit příležitosti opětovného použití kódu a umožňuje vývojářům a návrhářům uživatelského rozhraní snadněji spolupracovat při vývoji příslušných částí aplikace.

Injektáž závislostí

Injektáž závislostí umožňuje oddělení konkrétních typů od kódu, který závisí na těchto typech. Obvykle používá kontejner, který obsahuje seznam registrací a mapování mezi rozhraními a abstraktními typy a konkrétní typy, které implementují nebo rozšiřují tyto typy.

Kontejnery injektáže závislostí snižují spojení mezi objekty tím, že poskytují zařízení pro vytvoření instance instancí tříd a správu jejich životnosti na základě konfigurace kontejneru. Během vytváření objektů kontejner vloží všechny závislosti, které objekt vyžaduje. Pokud se tyto závislosti ještě nevytvořily, kontejner nejprve vytvoří a přeloží jejich závislosti.

Komunikace mezi volně vázanými komponentami

Třída Xamarin.FormsMessagingCenter implementuje model publikování a odběru, což umožňuje komunikaci založenou na zprávách mezi komponentami, které jsou nevhodné pro propojení podle objektů a odkazů na typy. Tento mechanismus umožňuje vydavatelům a odběratelům komunikovat bez vzájemné vazby, což pomáhá snižovat závislosti mezi komponentami a zároveň umožňuje nezávisle vyvíjet a testovat komponenty.

Xamarin.Forms zahrnuje podporu navigace na stránce, která obvykle vede k interakci uživatele s uživatelským rozhraním nebo ze samotné aplikace v důsledku interních změn stavu řízeného logikou. Navigace ale může být složitá pro implementaci v aplikacích, které používají model MVVM.

Tato kapitola představuje NavigationService třídu, která slouží k zobrazení modelu první navigace z modelů zobrazení. Umístění navigační logiky do tříd modelu zobrazení znamená, že logiku je možné provádět prostřednictvím automatizovaných testů. Model zobrazení pak může implementovat logiku pro řízení navigace, aby se zajistilo, že se vynucují určitá obchodní pravidla.

Ověření

Každá aplikace, která přijímá vstup od uživatelů, by se měla ujistit, že vstup je platný. Bez ověření může uživatel zadat data, která způsobí selhání aplikace. Ověřování vynucuje obchodní pravidla a brání útočníkovi v vkládání škodlivých dat.

V kontextu modelu Model-View-ViewModel (MVVM) se model zobrazení nebo model často vyžaduje k ověření dat a k označení všech chyb ověření do zobrazení, aby je uživatel mohl opravit.

Správa konfigurace

Nastavení povolit oddělení dat, která konfigurují chování aplikace od kódu, což umožňuje měnit chování bez opětovného sestavení aplikace. Nastavení aplikace jsou data, která aplikace vytváří a spravuje, a uživatelská nastavení jsou přizpůsobitelná nastavení aplikace, která ovlivňují chování aplikace a nevyžadují časté opakované úpravy.

Kontejnerizované mikroslužby

Mikroslužby nabízejí přístup k vývoji a nasazení aplikací, který je vhodný pro požadavky na flexibilitu, škálování a spolehlivost moderních cloudových aplikací. Jednou z hlavních výhod mikroslužeb je, že je možné škálovat nezávisle na sobě, což znamená, že je možné škálovat konkrétní funkční oblast, která vyžaduje větší výpočetní výkon nebo šířku pásma sítě pro podporu poptávky, aniž by zbytečně škálovaly oblasti aplikace, u kterých nedochází k zvýšené poptávce.

Ověřování a autorizace

Existuje mnoho přístupů k integraci ověřování a autorizace do Xamarin.Forms aplikace, která komunikuje s webovou aplikací ASP.NET MVC. Tady se provádí ověřování a autorizace s mikroslužbou kontejnerizované identity, která používá IdentityServer 4. IdentityServer je opensourcová architektura OpenID Připojení a OAuth 2.0 pro ASP.NET Core, která se integruje s ASP.NET identitou Core za účelem ověřování nosných tokenů.

Přístup ke vzdáleným datům

Mnoho moderních webových řešení využívá webové služby hostované webovými servery k poskytování funkcí vzdáleným klientským aplikacím. Operace, které webová služba zpřístupňuje, představují webové rozhraní API a klientské aplikace by měly být schopny využívat webové rozhraní API bez znalosti způsobu implementace dat nebo operací, které rozhraní API zveřejňuje.

Testování částí

Testování modelů a zobrazení modelů z aplikací MVVM je stejné jako testování všech ostatních tříd a stejné nástroje a techniky lze použít. Existují však některé vzory, které jsou typické pro model a zobrazení tříd modelu, které mohou těžit z konkrétních technik testování jednotek.

Web komunity

Tento projekt má web komunity, na kterém můžete publikovat otázky a poskytovat zpětnou vazbu. Web komunity se nachází na GitHubu. Případně můžete poslat e-mailem svůj názor na e-mailovou dotnet-architecture-ebooks-feedback@service.microsoft.comknihu .