La programación reactiva y MVVM son dos enfoques que pueden abordar el problema de separar la capa de dominio de la interfaz de usuario.
- MVVM hace esto definiendo un modelo de vista, que es una estructura de datos asignada a componentes de la interfaz de usuario. La interfaz de usuario muestra los datos y puede actualizarlos cuando ocurre el usuario.
- Un marco reactivo define un gráfico de observables que notifican a la interfaz de usuario que algún dato ha cambiado.
Los marcos reactivos están ganando participación mental, tanto en las plataformas principales (con Rx en .net y java, react.js) como en lugares más experimentales (FRP en haskell).
Principalmente he usado MVVM con angular, y encuentro que la relación de simplicidad a expresividad es bastante satisfactoria, aunque solo he trabajado en proyectos pequeños / medianos con él.
¿Qué compra un framework reactivo al desarrollador que mvvm no?
¿Existe realmente una diferencia? Por ejemplo, knockout.js se anuncia como un marco mvvm, pero tiene una sensación reactiva en su interfaz:
this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
Respuestas:
Esos son conceptos diferentes que no compiten y pueden trabajar fácilmente juntos para producir un gran resultado.
En términos simples:
MVVM es útil para alejarse del desorden de código subyacente (GUI / acoplamiento de modelo). El enfoque reactivo es útil para reducir el desorden de eventos / devolución de llamada.
Recomendaría aprender un poco sobre XAML / WPF ya que Microsoft es el inventor original de MVVM. Microsoft también produjo una muy buena implementación del enfoque reactivo: Extensiones reactivas.
Aquí hay un intento decente de combinarlos:
http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI
Pregunta SO relacionada:
/programming/1763411/reactive-extensions-rx-mvvm
fuente