Créez des applications MVVM avec la boîte à outils de la communauté Windows

Microsoft a toujours su travailler avec les développeurs depuis ses débuts en tant que fournisseur de langues. Son programme a évolué au fil des ans, d'une approche descendante, axée sur Redmond qui a culminé avec les DVD de documentation MSDN réguliers, au programme communautaire d'aujourd'hui, autour de Microsoft Docs, Microsoft Learn, une équipe mondiale d'Azure Developer Advocates, et un ensemble sans cesse croissant d'outils et de frameworks développés sur GitHub.

La boîte à outils de la communauté Windows: un kit de démarrage .NET

Travailler avec la communauté a produit des résultats intéressants avec une documentation plus précise et opportune en utilisant GitHub pour gérer le contenu et une série de projets open source menés par la communauté. L'un des projets les plus importants est la boîte à outils de la communauté Windows, une série de fonctions, de contrôles et de services pour les applications .NET et UWP. C'est un projet qui ne fera que devenir plus important avec la transition de l'ancien .NET Framework vers le .NET 5 basé sur .NET Core et le déploiement de Project Reunion et du framework d'interface utilisateur multiplateforme multiplateforme (MAUI).

La boîte à outils de la communauté Windows n'est pas une entité monolithique qui doit être livrée avec vos applications. C'est un ensemble de packages NuGet, vous pouvez donc choisir ce dont vous avez besoin, en réduisant au minimum la surcharge de code et de bibliothèque. Si vous créez des applications Windows .NET modernes, cela vaut la peine d'y jeter un coup d'œil, car il contient de nombreux contrôles XAML importants qui peuvent aider à fournir une application attrayante et conviviale. D'autres outils utiles incluent un ensemble d'aide pour améliorer les performances des applications, un ensemble d'analyseurs pour les formats de données courants, y compris Markdown, et le code de base nécessaire pour prendre en charge le cadre de notification de Windows 10.

Ajout de MVVM à la boîte à outils

L'un des ajouts les plus récents à la boîte à outils est une nouvelle bibliothèque pour la création d'applications à l'aide du modèle de conception MVVM. Model-view-viewmodel est au cœur du futur framework MAUI, et .NET a besoin d'une bonne implémentation rapide pour réussir. Le résultat est un ensemble d'outils MVVM relativement léger ainsi qu'un ensemble d'exemples de code.

Il y a beaucoup à aimer dans la nouvelle implémentation de MVVM Windows Community Toolkit. Le plus utile est peut-être qu'il s'agit d'une amélioration des performances d'un ordre de grandeur par rapport à un outil .NET MVVM comparable, comme l'a souligné son co-auteur Michael Hawker, responsable du projet Windows Community Toolkit chez Microsoft, dans une présentation à UnoConf la semaine dernière. Cette amélioration sera essentielle pour les applications MAUI, en particulier lors du ciblage de plates-formes mobiles telles qu'Android et iOS. Il n'a peut-être pas toutes les fonctionnalités des alternatives lourdes, mais dans la plupart des cas, c'est un choix idéal, et comme certains des outils alternatifs .NET MVVM ne sont plus développés, cela vaut le coup d'œil.

Rendez votre interface utilisateur orientée événement

Le modèle de conception MVVM est conçu pour prendre en charge les interfaces utilisateur basées sur les événements. En son cœur se trouve un modèle, qui sert d'interface entre votre application et toute logique ou donnée métier back-end. Votre interface utilisateur est implémentée par la vue, tout comme le modèle familier MVC (contrôleur de vue modèle). MVVM diffère des autres modèles de conception similaires dans son viewmodel, qui lie les liaisons de données de la vue aux données du modèle, ce qui permet de représenter l'état de l'un à l'autre.

Votre code viewmodel gère le traitement des entrées et des sorties vers et depuis la vue, à l'aide de liaisons de données XAML standard vers les contrôles. Le but ici est de réduire au minimum le code dans la vue afin que les concepteurs puissent se concentrer sur la production d'expériences utilisateur pendant que les développeurs travaillent sur le code back-end et sur le traitement de l'état de la vue par événement. En imposant une séparation entre la vue et le modèle, vous pouvez concentrer le développement sur la logique de l'application, en utilisant des contrôles de prototype avant de basculer dans une conception finale sans affecter le code qui a été écrit pendant le développement de l'application.

