Az MVVMCross jelentősen javítja a kód újrafelhasználását a platformok közötti alkalmazásokban a Model-View-ViewModel (MVVM) építészeti mintázat kihasználásával. Így éri el ezt:
1. Aggodalmak elválasztása: Az MVVMCross egyértelműen elkülöníti az aggodalmak elválasztását azáltal, hogy az alkalmazást két fő részre osztja: a magot és az UI -t. A Core Project, általában egy hordozható osztálykönyvtár (PCL) vagy .NET Standard Library, az összes ViewModel -t, modellt és üzleti logikát tartalmazza. Ez lehetővé teszi a maximális kód újrahasznosítását a különböző platformokon, mivel az üzleti logika elválasztódik a platformspecifikus kódtól [1] [2] [7].
2. ViewModels a Core Project -ben: A ViewModels elhelyezésével az alapvető projektbe az MVVMCross lehetővé teszi a fejlesztők számára, hogy ezeket az összetevőket több platformon megosszák. Ez azt jelenti, hogy a felhasználói interakciók, az adatok manipulációjának és a navigációnak a logikája újrahasznosítható a különböző platformok, például iOS, Android és Windows [1] [3] [9] módosítása nélkül.
3. Adatkötés: Az MVVMCross támogatja az adatkötést, amely automatikusan frissíti a felhasználói felületet, amikor a ViewModelben változások történnek. Ez a szolgáltatás döntő jelentőségű a platformon keresztüli konzisztencia fenntartásához, és csökkenti a kézi felhasználói felület frissítéseinek szükségességét, tovább javítva a kód újrafelhasználását [4] [5].
4. Függőségi injekció és beépülő modulok: Az MVVMCross tartalmaz egy plug-in architektúrát és függőségi injekciós (DI) képességeket. Ezek a szolgáltatások lehetővé teszik a fejlesztők számára, hogy a platform-specifikus funkciókat úgy hajtják végre, hogy könnyen hozzáférhessenek és újra felhasználhatók az alapvető projektből. Ez azt jelenti, hogy míg a felhasználói felületrétegnek platform-specifikusnak kell lennie, sok mögöttes funkciót továbbra is meg lehet osztani [3] [9].
5. Navigáció és nézet előadók: Az MVVMCross hatékony ViewModel-First navigációs rendszert biztosít, amely lehetővé teszi az alkalmazás navigációjának hangszerelését az alapvető projektből. Ez azt jelenti, hogy a felhasználói interakciók és a képernyő-átmenetek áramlása központilag kezelhető, csökkentve a platformspecifikus navigációs kód szükségességét [7].
6. Hatékony projektszerkezet: Az MVVMCross ösztönzi a projektszervezés strukturált megközelítését, egyértelműen elválasztva a platform-agnosztikai kódot az alapvető és a platform-specifikus kódban az UI projektekben. Ez a szerkezet megkönnyíti a platformok közötti alkalmazások könnyebb karbantartását és kiterjesztését [2] [9].
Összességében az MVVMCross javítja a kód újrafelhasználását az üzleti logika központosításával, az adatkötés kihasználásával és a platform-specifikus funkciók egységes módon történő kezelésére szolgáló eszközök biztosításával. Ez a megközelítés jelentősen csökkenti a duplikált kód mennyiségét, és felgyorsítja a platformok közötti alkalmazásfejlesztést.
Idézetek:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[2] https://www.toptal.com/xamarin/cross-platform-apps-with-xamarin
[3] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[4] https://tiefenauer.github.io/blog/mobile-pp-development-with-xamarin-and-mvvmcross-pal-1-introduction/
[5] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[6] https://diglib.tugraz.at/download.php?id=576a78335451d&location=browse
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.reddit.com/r/swift/comments/yrqlhu/is_crossplatform_the_future_of_mobile_development/
[9] https://leaware.com/creating-cross-platform-xamarin-pplications-Uning-the-mvvmcross-framework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross