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

8

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

  • MVVM esegue questa operazione definendo un viewmodel, che è una struttura dati mappata ai componenti dell'interfaccia utente. L'interfaccia utente visualizza i dati e, eventualmente, li aggiorna quando si verifica l'utente.
  • un framework reattivo definisce un grafico di osservabili che notificano all'interfaccia utente che alcuni dati sono stati modificati

I framework reattivi stanno conquistando quote mentali, sia nelle piattaforme mainstream (con Rx in .net e java, react.js) che in altri posti sperimentali (FRP in haskell).

Ho utilizzato principalmente MVVM con angolare e trovo la semplicità del rapporto di espressività abbastanza soddisfacente, sebbene abbia lavorato solo su progetti di piccole / medie dimensioni con esso.

Che cosa fa un framework reattivo per lo sviluppatore che mvvm non lo fa?

C'è davvero una differenza? Ad esempio, knockout.js è pubblicizzato come un 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);
    
posta Simon 05.08.2014 - 10:22
fonte

1 risposta

8

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

In parole semplici:

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

Consiglierei di imparare un po 'su XAML / WPF dato che Microsoft è l'inventore originale di MVVM. Microsoft ha anche realizzato un'ottima implementazione dell'approccio Reactive: Reactive Extensions.

Ecco un tentativo decente di combinarli:

link link

Domanda SO correlata:

link

    
risposta data 05.08.2014 - 13:26
fonte

Leggi altre domande sui tag