Commencez avec Microsoft.MVVM.Toolkit

Le code de la nouvelle boîte à outils MVVM est très récent, mais il est suffisamment mature pour prendre en charge le développement d'applications prototypes. Le plus gros problème est peut-être qu'il n'y a pas encore de documentation pour Microsoft.Toolkit.MVVM sur le site Microsoft Docs, bien qu'une petite recherche trouvera la première tranche de documentation sur GitHub.

Comme le reste du Windows Community Toolkit, le MVVM Toolkit s'installe à partir d'un référentiel Nuget. Comme il a été inspiré par MVVMLight, désormais obsolète, la transition de l'ancienne boîte à outils vers la boîte à outils de la communauté Windows ne devrait pas être trop difficile.

Commencez par télécharger la version préliminaire de MVVM Toolkit à partir de Nuget et installez-la dans votre application dans Visual Studio. Cela introduira toutes les dépendances et mettra en place un cadre que vous pouvez utiliser pour commencer à créer une application MVVM.

Sous le capot: un système de notification en action

Au fond, MVVM est une architecture basée sur la messagerie qui surveille les événements du modèle et de la vue, en envoyant des notifications asynchrones entre les deux à l'aide du viewmodel. Vous devrez vous familiariser avec les classes de base de base qui contrôlent la façon dont le modèle de vue répond aux propriétés modifiées dans le modèle sous-jacent. Lorsqu'un objet observable dans le modèle change d'état, le viewmodel déclenche une notification appropriée et l'utilise pour remettre un message d'événement via une liaison à un contrôle d'interface utilisateur dans la vue.

La clé du fonctionnement du MVVM Toolkit, et la raison de ses améliorations de performances significatives par rapport aux autres implémentations .NET MVVM, est sa classe Messenger. C'est ainsi que vous liez les différents éléments d'une application MVVM, en implémentant et en enregistrant des gestionnaires de messages. Vous pouvez le considérer comme un système de publication et d'abonnement simplifié, offrant uniquement des services au modèle et à la vue. Les destinataires et les expéditeurs doivent être enregistrés et non enregistrés s'ils ne sont plus nécessaires. Par exemple, si vous utilisez MVVM Toolkit pour alimenter une application de chat et qu'un utilisateur spécifique se déconnecte, vous devez le désinscrire de l'application pour éviter les fuites de mémoire.

Conception pour MVVM

Avoir un modèle de publication et d'abonnement au cœur de la vue du modèle a beaucoup de sens. Il vous permet de vous assurer que toutes vos liaisons de contrôle sont associées aux points de terminaison de message, ce qui vous permet de créer par programme les mappages nécessaires pour lier la vue et le modèle d'une manière qui devrait évoluer entre plusieurs vues et plusieurs modèles.

La séparation de la vue et du modèle de cette manière simplifie la structure globale de votre application, en particulier lorsque vous considérez que vous passez entre un modèle de programmation déclaratif dans votre vue XAML et une approche orientée objet dans votre modèle. L'utilisation d'un modèle de vue basé sur la messagerie comme couche de traduction entre ces deux modes de programmation très différents réduit les risques et réduit au minimum la quantité de code derrière nécessaire dans vos vues. Avant d'écrire du code, assurez-vous que la conception de votre application inclut ces mappages et ces liaisons en détail, ainsi que les messages qu'ils transportent, car ce sont vos API internes pour toute votre intégration entre le front-end et le back-end.

Le travail de la communauté .NET sur la boîte à outils de la communauté Windows est important pour l'avenir de la plate-forme. Avec des changements importants en cours (la transition vers .NET 5, la séparation du SDK et de Windows dans Project Reunion, et le modèle d'interface utilisateur multiplateforme dans MAUI), disposer d'un ensemble de contrôles et de fonctionnalités de référence devient de plus en plus important. Vous pouvez choisir les éléments que vous souhaitez obtenir un coup de pouce sur votre propre parcours .NET. Le MVVM Toolkit est peut-être l'une des pièces les plus récentes du kit, mais il est susceptible de devenir l'un des plus importants.