Ich habe angefangen, über Redux und React in der Web-Welt zu lernen, und je mehr ich darüber lerne, desto mehr wird mir klar, wie schmerzhaft die Statusverwaltung in der Desktop-Welt mit der MVVM-Architektur von WPF ist (mit Caliburn speziell zum Binden von Views) zu ViewModels).
Redux verfügt über einige einfache Prinzipien, die vorgeben, wie der Status verwaltet werden soll, sodass Benutzeroberflächenaktualisierungen, Ereignisbehandlung und Statusänderungen viel vorhersehbarer sind. Die Prinzipien sind:
- Eine einzige Quelle der Wahrheit (alle veränderlichen Zustände sind in einem einzigen gemeinsamen Objekt gespeichert).
- Der Status ist schreibgeschützt. Es kann nicht von Komponenten im gesamten Code geändert werden, was normalerweise in WPF der Fall ist.
- Der Zustand kann nur durch reine Funktionen geändert werden.
Mit der MVVM-Architektur von WPF können Sie sehr schnell interaktive Ansichten erstellen. Das Debuggen von Problemen, wenn verschiedene Ansichtsmodelle und Ereignisse den Status ändern, ist jedoch ein Albtraum. Beispiel: Ein Ereignis wurde ausgelöst, bei dem eine Ansicht geändert und versucht wurde, eine Standardregisterkarte festzulegen, die Daten wurden jedoch nicht asynchron von einem Webdienst geladen, sodass die Registerkarte (noch) nicht vorhanden ist und nichts passiert
Ich habe Stunden damit verbracht, Diagramme zu zeichnen, um zu versuchen, komplexe Interaktionen zwischen miteinander verknüpften viewModels-Komponenten zu verstehen, die sich gegenseitig aktualisieren.
Ich verstehe, dass Redux versucht, einen Teil dieser unvorhersehbaren Zustände zu lösen. Gibt es etwas Ähnliches oder ein Architekturmuster, das gut zu WPF passt, um den Zustand besser zu verwalten? Ich bin nicht sicher, wie gut die Redux-Prinzipien in .NET funktionieren würden, da ich sie noch nicht ausprobiert habe. Vielleicht hat jemand Erfahrung, die einen Rat geben kann?