Apakah ada referensi langkah demi langkah yang mudah untuk MVVM?
Ya ada. Lihatlah di sini.
Apakah MVVM super-set atau sub-set MVC?
MVVM milik keluarga MVC, jadi, jika Anda bisa mengatakan itu, itu adalah bagian. Varian untuk memisahkan UI dari logika bisnis di bawahnya. Saya akan menggambarkannya sebagai saudara kandung dari MVC. Sejak awal OOP orang telah mencari cara untuk memisahkan UI dari logika mereka. MVC adalah pola dasar pertama yang berkembang. Ini cukup sederhana, meskipun kebanyakan orang tidak melakukannya dengan benar. Tampilan hanyalah pengamat model dan menyebutnya bila perlu. Controller hanyalah sebuah strategi agar view dapat berkomunikasi dengan model, misalnya ketika Anda memerlukan perilaku yang dapat ditukar (yaitu ReadonlyController, AdminController). MVC sangat sukses dan itu benar-benar praktik yang baik untuk menerapkannya.
MVVM adalah jenis khusus Pola MVP, seperti yang dijelaskan oleh Martin Fowler . MVP mencoba untuk menjaga tampilan sebodoh mungkin (sambil tetap mengambil input pengguna, dll.), Sehingga meningkatkan testability. Ini bertujuan untuk sebuah abstraksi dari pandangan dan interaksi-logika yang dimasukkan ke dalam presenter. Presenter hanya berkomunikasi dengan model / logika bisnis dan memperbarui View. Martin Fowler menggambarkan MVVM cukup banyak dalam Pola Model Presentasinya.
Tampilan sepenuhnya disarikan menjadi ViewModel. Ketika View
kebutuhan suatu properti, ViewModel
kebutuhan untuk memilikinya juga. Itu (ViewModel) dimaksudkan untuk sepenuhnya independen dari teknologi UI yang mendasarinya, sebuah abstraksi. Untuk berkomunikasi antara View dan ViewModel, pola sinkronisasi perlu digunakan (yaitu Pengamat). Ini tidak mudah untuk dicapai dalam lingkungan web tanpa kewarganegaraan. MVVM berbeda dari MVP, karena View tidak mengikat model / logika bisnis Anda tetapi ke ViewModel sebagai gantinya.
Pola mana yang modern dan mana yang harus saya pilih untuk versi Windows & Web aplikasi saya?
Model Presentasi (mirip MVVM) dalam teori harus benar-benar independen dari teknologi UI yang digunakan. Namun, aspek sinkronisasi perlu dicakup. Ini dapat dengan mudah dilakukan dengan mengikat Perintah dan Properti dengan WPF, di mana lem sinkronisasi sudah ada. Dengan ASP.NET, ini adalah cerita yang berbeda. Namun, ada artikel di CodeProject yang menggunakan Presentation Model Pattern dengan semua teknologi Windows UI. Silahkan lihat.
Niat Anda untuk menggunakan kelas yang sama untuk UI berbasis ASP.Net dan WPF tidak terlalu praktis. Penyatuan data dan penggunaan javascript di web sangat berbeda dengan WPF. Satu-satunya pilihan yang dapat saya pikirkan adalah MVP dengan tampilan yang sepenuhnya pasif . Secara teori Anda dapat memiliki presenter yang sama yang mengisi halaman Web dan WPF.
Dalam praktiknya saya akan mengembangkan arsitektur di mana sebagian besar aturan bisnis berada dalam lapisan layanan web dan dua tingkat presentasi berbeda dengan aturan bisnis sesedikit mungkin yang berbicara dengan layanan web ini.
sumber