Ho iniziato a conoscere Redux e React nel mondo web e più ne apprendo, più sto realizzando quanto sia dolorosa la gestione dello stato nel mondo desktop con l'architettura in stile MVVM di WPF (usando Caliburn appositamente per legare Views a ViewModels).
Redux ha alcuni semplici principi che determinano come gestire lo stato, rendendo gli aggiornamenti dell'interfaccia utente, la gestione degli eventi e i cambiamenti di stato molto più prevedibili. I principi sono:
- Una singola fonte di verità (tutto lo stato mutabile è archiviato in un singolo oggetto condiviso).
- Lo stato è di sola lettura. Non può essere modificato dai componenti attraverso il codice, che in genere è ciò che accade in WPF.
- Lo stato può essere modificato solo da funzioni pure.
L'architettura MVVM di WPF consente di creare viste interattive molto rapidamente, ma il debug dei problemi quando vari modelli di vista ed eventi cambiano tutti stato è un incubo. Ad esempio: è stato generato un evento che ha modificato una vista e ha tentato di impostare una scheda predefinita, ma i dati non sono stati caricati in modo asincrono da un servizio Web, quindi la scheda non esiste (ancora) quindi non accade nulla
Ho passato ore a disegnare diagrammi per cercare di comprendere complesse interazioni tra componenti viewModels interconnessi che si aggiornano l'un l'altro.
Capisco che Redux mira a risolvere un po 'di imprevedibilità di questo stato. C'è qualcosa di simile o un modello architettonico che si adatterebbe bene con WPF per aiutare a gestire meglio lo stato? Non sono sicuro di come i principi Redux funzionerebbero in .NET poiché non li ho ancora provati. Qualcuno ha qualche esperienza che può dare qualche consiglio?