Programmation réactive vs modèle MVVM pour gérer les mises à jour de l'interface graphique

10

La programmation réactive et MVVM sont deux approches qui peuvent résoudre le problème de la séparation de la couche de domaine de l'interface utilisateur.

  • MVVM le fait en définissant un modèle de vue, qui est une structure de données mappée à des composants d'interface utilisateur. L'interface utilisateur affiche les données et peut-être les met à jour lorsque l'utilisateur se produit.
  • un cadre réactif définit un graphique d'observables qui notifie l'interface utilisateur que certaines données ont changé

Les frameworks réactifs gagnent en popularité, à la fois dans les plateformes grand public (avec Rx en .net et java, react.js) et dans des endroits plus expérimentaux (FRP dans haskell).

J'ai principalement utilisé MVVM avec angular, et je trouve le rapport simplicité / expressivité assez satisfaisant, même si je n'ai travaillé que sur des projets petits / moyens avec.

Qu'est-ce qu'un framework réactif achète au développeur que mvvm n'a pas?

Y a-t-il vraiment une différence? Par exemple, knockout.js est annoncé comme un framework mvvm, mais a une sensation réactive dans son interface:

this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");

this.fullName = ko.computed(function() {
    return this.firstName() + " " + this.lastName();
}, this);
Simon Bergot
la source
MVVM est un modèle pour séparer le souci de la présentation du domaine. Les cadres réactifs sont des outils qui peuvent être utilisés pour réaliser ce modèle de séparation. Ils ne sont pas exclusifs.
AlexFoxGill
@AlexG Eh bien, il existe des outils qui coordonnent la communication entre un modèle de vue et l'interface utilisateur. J'appellerais ces cadres MVVM.
Simon Bergot
Le point est là: KnockoutJS utilise un cadre réactif pour permettre la séparation des préoccupations MVVM. AngularJS utilise la vérification de validation pour activer MVVM. Ce ne sont que différentes façons de réaliser le modèle. Peut-être que votre question est "Qu'est-ce que le paradigme réactif réalise dans un framework MVVM que la technique Dirty-Checking ne fait pas?"
AlexFoxGill
@AlexG donc vous diriez que c'est un détail d'implémentation? Je pense que cela répond à ma question.
Simon Bergot
@Simon: Je ne le qualifierais pas en tant que détail d'implémentation, mais plutôt en tant qu'approches différentes de la communication des modifications du modèle jusqu'au ViewModel
Bart van Ingen Schenau

Réponses:

9

Ce sont différents concepts non concurrents et ils peuvent facilement travailler ensemble pour produire un excellent résultat.

En termes simples:

MVVM est utile pour s'éloigner de l'encombrement codebehind (couplage GUI / modèle). Une approche réactive est utile pour réduire l'encombrement des événements / rappels.

Je recommanderais d'en apprendre un peu plus sur XAML / WPF car Microsoft est l'inventeur original de MVVM. Microsoft a également produit une très bonne implémentation de l'approche réactive: les extensions réactives.

Voici une tentative décente de les combiner:

http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI

Question SO connexe:

/programming/1763411/reactive-extensions-rx-mvvm

Tanière
la source