Programowanie reaktywne i MVVM to dwa podejścia, które mogą rozwiązać problem oddzielenia warstwy domeny od interfejsu użytkownika.
- MVVM robi to, definiując viewmodel, który jest strukturą danych odwzorowaną na komponenty interfejsu użytkownika. Interfejs użytkownika wyświetla dane i może je zaktualizować, gdy wystąpi użytkownik.
- reaktywna struktura definiuje wykres obserwowalnych, które powiadamiają interfejs użytkownika o zmianie jakiegoś elementu danych
Reaktywne frameworki zyskują popularność, zarówno na głównych platformach (z Rx w .net i java, reag.js), jak i w bardziej eksperymentalnych miejscach (FRP w haskell).
Używałem głównie MVVM z kątownikiem i uważam stosunek prostoty do ekspresji za całkiem satysfakcjonujący, chociaż pracowałem z nim tylko przy małych / średnich projektach.
Co reaktywne środowisko kupuje programistom, czego nie robi mvvm?
Czy naprawdę jest jakaś różnica? Na przykład knockout.js jest reklamowany jako framework mvvm, ale ma reaktywne działanie w interfejsie:
this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
Odpowiedzi:
Są to różne niekonkurencyjne koncepcje i mogą one z łatwością współpracować, aby uzyskać świetny wynik.
W laika:
MVVM przydaje się, aby uciec od bałaganu kodebehind (GUI / model coupling). Reaktywne podejście jest przydatne w celu zmniejszenia bałaganu zdarzenia / wywołania zwrotnego.
Poleciłbym dowiedzieć się trochę o XAML / WPF, ponieważ Microsoft jest oryginalnym wynalazcą MVVM. Microsoft opracował również bardzo dobrą implementację podejścia Reactive: Reactive Extensions.
Oto przyzwoita próba ich połączenia:
http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI
Powiązane pytanie SO:
/programming/1763411/reactive-extensions-rx-mvvm
źródło