Erstellen Sie MVVM-Anwendungen mit dem Windows Community Toolkit

Microsoft hat von Anfang an als Sprachanbieter immer gut mit Entwicklern zusammengearbeitet. Das Programm hat sich im Laufe der Jahre von einem von oben nach unten gerichteten, von Redmond gesteuerten Ansatz, der mit den regulären MSDN-DVDs mit Dokumentation seinen Höhepunkt erreichte, zu einem heutigen Community-basierten Programm entwickelt, das sich um Microsoft Docs, Microsoft Learn, ein globales Team von Azure Developer Advocates, dreht. und eine ständig wachsende Anzahl von Tools und Frameworks, die auf GitHub entwickelt wurden.

Das Windows Community Toolkit: ein .NET-Starterkit

Die Zusammenarbeit mit der Community hat zu interessanten Ergebnissen mit einer genaueren und aktuelleren Dokumentation geführt, bei der GitHub zur Verwaltung von Inhalten und einer Reihe von von der Community geführten Open Source-Projekten verwendet wird. Eines der wichtigsten Projekte ist das Windows Community Toolkit, eine Reihe von Funktionen, Steuerelementen und Diensten für .NET- und UWP-Anwendungen. Dieses Projekt wird erst mit dem Übergang vom älteren .NET Framework zum .NET Core-basierten .NET 5 und der Einführung von Project Reunion und dem plattformübergreifenden Multiplattform App UI (MAUI) Framework wichtiger.

Das Windows Community Toolkit ist keine monolithische Entität, die mit Ihren Anwendungen geliefert werden muss. Es handelt sich um eine Reihe von NuGet-Paketen, mit denen Sie auswählen können, was Sie benötigen, um den Code- und Bibliotheksaufwand auf ein Minimum zu beschränken. Wenn Sie moderne Windows .NET-Anwendungen erstellen, ist dies einen Blick wert, da es viele wichtige XAML-Steuerelemente enthält, die dazu beitragen können, eine gut aussehende und benutzerfreundliche Anwendung bereitzustellen. Weitere nützliche Tools sind eine Reihe von Hilfsprogrammen zur Verbesserung der Anwendungsleistung, eine Reihe von Parsern für gängige Datenformate, einschließlich Markdown, und der Kerncode, der zur Unterstützung des Benachrichtigungsframeworks von Windows 10 erforderlich ist.

Hinzufügen von MVVM zum Toolkit

Eine der jüngsten Ergänzungen des Toolkits ist eine neue Bibliothek zum Erstellen von Anwendungen unter Verwendung des MVVM-Entwurfsmusters. Model-View-View-Modell ist das Herzstück des kommenden MAUI-Frameworks, und .NET benötigt eine gute, schnelle Implementierung, um erfolgreich zu sein. Das Ergebnis ist ein relativ leichter Satz von MVVM-Tools sowie ein Satz von Beispielcode.

In der neuen Implementierung des MVVM Windows Community Toolkit gibt es viel zu mögen. Das vielleicht nützlichste ist, dass es eine Leistungsverbesserung um eine Größenordnung gegenüber vergleichbaren .NET MVVM-Tools darstellt, wie sein Co-Autor Michael Hawker, der Leiter des Windows Community Toolkit-Projekts bei Microsoft, in einer Präsentation auf der UnoConf letzte Woche hervorhob. Diese Verbesserung ist für MAUI-Anwendungen von entscheidender Bedeutung, insbesondere wenn sie auf mobile Plattformen wie Android und iOS abzielen. Es verfügt möglicherweise nicht über alle Funktionen von Alternativen im Schwergewicht, ist jedoch für die meisten Zwecke eine ideale Wahl. Da einige der alternativen .NET MVVM-Tools nicht mehr entwickelt werden, ist es einen Blick wert.

Machen Sie Ihre Benutzeroberfläche ereignisgesteuert

Das MVVM-Entwurfsmuster soll ereignisgesteuerte Benutzeroberflächen unterstützen. Das Herzstück ist ein Modell, das als Schnittstelle zwischen Ihrer Anwendung und jeder Back-End-Geschäftslogik oder -daten fungiert. Ihre Benutzeroberfläche wird von der Ansicht implementiert, ähnlich wie das bekannte MVC-Muster (Model View Controller). MVVM unterscheidet sich von anderen ähnlichen Entwurfsmustern in seinem Ansichtsmodell, das Datenbindungen in der Ansicht mit den Daten im Modell verknüpft und eine Möglichkeit bietet, den Status von einem zum anderen darzustellen.

Ihr Ansichtsmodellcode verarbeitet die Verarbeitung von Ein- und Ausgaben in und aus der Ansicht unter Verwendung von Standard-XAML-Datenbindungen an Steuerelemente. Ziel ist es, den Code in der Ansicht auf ein Minimum zu beschränken, damit sich Designer darauf konzentrieren können, Benutzererfahrungen zu erstellen, während Entwickler am Back-End-Code und an der ereignisgesteuerten Verarbeitung des Ansichtsstatus durch das Ansichtsmodell arbeiten. Durch Erzwingen einer Trennung zwischen der Ansicht und dem Modell können Sie die Entwicklung auf die Anwendungslogik konzentrieren, indem Sie Prototyp-Steuerelemente verwenden, bevor Sie ein endgültiges Design wechseln, ohne den Code zu beeinflussen, der während der Anwendungsentwicklung geschrieben wurde.

