MVVMCROSS podporuje kód špecifický pre platformu prostredníctvom niekoľkých mechanizmov, čo vývojárom umožňuje vytvárať aplikácie viacerých platforiem a zároveň využívať natívne funkcie platformy. Tu je podrobný prehľad o tom, ako MVVMCross uľahčuje kód špecifický pre platformu:
1. Oddelenie obáv **
Aplikácie MVVMCross sú zvyčajne štruktúrované do dvoch hlavných častí: základný projekt a projekty používateľského rozhrania špecifické pre platformu. Základný projekt, často implementovaný ako prenosná knižnica triedy (PCL) alebo .NET Standard Library, obsahuje obchodnú logiku, modely, zobrazenie modelov a rozhrania pre služby špecifické pre platformu. Toto oddelenie umožňuje maximálne opätovné použitie kódu naprieč platformami a zároveň udržiavať kód špecifický pre platformu izolovanú v projektoch používateľského rozhrania [2] [7].2. Inverzia kontroly (IOC) a injekcia závislosti **
MVVMCross používa na správu závislostí kontajner IOC. To umožňuje vývojárom registrovať služby špecifické pre platformu v projektoch špecifických pre platformu a vložiť ich do modelov View Core Project. Napríklad, ak aplikácia potrebuje prístup k fotoaparátu, základný projekt môže definovať rozhranie pre prístup k fotoaparátu a každý projekt špecifický pre platformu môže poskytnúť svoju vlastnú implementáciu tohto rozhrania. Kontajner IOC potom tieto závislosti vyrieši za behu a zabezpečuje, aby sa použila správna služba špecifická pre platformu [2] [8] [11].3. Služby špecifické pre platformu **
Služby špecifické pre platformu sú implementované v natívnych projektoch používateľského rozhrania. Tieto služby sú registrované v triede nastavenia každého projektu platformy. Trieda nastavenia je zodpovedná za bootstrapping MVVMCross a registráciu služieb špecifických pre platformu v kontajneri IOC. To umožňuje modelu zobrazenia v hlavnom projekte používať funkcie špecifické pre platformu bez priameho odkazovania API špecifických pre platformu [2] [7].4. Plugin Framework **
MVVMCross obsahuje rámec doplnkov, ktorý vývojárom umožňuje ľahko integrovať funkcie špecifické pre platformu do svojich aplikácií. Doplnky môžu poskytovať funkcie, ako je umiestnenie GPS, lokalizácia, senzory a ďalšie. Tieto doplnky sú registrované v kontajneri MOV, čo umožňuje modelom View prístup k funkciám špecifickým pre platformu prostredníctvom injekcie závislosti. Tento rámec tiež podporuje falošné implementácie na účely testovania [4] [11].5. Prispôsobiteľný väzbový motor **
MVVMCross poskytuje prispôsobiteľný väzbový motor, ktorý vývojárom umožňuje vytvárať vlastné väzby pre zobrazenia špecifické pre platformu. Táto funkcia je obzvlášť užitočná pri práci s natívnymi kontrolami, ktoré nepodporujú štandardné mechanizmy väzby na údaje. Definovaním vlastných viazaní môžu vývojári zabezpečiť, aby ich modely pohľadu boli správne pripojené k zobrazeniam špecifickým pre platformu [4].6. Prednášajúci platformy **
MVVMCROSS používa moderátory špecifické pre platformu (napr. „IMVXIOSViewPresenter`,` IMVXandroidViewPresenter`) na správu spôsobu zobrazovania zobrazení na každej platforme. Títo prednášajúci umožňujú prispôsobenie logiky prezentácie, čo vývojárom umožňuje prispôsobiť správanie používateľského rozhrania požiadavkám konkrétnej platformy [3].Stručne povedané, MVVMCross podporuje kód špecifický pre platformu poskytnutím štruktúrovaného prístupu k oddeleniu obchodnej logiky od implementácie špecifickej pre platformu, využívaním IOC a injekciou závislosti na riadení služieb a ponúka prispôsobiteľné rámce viazaných a doplnkových rámcov na integráciu natívnych funkcií. To umožňuje vývojárom maximalizovať opätovné použitie kódu a zároveň poskytovať skúsenosti používateľov špecifických pre platformu.
Citácie:[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-Applications-using-the-mvvvvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvvmcross-Speeds-xamarin-development-personalizácie-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-verview
[8] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvvmcross-framework/
Https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvvm-apps-with-xamarin-mith-xamarin-mith-mith-mith-with-xamarin-and-mcross