Az MVVMCross és a Xamarin.Forms két különálló technológia, amelyet a platformok közötti mobilalkalmazások fejlesztésében használnak, mindegyik különböző célokat szolgál, és egyedi előnyöket kínál.
A Xamarin.Forms áttekintése
A Xamarin.Forms egy olyan keret, amelyet a Microsoft fejlesztett ki, amely lehetővé teszi a fejlesztők számára, hogy platformok közötti alkalmazásokat hozzanak létre egy megosztott C# kódbázis és XAML felhasználásával a felhasználói felülethez. Ez lehetővé teszi a fejlesztők számára, hogy egyszer írjanak és több platformon futhassanak, beleértve az iOS -t, az Androidot és az UWP -t. A Xamarin.Forms ideális olyan projektekhez, ahol a platformon keresztüli következetes felhasználói felületre van szükség, és egyszerűsíti a fejlesztési folyamatot azáltal, hogy egységes API -t biztosít az UI komponensek számára. Ez a konzisztencia azonban a rugalmasság költségén áll, mivel az UI az egyes platformok közös elemeinek egy részhalmazára korlátozódik, ami korlátozásokhoz vezethet a natív megjelenés és érzés vagy a fejlett felhasználói felület testreszabásának elérésében [4] [7].
Az mvvmcross áttekintése
Az MVVMCross egy platformok közötti MVVM (Model-View-ViewModel) keretrendszer, amely támogatja a Xamarin.ios, a Xamarin.android, a Xamarin.Forms és más platformokat. Az üzleti logika elválasztására összpontosít az UI -tól, lehetővé téve a fejlesztőknek, hogy kódjuk jelentős részét megosszák a különböző platformokon. Az MVVMCross olyan funkciókat kínál, mint az adatkötés, a navigáció, a kontroll inverziója és a függőségi injekció, amelyek megkönnyítik a komplex alkalmazások fejlesztését. A Xamarin.Forms -tól eltérően, az MVVMCross nem hajtja végre egy adott felhasználói felület keretet; Ehelyett lehetővé teszi a fejlesztők számára, hogy megválaszthassák, hogyan akarják megvalósítani a felhasználói felületet az egyes platformon, nagyobb rugalmasságot biztosítva a natív felhasználói felület tapasztalatainak elérésében [7] [10].
kulcsfontosságú különbségek
1. UI megvalósítás:
- Xamarin.Forms: Egy megosztott felhasználói felületréteget használ a platformokon, amely egyszerűsíti a fejlesztést, de korlátozhatja a testreszabást és a natív megjelenést és érzetet.
- MVVMCross: lehetővé teszi a natív felhasználói felület megvalósítását minden platformon vagy megosztott felhasználói felületen a Xamarin.Forms-szal, nagyobb rugalmasságot biztosítva a platformspecifikus felhasználói felület minták elérésében.
2. Kódmegosztás:
- Mindkét keret lehetővé teszi a kódmegosztást, de az MVVMCross az üzleti logika (ViewModels) megosztására összpontosít, miközben lehetővé teszi a különféle felhasználói felület megvalósítását. A Xamarin.Forms megosztja mind a felhasználói felületet, mind az üzleti logikát.
3. Navigáció és adatkötés:
- Az MVVMCross robusztus navigációs rendszert és adatkötési képességeket biztosít, amelyek a különféle felhasználói felület keretein keresztül működnek, beleértve a Xamarin.Forms -t. A Xamarin.Forms saját navigációs és adatkötési mechanizmusaira támaszkodik.
4. A projekt bonyolultsága:
- A fejlett felhasználói felület testreszabási vagy platformspecifikus tulajdonságait igénylő összetett projektekhez az MVVMCross rugalmasságának köszönhetően megfelelőbb lehet. Az egyszerűbb projektekhez, amelyekben a következetes felhasználói felület elegendő, a Xamarin.Forms egyértelműbb lehet a végrehajtáshoz.
5. Fejlesztési megközelítés:
- A Xamarin.Forms -t gyakran a XAML és a .NET ismeretével ismerő fejlesztők részesítik előnyben, mivel ez egységes fejlesztési élményt nyújt. Az MVVMCross előnyös olyan projekteknél, amelyekben az üzleti logikát le kell vonni az UI -tól, lehetővé téve, hogy az egyes platformon nagyobb ellenőrzést végezzen a felhasználói felület megvalósításának.
Összefoglalva: míg mindkét keretek támogatják a platformok közötti fejlesztést, a Xamarin.Forms az UI réteg megosztására összpontosít a platformon, míg az MVVMCross hangsúlyozza az üzleti logika megosztását, és lehetővé teszi a rugalmasabb felhasználói felület megvalósítási lehetőségeit. A köztük lévő választás a projekt UI testreszabására, összetettségére és kódmegosztási stratégiájára vonatkozó követelményeitől függ.
Idézetek:[1] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[2] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks
[3] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-xamarin-forms-version
[4] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[5] https://leaware.com/creating-cross-platform-xamarin-pplications-Uning-the-mvvmcross-framework/
[6] https://canbilgin.wordpress.com/tag/mvvmcross/
[7] https://www.mvvmcross.com/documentation/getting-started/getting-started
[8] https://www.reddit.com/r/csharp/comments/a9mph1/mvc_or_mvm_for_xamarin/
[9] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[10] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/