MVVMCross est un cadre MVVM polyvalent et extensible conçu pour le développement de la plate-forme multiplate, en particulier dans l'écosystème .NET. Il prend en charge un large éventail de plates-formes, notamment Xamarin.ios, Xamarin.Android, Xamarin.Forms, Universal Windows Platform (UWP) et Windows Présentation Framework (WPF) [1] [2] [4]. L'une des principales caractéristiques de MVVMCross est sa capacité à s'intégrer à d'autres cadres et bibliothèques, améliorant son utilité dans le développement d'applications complexes.
Intégration avec d'autres cadres
1. Intégration CSLA.NET: MVVMCROSS peut être utilisé aux côtés de CSLA.NET, un cadre d'objet commercial. Alors que CSLA.NET se concentre sur la logique métier et la modélisation des données, MVVMCross gère l'interface utilisateur et la logique au niveau de l'application. Les développeurs peuvent tirer parti du cadre d'objets commerciaux de CSLA.NET en héritant de `ViewModelBase» de CSLA et en mettant en œuvre les exigences de MVVMCross. Cette intégration permet le partage de code sur toutes les plates-formes tout en maintenant une séparation claire des préoccupations [5].
2. Intégration ReactiveUI: Bien que MVVMCross et ReactiveUI soient tous deux des cadres MVVM, ils servent des objectifs différents. MVVMCross est plus axé sur les applications mobiles natives et le partage de code, tandis que ReactiveUi met l'accent sur la programmation réactive en utilisant des extensions réactives (RX). Bien qu'ils puissent coexister, ils sont généralement utilisés pour différents aspects du développement des applications. MVVMCross fournit un ensemble complet de fonctionnalités pour le développement de l'interface utilisateur, tandis que ReactiveUI est idéal pour les applications nécessitant des opérations asynchrones avancées [7].
3. Xamarin.Forms et autres cadres d'interface utilisateur: MVVMCross prend en charge l'intégration avec Xamarin.Forms, permettant aux développeurs de créer des applications multiplateformes avec une logique commerciale partagée. Il fonctionne également bien avec d'autres cadres d'interface utilisateur comme Maui et WPF, offrant une flexibilité dans le choix de la couche d'interface utilisateur [3] [7].
4. Framework de plugin: MVVMCross comprend un framework de plugin qui permet aux développeurs d'étendre ses fonctionnalités en ajoutant des plugins tiers pour des fonctionnalités telles que l'emplacement GPS, la localisation et les extensions de liaison. Cette extensibilité permet aux développeurs de personnaliser le cadre en fonction de leurs besoins de projet [1] [2].
Caractéristiques clés facilitant l'intégration
- Inversion du contrôle (CIO) et injection de dépendance: MVVMCross fournit un conteneur IOC qui facilite l'injection de dépendance, ce qui facilite l'intégration avec d'autres cadres en gérant les dépendances et les services à travers l'application [1] [4].
- Moteur de liaison personnalisable: le cadre permet aux développeurs de créer des liaisons personnalisées pour leurs vues, ce qui peut être utile lors de l'intégration avec d'autres composants ou cadres d'interface utilisateur qui nécessitent des mécanismes de liaison de données spécifiques [1] [2].
- ViewModel vers ViewModel Navigation: Cette fonctionnalité aide à gérer la logique de navigation, qui peut être intégrée aux modèles de navigation d'autres cadres pour assurer une expérience utilisateur cohérente sur différentes plates-formes [1] [2].
En résumé, MVVMCross est conçu pour être très intégrable avec d'autres cadres et bibliothèques, permettant aux développeurs de tirer parti de ses forces dans l'architecture MVVM tout en incorporant des fonctionnalités supplémentaires à partir d'autres outils. Son extensibilité et sa prise en charge de diverses plates-formes en font un choix polyvalent pour le développement d'applications multiplateforme.
Citations:[1] https://github.com/mvvmcross/mvvmcross
[2] https://dotnet.libhunt.com/mvvmcross-alternatives
[3] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://stackoverflow.com/questions/17373587/how-well-would-mvvmcross-and-csla-net-work-together-in-a-multi-platform-srategy
[6] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[7] https://www.reactiveui.net/vs/mvvmcross
[8] https://www.mvvmcross.com
[9] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks