Quando si confrontano l'uso di mvvmcross con xamarin.forms e xamarin nativi, emergono diverse differenze chiave, principalmente in termini di flessibilità dell'interfaccia utente, condivisione del codice e approccio di sviluppo.
Flessibilità e controllo dell'interfaccia utente
- Xamarin.Forms: questo framework fornisce un livello dell'interfaccia utente condiviso attraverso le piattaforme, il che semplifica lo sviluppo consentendo a scrivere il codice dell'interfaccia utente una volta e distribuirlo su più piattaforme. Tuttavia, questa interfaccia utente condivisa può limitare la personalizzazione alle funzionalità specifiche della piattaforma, che richiedono rendering personalizzati per elementi dell'interfaccia utente più avanzati [7] [9]. MVVMCRoss può essere utilizzato con Xamarin.Forms per gestire la logica e la navigazione aziendale, ma l'interfaccia utente rimane standardizzata su piattaforme [1] [10].
- Nativo di Xamarin: quando si utilizza xamarin nativo con mvvmcross, hai il controllo completo sull'interfaccia utente per ogni piattaforma. Ciò consente implementazioni dell'interfaccia utente specifiche della piattaforma, massimizzando l'aspetto nativo di ciascuna piattaforma. Mentre questo approccio richiede un maggiore sforzo per sviluppare livelli di utente separati per iOS e Android, offre una maggiore flessibilità e personalizzazione [7] [9].
Condivisione e riutilizzo del codice
- Xamarin.Forms: con Xamarin.Forms, è possibile condividere non solo la logica aziendale (tramite MVVMCROSS) ma anche il codice dell'interfaccia utente su piattaforme. Ciò semplifica lo sviluppo e riduce la quantità di codice che devi mantenere. Tuttavia, l'interfaccia utente è limitata a un insieme comune di elementi che funzionano su tutte le piattaforme [4] [10].
- Nativo di Xamarin: in una configurazione di Xamarin nativa con MVVMCRoss, è possibile condividere la logica aziendale (ViewModels) su piattaforme, ma è necessario implementare l'interfaccia utente separatamente per ciascuna piattaforma. Questo approccio consente un maggiore riutilizzo del codice nel livello di presentazione e nella logica dell'interfaccia utente quando si utilizza MVVMCROSS, ma richiede ancora uno sviluppo dell'interfaccia utente specifico della piattaforma [9].
approccio di sviluppo
- Xamarin.Forms: lo sviluppo con Xamarin.Forms e MVVMCRoss è spesso preferito dagli sviluppatori senza una vasta esperienza mobile, in quanto semplifica lo sviluppo dell'interfaccia utente multipiattaforma. Il framework gestisce gran parte della complessità sottostante, consentendo agli sviluppatori di concentrarsi sulla logica e l'interfaccia utente condivisa [4] [10].
-Nativo di Xamarin: lo sviluppo di xamarin nativo con MVVMCRoss è in genere favorito dagli sviluppatori che desiderano il controllo a grana fine sull'interfaccia utente e si sentono a proprio agio con lo sviluppo specifico della piattaforma. Questo approccio richiede più competenze nello sviluppo di iOS e Android nativi, ma offre una maggiore flessibilità nella progettazione e implementazione dell'interfaccia utente [7] [9].
navigazione e vincolo
- Xamarin.Forms con mvvmcross: navigazione in xamarin.forms con mvvmcross è gestito a livello di viewmodel, consentendo una separazione pulita delle preoccupazioni. MVVMCROSS fornisce funzionalità di legame migliorate, come i valori di fallback, sebbene manchi alcune funzionalità come la proprietà di origine trovata nei legami standard Xamarin.Forms [2] [10].
- Nativo di Xamarin con MVVMCROSS: nei progetti di xamarin nativi, MVVMCROSS gestisce la navigazione e l'accoppiamento di visualizzazione/viewmodel, consentendo un'architettura MVVM costante su piattaforme. Questa configurazione consente agli sviluppatori di sfruttare i modelli di navigazione specifici della piattaforma mantenendo un livello logico aziendale condiviso [3] [9].
In sintesi, mentre entrambi gli approcci possono sfruttare MVVMCROSS per l'architettura MVVM, Xamarin.Forms offre un livello dell'interfaccia utente condiviso con un minor controllo sulle funzionalità dell'interfaccia utente specifiche della piattaforma, mentre il nativo di Xamarin fornisce il pieno controllo sulla personalizzazione dell'interfaccia utente ma richiede un maggiore sforzo di sviluppo per implementazioni di utente separate.
Citazioni:[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
[8] https://mmenmate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
[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