Pemrograman reaktif vs pola MVVM untuk mengelola pembaruan GUI

10

Pemrograman reaktif dan MVVM adalah dua pendekatan yang dapat mengatasi masalah pemisahan lapisan domain dari UI.

  • MVVM melakukan ini dengan mendefinisikan viewmodel, yang merupakan struktur data yang dipetakan ke komponen UI. UI menampilkan data, dan mungkin memperbaruinya saat pengguna muncul.
  • kerangka kerja reaktif mendefinisikan grafik yang dapat diamati yang memberi tahu UI bahwa sebagian data telah berubah

Kerangka kerja reaktif mendapatkan berbagi pikiran, baik di platform mainstream (dengan Rx di .net & java, react.js) dan lebih banyak tempat eksperimental (FRP dalam haskell).

Saya terutama menggunakan MVVM dengan sudut, dan saya menemukan kesederhanaan untuk rasio ekspresif cukup memuaskan, meskipun saya hanya bekerja pada proyek kecil / menengah dengannya.

Apa kerangka kerja reaktif membeli pengembang yang tidak dimiliki mvvm?

Apakah benar-benar ada perbedaan? Misalnya, knockout.js diiklankan sebagai kerangka mvvm, tetapi memiliki perasaan reaktif dalam antarmuka:

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

this.fullName = ko.computed(function() {
    return this.firstName() + " " + this.lastName();
}, this);
Simon Bergot
sumber
MVVM adalah pola untuk memisahkan perhatian presentasi dari domain. Kerangka reaktif adalah alat yang dapat digunakan untuk mencapai pola pemisahan ini. Mereka tidak eksklusif.
AlexFoxGill
@AlexG Ya, ada alat yang mengoordinasikan komunikasi antara model tampilan & UI. Saya akan memanggil kerangka kerja MVVM itu.
Simon Bergot
Intinya adalah - KnockoutJS menggunakan kerangka kerja reaktif untuk memungkinkan pemisahan MVVM. AngularJS menggunakan pengecekan kotor untuk mengaktifkan MVVM. Mereka hanyalah cara berbeda untuk mencapai pola tersebut. Mungkin pertanyaan Anda adalah "Apa yang dicapai paradigma Reaktif dalam kerangka kerja MVVM yang tidak dimiliki oleh teknik Pengecekan Kotor?"
AlexFoxGill
@AlexG sehingga Anda akan mengatakan itu adalah detail implementasi? Saya pikir itu menjawab pertanyaan saya.
Simon Bergot
@Simon: Saya tidak akan memenuhi syarat sebagai detail implementasi, tetapi lebih sebagai pendekatan berbeda untuk mengkomunikasikan perubahan dalam Model hingga ViewModel
Bart van Ingen Schenau

Jawaban:

9

Itu adalah konsep-konsep berbeda yang tidak bersaing dan mereka dapat dengan mudah bekerja bersama untuk menghasilkan hasil yang bagus.

Dalam istilah awam:

MVVM berguna untuk menjauh dari kekacauan codebehind (GUI / model coupling). Pendekatan reaktif berguna untuk mengurangi kekacauan event / callback.

Saya akan merekomendasikan belajar sedikit tentang XAML / WPF karena Microsoft adalah penemu asli MVVM. Microsoft juga menghasilkan implementasi pendekatan Reaktif yang sangat baik: Ekstensi Reaktif.

Berikut ini adalah upaya yang layak untuk menggabungkannya:

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

Pertanyaan SO terkait:

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

Sarang
sumber