MVVMCROSS e XAMARIN.FORMS sono due tecnologie distinte utilizzate nello sviluppo di app mobili multipiattaforma, ognuna delle quali serve scopi diversi e offrendo vantaggi unici.
Panoramica di Xamarin.Forms
Xamarin.Forms è un framework sviluppato da Microsoft che consente agli sviluppatori di creare applicazioni multipiattaforma utilizzando una base di codice C# condivisa e XAML per l'interfaccia utente. Consente agli sviluppatori di scrivere una volta e funzionare su più piattaforme, tra cui iOS, Android e UWP. Xamarin.Forms è l'ideale per progetti in cui si desidera un'interfaccia utente coerente attraverso le piattaforme e semplifica il processo di sviluppo fornendo un'API unificata per i componenti dell'interfaccia utente. Tuttavia, questa coerenza ha il costo della flessibilità, poiché l'interfaccia utente è limitata a un sottoinsieme di elementi comuni da ciascuna piattaforma, il che può portare a limiti nel raggiungimento dell'aspetto e della sensazione nativi o della personalizzazione dell'interfaccia utente avanzata [4] [7].
Panoramica di mvvmcross
MVVMCROSS è un framework MVVM (Model-View-ViewModel) multipiattaforma che supporta Xamarin.ios, Xamarin.Android, Xamarin.Forms e altre piattaforme. Si concentra sulla separazione della logica aziendale dall'interfaccia utente, consentendo agli sviluppatori di condividere una parte significativa del loro codice su piattaforme diverse. MVVMCRoss fornisce caratteristiche come legame dei dati, navigazione, inversione del controllo e iniezione di dipendenza, che facilitano lo sviluppo di applicazioni complesse. A differenza di Xamarin.Forms, MVVMCRoss non applica un framework dell'interfaccia utente specifico; Invece, consente agli sviluppatori di scegliere come vogliono implementare l'interfaccia utente per ogni piattaforma, offrendo maggiore flessibilità nel raggiungere le esperienze dell'interfaccia utente nativa [7] [10].
differenze chiave
1. Implementazione dell'interfaccia utente:
- Xamarin.Forms: utilizza un livello dell'interfaccia utente condiviso su piattaforme, che semplifica lo sviluppo ma può limitare la personalizzazione e l'aspetto nativo.
- MVVMCROSS: consente l'implementazione dell'interfaccia utente nativa su ciascuna piattaforma o l'interfaccia utente condivisa con Xamarin.Forms, fornendo maggiore flessibilità nel raggiungimento dei design dell'interfaccia utente specifici della piattaforma.
2. Condivisione del codice:
- Entrambi i framework abilitano la condivisione del codice, ma MVVMCRoss si concentra sulla condivisione della logica aziendale (ViewModels) consentendo al contempo diverse implementazioni dell'interfaccia utente. Xamarin.Forms condivide sia l'interfaccia utente che la logica aziendale.
3. Navigazione e vincolo dei dati:
- MVVMCRoss fornisce un solido sistema di navigazione e capacità di associazione dei dati che funzionano su diversi quadri dell'interfaccia utente, tra cui Xamarin.Forms. Xamarin.Forms si basa sui propri meccanismi di navigazione e legame dei dati.
4. Complessità del progetto:
- Per progetti complessi che richiedono personalizzazione dell'interfaccia utente avanzata o funzionalità specifiche della piattaforma, MVVMCRoss potrebbe essere più adatto a causa della sua flessibilità. Per progetti più semplici in cui un'interfaccia utente coerente è sufficiente, Xamarin.forms può essere più semplice da implementare.
5. Approccio allo sviluppo:
- Xamarin.Forms è spesso preferito dagli sviluppatori che hanno familiarità con XAML e .NET, in quanto offre un'esperienza di sviluppo unificata. MVVMCRoss è vantaggioso per i progetti in cui la logica aziendale deve essere disaccoppiata dall'interfaccia utente, consentendo un maggiore controllo sull'implementazione dell'interfaccia utente su ciascuna piattaforma.
In sintesi, mentre entrambi i framework supportano lo sviluppo multipiattaforma, Xamarin.Forms si concentra sulla condivisione del livello dell'interfaccia utente attraverso le piattaforme, mentre MVVMCRoss sottolinea la condivisione della logica aziendale e consente scelte di implementazione dell'interfaccia utente più flessibili. La scelta tra di loro dipende dai requisiti del progetto per quanto riguarda la personalizzazione dell'interfaccia utente, la complessità e la strategia di condivisione del codice.
Citazioni:[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-applications-using-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_mvvm_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/