MVVMCRoss migliora significativamente il riutilizzo del codice nelle app multipiattaforma sfruttando il modello architettonico Model-View-ViewModel (MVVM). Ecco come raggiunge questo:
1. Separazione delle preoccupazioni: MVVMCROSS promuove una chiara separazione delle preoccupazioni dividendo l'applicazione in due parti principali: il core e l'interfaccia utente. Il progetto principale, in genere una libreria di classe portatile (PCL) o una libreria standard .NET, contiene tutti i modi, i modelli e la logica aziendale. Ciò consente il massimo riutilizzo del codice su diverse piattaforme, poiché la logica aziendale viene disaccoppiata dal codice specifico della piattaforma [1] [2] [7].
2. ViewModels nel progetto principale: posizionando ViewModels nel progetto principale, MVVMCRoss consente agli sviluppatori di condividere questi componenti su più piattaforme. Ciò significa che la logica per la gestione delle interazioni dell'utente, la manipolazione dei dati e la navigazione possono essere riutilizzate senza modifiche su piattaforme diverse come iOS, Android e Windows [1] [3] [9].
3. Binding dei dati: MVVMCRoss supporta l'associazione dei dati, che aggiorna automaticamente l'interfaccia utente quando si verificano le modifiche nel ViewModel. Questa funzione è cruciale per mantenere la coerenza tra le piattaforme e riduce la necessità di aggiornamenti dell'interfaccia utente manuale, migliorando ulteriormente il riutilizzo del codice [4] [5].
4. Iniezione di dipendenza e plug-in: MVVMCRoss include funzionalità di architettura plug-in e iniezione di dipendenza (DI). Queste caratteristiche consentono agli sviluppatori di implementare funzionalità specifiche della piattaforma in modo da poter accedere e riutilizzare facilmente dal progetto principale. Ciò significa che mentre il livello dell'interfaccia utente deve essere specifico della piattaforma, molte funzionalità sottostanti possono ancora essere condivise [3] [9].
5. Navigazione e visualizza presentatori: MVVMCRoss fornisce un potente sistema di navigazione ViewModel-First, che consente l'orchestrazione della navigazione dell'applicazione dal progetto principale. Ciò significa che il flusso di interazioni utente e le transizioni dello schermo possono essere gestite centralmente, riducendo la necessità di codice di navigazione specifico della piattaforma [7].
6. Struttura efficiente del progetto: MVVMCROSS incoraggia un approccio strutturato all'organizzazione del progetto, con una chiara separazione tra il codice agnostico della piattaforma nel codice core e specifico della piattaforma nei progetti dell'interfaccia utente. Questa struttura facilita la manutenzione e l'estensione più facili delle applicazioni multipiattaforma [2] [9].
Nel complesso, MVVMCRoss migliora il riutilizzo del codice centralizzando la logica aziendale, sfruttando l'associazione dei dati e fornendo strumenti per la gestione delle funzionalità specifiche della piattaforma in modo unificato. Questo approccio riduce significativamente la quantità di codice duplicato e accelera lo sviluppo di app multipiattaforma.
Citazioni:[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-app-development-with-xamarin-and-mvvmcross-part-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-applications-using-the-mvvmcross-framework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross