MVVMCROSS è un quadro popolare per la creazione di applicazioni multipiattaforma utilizzando il modello Model-View-ViewModel (MVVM). Mentre offre molti vantaggi, come l'associazione dei dati e l'iniezione di dipendenza, ci sono diverse sfide associate al suo utilizzo.
difetti nei componenti del framework
Una delle principali sfide con MVVMCRoss è la presenza di difetti all'interno di alcuni dei suoi componenti, in particolare quelli relativi alle visualizzazioni di Android e iOS che supportano il legame dei dati. Questi difetti possono portare a problemi con l'interfaccia utente e richiedere ulteriori sforzi di debug. Poiché MVVMCRoss è open-source, gli utenti possono contribuire con correzioni, ma questo potrebbe non essere sempre semplice per gli sviluppatori senza una vasta conoscenza degli interni del framework [3].
velocità di avvio
Le applicazioni MVVMCROSS spesso sperimentano tempi di avvio più lenti rispetto ad altri framework. Ciò è in gran parte dovuto ai meccanismi basati sulla riflessione utilizzati durante l'inizializzazione, che sono inerenti all'architettura del framework. Sebbene questa lentezza sia comune anche nelle app Xamarin in generale, può essere uno svantaggio per gli utenti che si aspettano un lancio di app veloce [3].
dolori di aggiornamento
L'aggiornamento delle versioni MVVMCRoss può essere una sfida a causa di cambiamenti significativi nelle convenzioni e nel comportamento della denominazione. La documentazione è spesso in ritardo rispetto a questi aggiornamenti, portando a difficoltà a trovare soluzioni a nuovi problemi. Ciò si traduce in un processo di aggiornamento lungo e talvolta frustrante [3].
Qualità della documentazione
La qualità della documentazione MVVMCRoss è un'altra sfida. Spesso contiene errori di ortografia, manca di materiali di riferimento completi e include collegamenti rotti. Gli sviluppatori devono spesso approfondire il codice sorgente del framework per trovare informazioni accurate, che possono richiedere molto tempo e richiedono una buona comprensione dell'architettura del framework [3].
campioni obsoleti
MVVMCRoss fornisce un repository di progetti di campionamento, ma molti di questi campioni sono obsoleti e non compatibili con le ultime versioni del framework. Ciò rende difficile per i nuovi sviluppatori iniziare o per gli sviluppatori esistenti adattarsi ai cambiamenti nel quadro. Vengono mantenuti attivamente solo pochi campioni, il che limita la loro utilità per l'apprendimento e la risoluzione dei problemi [3].
Limitazioni di associazione dei dati
Mentre MVVMCRoss supporta l'associazione dei dati, alcune modalità di associazione, come l'associazione una tantum, sono meno comunemente usate e potrebbero non essere adatte a tutti gli scenari. Questa modalità non monitora attivamente le modifiche dal ViewModel, che può portare a dati obsoleti nella vista se non gestiti correttamente [1].
Problemi di navigazione e ciclo di vita
Navigare tra ViewModels e gestire il loro ciclo di vita può essere complesso, soprattutto quando si tratta di comportamenti specifici della piattaforma come Tombstoning su Android. MVVMCROSS fornisce metodi di ciclo di vita per aiutare a gestire questi scenari, ma padroneggiarli richiede una buona comprensione sia del framework che delle specifiche della piattaforma sottostante [7].
Inversione del localizzatore di controllo e di servizio
Mentre il modello di localizzazione di servizio integrato di MVVMCROSS e il supporto di inversione del controllo (IOC) sono funzionalità potenti, richiedono un'attenta configurazione e gestione. La registrazione dei servizi e la risoluzione delle dipendenze può diventare complessa se non correttamente organizzata, specialmente in applicazioni più grandi [3] [6].
In sintesi, mentre MVVMCROSS offre molti vantaggi per lo sviluppo multipiattaforma, presenta diverse sfide relative a difetti, prestazioni, documentazione e complessità. Affrontare queste sfide richiede una profonda comprensione del quadro e delle sue tecnologie sottostanti.
Citazioni:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://github.com/mvvmcross/mvvmcross/issues/4201
[3] http://wojosoftware.com/software/mvvmcross/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-using-app-and-setup
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/16301045/mvvmcross-v3-is-that-wrong-to-try-to-use-behaviours-and-storyboards-in-a-mu