Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako MVVMcross uľahčuje oddelenie obáv v aplikáciách medzi platformami


Ako MVVMcross uľahčuje oddelenie obáv v aplikáciách medzi platformami


MVVMCross uľahčuje oddelenie obáv v aplikáciách medzi platformami implementáciou vzoru modelu-view-viewmodel (MVVM), ktorý vo svojej podstate podporuje jasné rozdelenie zodpovedností medzi rôznymi komponentmi aplikácie. Tu je to, ako to MVVMcross dosahuje:

MVVM Implementácia vzoru

MVVMCross je postavený okolo architektúry MVVM, ktorá pozostáva z troch hlavných komponentov:
- Model: Predstavuje údaje a obchodnú logiku aplikácie. Zapojuje dátové štruktúry a operácie, ktoré sú nezávislé od používateľského rozhrania.
- Zobraziť: Zvláda používateľské rozhranie a interakcie používateľov. Je zodpovedný za zobrazovanie údajov a prijímanie vstupov od používateľa.
- ViewModel: Pôsobí ako sprostredkovateľ medzi modelom a pohľadom. Odhaľuje údaje a príkazy, na ktoré sa môže pohľad viazať, a účinne oddeľuje pohľad z modelu.

Udržiavaním tejto separácie MVVMCross zaisťuje, že každá zložka sa zameriava na svoju špecifickú úlohu bez prekrývajúcich sa zodpovedností. Napríklad pohľad by nemal obsahovať obchodnú logiku a ViewModel by nemal priamo manipulovať s prvkami používateľského rozhrania.

Prenosná knižnica triedy (PCL) pre zdieľanú logiku

MVVMCross používa prenosnú knižnicu triedy (PCL) na umiestnenie pohľadov, modelov a rozhraní pre služby špecifické pre platformu. Tento PCL slúži ako hlavný projekt, ktorý obsahuje zdieľanú obchodnú logiku a spracovanie databázy. MVVMCross tým, že oddeľuje obchodnú logiku na PCL, umožňuje vývojárom zdieľať významnú časť kódu na rôznych platformách, ako sú iOS, Android a Windows. Tento prístup nielen uľahčuje opätovné použitie kódu, ale tiež zaisťuje, že obchodná logika zostáva konzistentná v rámci platforiem.

Viazanie údajov a komunikácia

MVVMCross používa väzbu údajov na prepojenie zobrazení s ich zodpovedajúcimi módami. Tento mechanizmus umožňuje, aby sa zobrazenie automaticky aktualizovalo, keď sa zmení ViewModel, a naopak. Viazanie údajov je rozhodujúce pre udržiavanie oddelenia obáv, pretože umožňuje pohľad na reagovanie na zmeny vo ViewModel bez toho, aby bolo potrebné poznať podrobnosti o implementácii obchodnej logiky.

Okrem toho MVVMCROSS podporuje rôzne komunikačné techniky, ako sú príkazy a udalosti, ktoré ďalej zvyšujú oddelenie obáv tým, že umožní názor vyvolať akcie na ViewModel bez priameho prístupu k jeho vnútornému stavu.

Vstrekovanie závislosti a architektúra doplnkov

MVVMCross zahŕňa injekciu závislosti (DI) a architektúru doplnkov na správu závislostí a rozšírenie schopností rámca. Vstrekovanie závislosti pomáha zabezpečiť, aby boli komponenty voľne spojené, čo uľahčuje testovanie a údržbu aplikácie. Architektúra doplnkov umožňuje vývojárom pridávať nové funkcie bez zmeny základného rámca, čím sa zachová čisté oddelenie obáv.

Správa životného cyklu

MVVMCross poskytuje funkcie správy životného cyklu pre ViewModels, ktoré sú viazané na životný cyklus názorov. To znamená, že pohľady na pohľady možno oznámiť pri vytvorení, objavení, zmiznutí alebo zničení pohľadu. Takéto riadenie životného cyklu pomáha pri udržiavaní čistého oddelenia obáv tým, že zabezpečí správne vyčistenie zdrojov a že štát ViewModel je správne spravovaný.

Stručne povedané, MVVMcross uľahčuje oddelenie obáv v aplikáciách medzi platformami presadzovaním modelu MVVM pomocou PCL na zdieľanú logiku, implementáciu väzby údajov a začlenenia injekcie závislosti a riadenia životného cyklu. Tieto vlastnosti kolektívne prispievajú k robustnej, udržiavateľnej a škálovateľnej architektúre aplikácií.

Citácie:
[1] https://www.linkedin.com/advice/0/what-best-way-ensure-separation-concerns-mvvm-design-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvvmcross-framework/
[3] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
Https://learn.microsoft.com/en-us/archive/msdnmagazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-mith-xamarin-mith-mith-mith-xamarin-mith
[5] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle
[6] https://www.mvvmcross.com/documentation/getting-started/getting-started
[7] https://www.mvvmcross.com/documentation/funmamentals/data-binding
[8] https://stackoverflow.com/questions/32220007/what-does-mvvmcross-do-that-xamarin-doesnt-already
[9] https://github.com/mvvmcross/mvvmcross