Når man sammenligner brugen af MVVMCROSS med Xamarin.Forms og Xamarin indfødte, opstår flere centrale forskelle, primært med hensyn til UI -fleksibilitet, kodedeling og udviklingsmetode.
UI -fleksibilitet og kontrol
- Xamarin.Forms: Denne ramme giver et delt UI -lag på tværs af platforme, som forenkler udviklingen ved at give dig mulighed for at skrive UI -kode en gang og implementere den på flere platforme. Imidlertid kan denne delte brugergrænseflade begrænse tilpasning til platformspecifikke funktioner, hvilket kræver brugerdefinerede rendere til mere avancerede UI-elementer [7] [9]. MVVMCROSS kan bruges med Xamarin.Forms til at styre forretningslogikken og navigationen, men UI forbliver standardiseret på tværs af platforme [1] [10].
- Xamarin Native: Når du bruger Xamarin -indfødt med MVVMCROSS, har du fuld kontrol over UI for hver platform. Dette giver mulighed for platformspecifikke UI-implementeringer, der maksimerer den indfødte look og fornemmelse af hver platform. Selvom denne tilgang kræver større indsats for at udvikle separate UI -lag til iOS og Android, tilbyder den større fleksibilitet og tilpasning [7] [9].
Kodningsdeling og genbrug
- xamarin.former: Med Xamarin.Forms kan du ikke kun dele forretningslogikken (via MVVMCROSS), men også UI -koden på tværs af platforme. Dette forenkler udviklingen og reducerer den mængde kode, du har brug for for at vedligeholde. UI er imidlertid begrænset til et fælles sæt elementer, der fungerer på tværs af alle platforme [4] [10].
- Xamarin Native: I en indfødt Xamarin -opsætning med MVVMCross kan du dele forretningslogikken (ViewModels) på tværs af platforme, men du skal implementere UI separat for hver platform. Denne tilgang giver mulighed for mere genbrug af kode i præsentationslaget og UI-logik, når du bruger MVVMCROSS, men kræver stadig platformspecifik UI-udvikling [9].
Udviklingsmetode
- xamarin.former: Udvikling med xamarin.forms og mvvmcross foretrækkes ofte af udviklere uden omfattende mobiloplevelse, da det forenkler UI-udvikling på tværs af platform. Rammerne håndterer meget af den underliggende kompleksitet, hvilket giver udviklere mulighed for at fokusere på delt logik og UI [4] [10].
-Xamarin Native: Native Xamarin-udvikling med MVVMCROSS er typisk foretrukket af udviklere, der ønsker finkornet kontrol over UI og er komfortable med platformspecifik udvikling. Denne tilgang kræver mere ekspertise inden for indfødte iOS- og Android -udvikling, men giver større fleksibilitet inden for UI -design og implementering [7] [9].
Navigation og binding
- xamarin.forms med MVVMCROSS: Navigation i xamarin.Forms med MVVMCross styres på visningsniveau, hvilket muliggør en ren adskillelse af bekymringer. MVVMCROSS tilvejebringer forbedrede bindingsfunktioner, såsom Fallback -værdier, skønt det mangler nogle funktioner som kildeegenskaben, der findes i standard Xamarin.Forms -bindinger [2] [10].
- Xamarin Native med MVVMCROSS: I indfødte Xamarin -projekter håndterer MVVMCROSS navigation og visning/ViewModel -parring, hvilket giver mulighed for en konsekvent MVVM -arkitektur på tværs af platforme. Denne opsætning gør det muligt for udviklere at udnytte platformspecifikke navigationsmønstre, mens de opretholder et delt forretningslogiklag [3] [9].
Sammenfattende, mens begge tilgange kan udnytte MVVMCROSS til MVVM-arkitektur, tilbyder Xamarin.Forms et delt UI-lag med mindre kontrol over platformspecifikke UI-funktioner, mens Xamarin-indfødte giver fuld kontrol over UI-tilpasning, men kræver mere udviklingsindsats for separate UI-implementeringer.
Citater:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://www.reddit.com/r/androiddev/comments/6cseds/what_are_the_disadvantages_of_xamarin_for_android/
[6] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
)
[9] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx