MVVMCross facilite la séparation des préoccupations dans les applications multiplateformes en mettant en œuvre le modèle Model-View-ViewModel (MVVM), qui favorise intrinsèquement une division claire des responsabilités entre les différentes composantes d'une application. Voici comment MVVMCross y parvient:
Implémentation du modèle MVVM
MVVMCross est construit autour de l'architecture MVVM, qui se compose de trois composantes principales:
- Modèle: représente les données et la logique métier de l'application. Il résume les structures de données et les opérations indépendantes de l'interface utilisateur.
- Voir: gère l'interface utilisateur et les interactions utilisateur. Il est responsable de l'affichage des données et de la réception des entrées de l'utilisateur.
- ViewModel: agit comme un intermédiaire entre le modèle et la vue. Il expose les données et les commandes auxquelles la vue peut se lier, découplant efficacement la vue à partir du modèle.
En maintenant cette séparation, MVVMCROSS garantit que chaque composant se concentre sur son rôle spécifique sans se chevaucher. Par exemple, la vue ne doit pas contenir la logique métier et le ViewModel ne doit pas manipuler directement les éléments d'interface utilisateur.
Bibliothèque de classe portable (PCL) pour la logique partagée
MVVMCross utilise une bibliothèque de classe portable (PCL) pour abriter les anciens de vue, les modèles et les interfaces pour les services spécifiques à la plate-forme. Ce PCL sert de projet de base, contenant la logique commerciale partagée et la gestion de la base de données. En séparant la logique métier en PCL, MVVMCross permet aux développeurs de partager une partie importante du code sur différentes plates-formes, telles que iOS, Android et Windows. Cette approche facilite non seulement la réutilisation du code, mais garantit également que la logique métier reste cohérente sur toutes les plateformes.
Liaison et communication des données
MVVMCROSS utilise la liaison des données pour lier les vues avec leurs anciens de vue correspondants. Ce mécanisme permet à la vue de mettre à jour automatiquement lorsque le ViewModel change, et vice versa. La liaison des données est cruciale pour maintenir la séparation des préoccupations, car elle permet à la vue de réagir aux changements dans ViewModel sans avoir besoin de connaître les détails de l'implémentation de la logique métier.
De plus, MVVMCross prend en charge diverses techniques de communication, telles que les commandes et les événements, ce qui améliore encore la séparation des préoccupations en permettant à la vue d'invoquer des actions sur le ViewModel sans accéder directement à son état interne.
Injection de dépendance et architecture de plugin
MVVMCross intègre l'injection de dépendance (DI) et une architecture de plugin pour gérer les dépendances et étendre les capacités du cadre. L'injection de dépendance aide à garantir que les composants sont couplés de manière lâche, ce qui facilite le test et le maintien de l'application. L'architecture du plugin permet aux développeurs d'ajouter de nouvelles fonctionnalités sans modifier le cadre central, conservant ainsi une séparation propre des préoccupations.
Gestion du cycle de vie
MVVMCROSS propose des fonctionnalités de gestion du cycle de vie pour ViewModels, qui sont liés au cycle de vie des vues. Cela signifie que ViewModels peut être informé lorsque la vue est créée, apparaît, disparaît ou est détruite. Une telle gestion du cycle de vie aide à maintenir une séparation propre des préoccupations en veillant à ce que les ressources soient correctement nettoyées et que l'état de ViewModel soit géré correctement.
En résumé, MVVMCross facilite la séparation des préoccupations dans les applications multiplateformes en appliquant le modèle MVVM, en utilisant un PCL pour la logique partagée, en mettant en œuvre la liaison des données et en incorporant l'injection de dépendance et la gestion du cycle de vie. Ces fonctionnalités contribuent collectivement à une architecture d'application robuste, maintenable et évolutive.
Citations:[1] https://www.linkedin.com/advice/0/what-best-way-ensure-separation-concerns-mvvm-design-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[5] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[6] https://www.mvvmcross.com/documentation/getting-started/getting-started
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://stackoverflow.com/questions/32220007 /
[9] https://github.com/mvvmcross/mvvmcross