Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak MVVMCross podporuje kód specifický pro platformu


Jak MVVMCross podporuje kód specifický pro platformu


MVVMCross podporuje kód specifický pro platformu prostřednictvím několika mechanismů, což umožňuje vývojářům vytvářet aplikace napříč platformami a přitom stále využívá funkce nativní platformy. Zde je podrobný přehled o tom, jak MVVMCross usnadňuje kód specifický pro platformu:

1. oddělení obav **

Aplikace MVVMCross jsou obvykle strukturovány do dvou hlavních částí: hlavní projekty UI specifické pro projekt a platformu. The Core project, often implemented as a Portable Class Library (PCL) or .NET Standard library, contains the business logic, models, view models, and interfaces for platform-specific services. Toto oddělení umožňuje maximální opětovné použití kódu napříč platformami a zároveň udržuje kód specifický pro platformu izolovaný v projektech UI [2] [7].

2. inverze kontroly (IOC) a injekce závislosti **

MVVMCross používá kontejner IOC ke správě závislostí. To umožňuje vývojářům registrovat služby specifické pro platformu v projektech specifických pro platformu a vložit je do modelů pohledu hlavního projektu. Pokud například aplikace potřebuje přístup k fotoaparátu, může hlavní projekt definovat rozhraní pro přístup k fotoaparátu a každý projekt specifický pro platformu může poskytnout vlastní implementaci tohoto rozhraní. Kontejner IOC pak tyto závislosti vyřeší za běhu a zajišťuje, aby byla použita správná služba specifická pro platformu [2] [8] [11].

3. Služby specifické pro platformu **

Služby specifické pro platformu jsou implementovány v nativních projektech UI. Tyto služby jsou registrovány ve třídě nastavení každého projektu platformy. Třída nastavení je zodpovědná za bootstrapping mvvmcross a registraci služeb specifických pro platformu u kontejneru IOC. To umožňuje modelům pohledu v hlavním projektu používat funkčnost specifické pro platformu bez přímého odkazování API specifických pro platformu [2] [7].

4. Plugin Framework **

MVVMCross obsahuje rámec pluginů, který vývojářům umožňuje snadno integrovat funkce specifické pro platformu do jejich aplikací. Pluginy mohou poskytovat funkce, jako je umístění GPS, lokalizace, senzory a další. Tyto pluginy jsou registrovány u kontejneru IOC, což umožňuje modelům zobrazení přístup k funkcím specifickým pro platformu prostřednictvím injekce závislosti. Tento rámec také podporuje falešné implementace pro účely testování [4] [11].

5. přizpůsobitelný vazebný motor **

MVVMCross poskytuje přizpůsobitelný vazebný motor, který umožňuje vývojářům vytvářet vlastní vazby pro zobrazení specifické pro platformu. Tato funkce je zvláště užitečná při práci s nativními ovládacími prvky, které nepodporují standardní mechanismy vázání dat. Definováním vlastních vazeb mohou vývojáři zajistit, aby jejich modely pohledu byly správně připojeny k zobrazením specifickým pro platformu [4].

6. Platform Presensers **

MVVMCross používá přednášející specifické pro platformu (např. `IMVXIOSVIEWPRESENTER`,` IMVXAndroidViewPresenter`) ke správě toho, jak jsou zobrazení zobrazení na každé platformě. Tito přednášející umožňují přizpůsobení logiky prezentace, což vývojářům umožňuje přizpůsobit chování uživatelského rozhraní na požadavky konkrétní platformy [3].

Stručně řečeno, MVVMCross podporuje kód specifický pro platformu tím, že poskytuje strukturovaný přístup k oddělení obchodní logiky od implementace specifické pro platformu, využívá IOC a injekci závislosti na správě služeb a nabízí přizpůsobitelné vázání a rámce pluginů pro integraci nativních prvků. To umožňuje vývojářům maximalizovat opětovné použití kódu a přitom stále poskytovat uživatelské zkušenosti specifické pro platformu.

Citace:
[1] https://www.suneco.nl/blogs/boost-your-xamarin-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-Applications-using-the-mvvmcross-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-parsons-mvvmcross-speeds-xamarin-develonalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/gettingstarted
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross