Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Puoi spiegare l'interazione tra i progetti core e dell'interfaccia utente in mvvmcross


Puoi spiegare l'interazione tra i progetti core e dell'interfaccia utente in mvvmcross


MVVMCRoss è un framework multipiattaforma che facilita lo sviluppo di applicazioni utilizzando il modello MODEL-View-ViewModel (MVVM). Consente agli sviluppatori di creare soluzioni mobili liberamente accoppiate, maneggebili e verificabili separando la logica dell'applicazione in due parti principali: il progetto principale e il progetto dell'interfaccia utente.
Progetto

Core

Il progetto principale è in genere una libreria standard .NET che contiene tutto il codice condiviso, incluso:
- ViewModels: questi sono responsabili della gestione delle interazioni degli utenti e della logica aziendale.
- Modelli: rappresentare le strutture di dati utilizzate in tutta l'applicazione.
- Servizi: fornire accesso a dati, servizi Web o altre risorse esterne.
- Convertitori: utilizzato per le conversioni del tipo di dati.
- Classe di app: questo è responsabile dell'inizializzazione della logica aziendale dell'applicazione e della visualizzazione dei modelli. Gestisce anche la registrazione di oggetti personalizzati nel contenitore di inversione del controllo (IOC).
- AppStart: facoltativamente utilizzato per determinare quale modello di visualizzazione presentare prima quando si avvia l'applicazione.
Progetto

UI

Il progetto UI è specifico della piattaforma e contiene gli elementi dell'interfaccia utente e il codice specifico della piattaforma. Per ogni piattaforma target (ad es. IOS, Android), esiste un progetto di utente separato. Questi progetti includono:
- Visualizzazioni: ogni vista è responsabile della presentazione di un modello di vista corrispondente. Le viste sono progettate utilizzando strumenti di piattaforma nativi (ad es. XAML per xamarin.forms, axml per Android).
- Handler dell'applicazione nativa: questo gestisce gli eventi del ciclo di vita nativo. Ad esempio, su Android, sarebbe una classe `MainActivity` o` MainApplication`, mentre su iOS, sarebbe una classe `AppDelegate '.
- Classe di configurazione: questo è responsabile del bootstrap MVVMCROSS e della registrazione dei servizi specifici della piattaforma. Inizializza il framework MVVMCRoss e imposta il contenitore IOC con implementazioni specifiche della piattaforma.

interazione tra progetti Core e UI

L'interazione tra i progetti Core e UI in MVVMCRoss è facilitata dal modello MVVM e dal contenitore IOC del framework. Ecco come interagiscono:
- ViewModel Binding: i progetti dell'interfaccia utente utilizzano MVVMCRoss per legare le viste per visualizzare i modelli. Questo viene in genere eseguito usando una convenzione di denominazione o decorando viste con attributi come `[mvxviewfor (typeof (homeviewmodel))]`.
- Iniezione del servizio: il progetto principale definisce le interfacce per i servizi implementati in modo diverso su ciascuna piattaforma. Questi servizi sono registrati nel contenitore IOC e iniettati nei modelli di visualizzazione, consentendo funzionalità specifiche della piattaforma senza duplicare il codice.
- Navigazione e presentazione: MVVMCROSS fornisce meccanismi per la navigazione tra i modelli di visualizzazione e le viste di presentazione. Il framework utilizza i presentatori (ad esempio, `imvxiosviewpresenter`,` imvxandroidviewpresenter`) per gestire il modo in cui le viste vengono visualizzate su ciascuna piattaforma.

Separando la logica dell'applicazione in progetti Core e UI, MVVMCRoss consente agli sviluppatori di massimizzare il riutilizzo del codice attraverso le piattaforme pur consentendo la personalizzazione e l'ottimizzazione specifiche della piattaforma [1] [3] [5].

Citazioni:
[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[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/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/