Я начал изучать Redux и React в веб-мире, и чем больше я узнаю об этом, тем больше осознаю, насколько болезненным является управление состоянием в настольном мире с архитектурой в стиле MVF в WPF (специально использующей Caliburn для привязки Views). для ViewModels).
Redux имеет несколько простых принципов, которые определяют порядок управления состоянием, делая обновления пользовательского интерфейса, обработку событий и изменения состояния гораздо более предсказуемыми. Принципы:
- Единственный источник правды (все изменяемые состояния хранятся в одном общем объекте).
- Состояние только для чтения. Он не может быть изменен компонентами по всему коду, что обычно происходит в WPF.
- Состояние может быть изменено только чистыми функциями.
Архитектура MVFM в WPF позволяет очень быстро создавать интерактивные представления, но отладка проблем, когда различные модели и события всех состояний изменяют состояние, является кошмаром. Например: произошло событие, которое изменило представление и попыталось установить вкладку по умолчанию, но данные не завершили асинхронную загрузку из веб-службы, поэтому вкладка не существует (пока), поэтому ничего не происходит
Я потратил часы на рисование диаграмм, чтобы попытаться понять сложные взаимодействия между взаимосвязанными компонентами viewModels, которые обновляют друг друга.
Я понимаю, что Redux стремится решить некоторые из этих состояний непредсказуемости. Есть ли что-то похожее или архитектурный шаблон, который бы прекрасно подходил для WPF, чтобы помочь лучше управлять состоянием? Я не уверен, насколько хорошо принципы Redux будут работать в .NET, так как я еще не пробовал их. Возможно, у кого-то есть опыт, который может дать совет?