Я почав дізнаватися про Redux та React у веб-світі, і чим більше я дізнаюсь про це, тим більше я розумію, наскільки болісне управління державою у настільному світі за допомогою архітектури MVVM у стилі WPF (використовуючи Caliburn спеціально для зв’язування поглядів до ViewModels).
Redux має кілька простих принципів, які диктують, яким чином слід керувати державою, роблячи оновлення інтерфейсу користувача, обробку подій та зміни стану набагато передбачуванішими. Принципи:
- Єдине джерело істини (всі зміни, що змінюються, зберігаються в одному спільному об'єкті).
- Держава доступна лише для читання. Він не може бути змінений компонентами через код, що зазвичай відбувається у WPF.
- Стан можна змінювати лише за допомогою чистих функцій.
Архітектура MVVM WPF дозволяє вам створювати інтерактивні погляди дуже швидко, але проблеми налагодження, коли різні моделі перегляду та події змінюють стан, є кошмаром. Наприклад: запускається подія, яка змінила подання та спробувала встановити вкладку за замовчуванням, але дані не закінчили завантажуватися асинхронно з веб-служби, тому вкладка не існує (поки що), тому нічого не відбувається
Я витратив години на малювання діаграм, щоб спробувати і зрозуміти складні взаємодії між взаємопов'язаними компонентами viewModels, які оновлюють один одного.
Я розумію, що Redux має на меті вирішити частину цієї непередбачуваності. Чи є щось подібне чи архітектурний зразок, який би добре поєднувався з WPF, щоб допомогти краще керувати державою? Я не впевнений, наскільки добре працюватимуть принципи Redux в .NET, оскільки я ще їх не пробував. Можливо, у когось є досвід, який може дати поради?