MVVMCross est un cadre multiplateforme qui facilite le développement d'applications en utilisant le modèle de mode View-ViewModel (MVVM). Il permet aux développeurs de créer des solutions mobiles couplées, maintenables et testables en séparation en séparant la logique d'application en deux parties principales: le projet de base et le projet d'interface utilisateur.
Projet de base ##
Le projet de base est généralement une bibliothèque standard .NET qui contient tout le code partagé, notamment:
- ViewModels: Ceux-ci sont responsables de la gestion des interactions des utilisateurs et de la logique métier.
- Modèles: représentent les structures de données utilisées dans l'application.
- Services: donnez l'accès aux données, aux services Web ou à d'autres ressources externes.
- Convertisseurs: utilisés pour les conversions de type de données.
- Classe d'application: Ceci est responsable de l'initialisation de la logique métier et des modèles d'affichage de l'application. Il gère également l'enregistrement des objets personnalisés dans le conteneur d'inversion du contrôle (IOC).
- AppStart: éventuellement utilisé pour déterminer le modèle de vue à présenter d'abord lorsque l'application démarre.
UI
Le projet d'interface utilisateur est spécifique à la plate-forme et contient les éléments d'interface utilisateur et le code spécifique à la plate-forme. Pour chaque plate-forme cible (par exemple, iOS, Android), il existe un projet d'interface utilisateur distinct. Ces projets incluent:- Vues: chaque vue est responsable de la présentation d'un modèle de vue correspondant. Les vues sont conçues à l'aide d'outils de plate-forme native (par exemple, XAML pour xamarin.forms, axml pour Android).
- Gestionnaire d'applications natif: cela gère les événements de cycle de vie natifs. Par exemple, sur Android, ce serait une classe «MainActivity» ou «MainApplication», tandis que sur iOS, ce serait une classe «AppDelegate».
- Classe de configuration: Ceci est responsable de l'amorçage MVVMCross et de l'enregistrement des services spécifiques à la plate-forme. Il initialise le cadre MVVMCross et configure le conteneur IOC avec des implémentations spécifiques à la plate-forme.
Interaction entre les projets de noyau et d'interface utilisateur
L'interaction entre les projets noyau et d'interface utilisateur dans MVVMCross est facilitée par le modèle MVVM et le conteneur IOC du cadre. Voici comment ils interagissent:- ViewModel Liaison: les projets d'interface utilisateur utilisent MVVMCross pour lier les vues aux modèles de vue. Cela se fait généralement à l'aide d'une convention de dénomination ou en décorant des vues avec des attributs comme `[mvxViewFor (typeof (homeViewModel))]`.
- Injection de service: le projet de base définit les interfaces pour les services qui sont implémentés différemment sur chaque plate-forme. Ces services sont enregistrés dans le conteneur IOC et injectés dans les modèles de vue, permettant des fonctionnalités spécifiques à la plate-forme sans duplication de code.
- Navigation et présentation: MVVMCross fournit des mécanismes pour naviguer entre les modèles de vue et présenter des vues. Le framework utilise des présentateurs (par exemple, `imvxioSViewPresenter`,` imvxandroidViewPresenter`) pour gérer la façon dont les vues sont affichées sur chaque plate-forme.
En séparant la logique d'application en projets de noyau et d'interface utilisateur, MVVMCross permet aux développeurs de maximiser la réutilisation du code sur toutes les plates-formes tout en permettant une personnalisation et une optimisation spécifiques à la plate-forme [1] [3] [5].
Citations:[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/custumising-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-formes-application-with-mvvmcross/