Beginnen Sie mit Microsoft.MVVM.Toolkit

Der Code für das neue MVVM-Toolkit ist sehr neu, aber ausgereift genug, um die Entwicklung von Prototypanwendungen zu unterstützen. Das vielleicht größte Problem ist, dass es noch keine Dokumentation für Microsoft.Toolkit.MVVM auf der Microsoft Docs-Website gibt, obwohl eine kleine Suche die erste Tranche der Dokumentation auf GitHub findet.

Wie der Rest des Windows Community Toolkit wird das MVVM Toolkit aus einem Nuget-Repository installiert. Der Übergang vom älteren Toolkit zum Windows Community Toolkit sollte nicht allzu schwierig sein, da er von dem mittlerweile veralteten MVVMLight inspiriert wurde.

Laden Sie zunächst die Vorschauversion des MVVM Toolkit von Nuget herunter und installieren Sie sie in Ihrer Anwendung in Visual Studio. Dadurch werden alle Abhängigkeiten berücksichtigt und ein Framework eingerichtet, mit dem Sie mit dem Erstellen einer MVVM-Anwendung beginnen können.

Unter der Haube: ein Benachrichtigungssystem in Aktion

Im Kern handelt es sich bei MVVM um eine Messaging-basierte Architektur, die Ereignisse sowohl aus dem Modell als auch aus der Ansicht überwacht und mithilfe des Ansichtsmodells asynchrone Benachrichtigungen zwischen beiden sendet. Sie müssen sich mit den Kernbasisklassen vertraut machen, die steuern, wie das Ansichtsmodell auf geänderte Eigenschaften im zugrunde liegenden Modell reagiert. Wenn ein beobachtbares Objekt im Modell den Status ändert, löst das Ansichtsmodell eine entsprechende Benachrichtigung aus und verwendet diese, um eine Ereignismeldung über eine Bindung an ein UI-Steuerelement in der Ansicht zu übermitteln.

Der Schlüssel zum Betrieb des MVVM-Toolkits und der Grund für seine signifikanten Leistungsverbesserungen gegenüber anderen .NET MVVM-Implementierungen ist seine Messenger-Klasse. Auf diese Weise verknüpfen Sie die verschiedenen Elemente einer MVVM-Anwendung und implementieren und registrieren Nachrichtenhandler. Sie können sich das als vereinfachtes Veröffentlichungs- und Abonnementsystem vorstellen, das nur Dienste für das Modell und die Ansicht anbietet. Empfänger und Absender müssen registriert und nicht registriert werden, wenn sie nicht mehr benötigt werden. Wenn Sie beispielsweise MVVM Toolkit zum Aktivieren einer Chat-App verwenden und sich ein bestimmter Benutzer abmeldet, müssen Sie die Registrierung in der Anwendung aufheben, um Speicherverluste zu vermeiden.

Entwerfen für MVVM

Es ist sehr sinnvoll, ein Publish- und Subscribe-Modell im Mittelpunkt der Modellansicht zu haben. Auf diese Weise können Sie sicherstellen, dass alle Ihre Steuerelementbindungen mit Nachrichtenendpunkten verknüpft sind. Auf diese Weise können Sie die Zuordnungen, die zum Verknüpfen von Ansicht und Modell erforderlich sind, programmgesteuert so erstellen, dass sie zwischen mehreren Ansichten und mehreren Modellen skaliert werden können.

Das Trennen von Ansicht und Modell auf diese Weise vereinfacht die Gesamtstruktur Ihrer Anwendung, insbesondere wenn Sie bedenken, dass Sie zwischen einem deklarativen Programmiermodell in Ihrer XAML-Ansicht und einem objektorientierten Ansatz in Ihrem Modell wechseln. Die Verwendung eines messagingbasierten Ansichtsmodells als Übersetzungsschicht zwischen diesen beiden sehr unterschiedlichen Programmiermethoden reduziert das Risiko und reduziert den in Ihren Ansichten erforderlichen Code-Behind auf ein Minimum. Bevor Sie Code schreiben, stellen Sie sicher, dass Ihr Anwendungsdesign diese Zuordnungen und Bindungen sowie die darin enthaltenen Nachrichten im Detail enthält, da dies Ihre internen APIs für die gesamte Integration zwischen Front-End und Back-End sind.

Die Arbeit der .NET-Community am Windows Community Toolkit ist wichtig für die Zukunft der Plattform. Mit bedeutenden Änderungen (dem Übergang zu .NET 5, der Trennung von SDK und Windows in Project Reunion und dem plattformübergreifenden UI-Modell in MAUI) wird es immer wichtiger, über eine Reihe von Referenzsteuerelementen und -funktionen zu verfügen. Sie können die Elemente auswählen, die Sie auf Ihrer eigenen .NET-Reise verbessern möchten. Das MVVM-Toolkit ist möglicherweise einer der neuesten Teile des Kits, wird jedoch wahrscheinlich zu einem der wichtigsten.