Programmazione reattiva vs modello MVVM per la gestione degli aggiornamenti della GUI


10

La programmazione reattiva e MVVM sono due approcci che possono affrontare il problema della separazione del livello di dominio dall'interfaccia utente.

  • MVVM lo fa definendo un modello di visualizzazione, che è una struttura di dati mappata ai componenti dell'interfaccia utente. L'interfaccia utente visualizza i dati e forse li aggiorna quando si verifica l'utente.
  • un framework reattivo definisce un grafico di osservabili che avvisano l'interfaccia utente che alcuni dati sono cambiati

I framework reattivi stanno guadagnando quote mentali, sia nelle piattaforme mainstream (con Rx in .net e java, reazioni.js) sia in luoghi più sperimentali (FRP in haskell).

Ho usato principalmente MVVM con angolare e trovo il rapporto semplicità-espressività abbastanza soddisfacente, anche se ho lavorato solo su progetti medio / piccoli.

Che cosa compra un framework reattivo allo sviluppatore che mvvm non fa?

C'è davvero una differenza? Ad esempio, knockout.js è pubblicizzato come framework mvvm, ma ha una sensazione reattiva nella sua interfaccia:

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

this.fullName = ko.computed(function() {
    return this.firstName() + " " + this.lastName();
}, this);

MVVM è un modello per separare la preoccupazione della presentazione dal dominio. I framework reattivi sono strumenti che possono essere utilizzati per raggiungere questo modello di separazione. Non sono esclusivi.
AlexFoxGill

@AlexG Bene, ci sono strumenti che coordinano la comunicazione tra un modello di visualizzazione e l'interfaccia utente. Chiamerei quei framework MVVM.
Simon Bergot,

Il punto è evidente: KnockoutJS utilizza un framework reattivo per consentire la separazione delle preoccupazioni tra MVVM. AngularJS utilizza il controllo sporco per abilitare MVVM. Sono solo modi diversi per raggiungere il modello. Forse la tua domanda è "Che cosa
AlexFoxGill

@AlexG quindi diresti che è un dettaglio di implementazione? Penso che risponda alla mia domanda.
Simon Bergot,

@Simon: Non lo qualificherei come un dettaglio di implementazione, ma piuttosto come diversi approcci per comunicare cambiamenti nel Modello fino al ViewModel
Bart van Ingen Schenau,

Risposte:


9

Questi sono diversi concetti non concorrenti e possono facilmente lavorare insieme per produrre un grande risultato.

In parole povere:

MVVM è utile per allontanarsi dal disordine codebehind (accoppiamento GUI / modello). L'approccio reattivo è utile per ridurre il disordine di eventi / callback.

Consiglierei di imparare un po 'su XAML / WPF poiché Microsoft è l'inventore originale di MVVM. Microsoft ha anche prodotto un'ottima implementazione dell'approccio reattivo: estensioni reattive.

Ecco un tentativo decente di combinarli:

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

Domanda SO correlata:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.