Apakah MVVM dalam WPF sudah usang? [Tutup]

18

Saat ini saya sedang mencoba untuk mendapatkan MVVM untuk WPF - saya tidak bermaksud memahami konsep saya, tetapi di sekitar kacang-kacangan yang sebenarnya untuk melakukan apa pun yang lebih jauh dari jalur terpencil daripada CRUD bodoh.

Apa yang saya perhatikan adalah bahwa banyak kerangka kerja, dan sebagian besar / semua posting blog berasal dari 'usia' yang lalu.

Apakah ini karena sekarang topi tua dan para blogger telah pindah ke Next Big Thing, atau hanya karena mereka telah mengatakan semua yang perlu dikatakan?

Dengan kata lain, apakah ada sesuatu yang saya lewatkan di sini?

Benjol
sumber
1
Kerangka MVVM untuk WPF terus diperbarui. Pemrograman reaktif topik baru yang hangat [google it!] Tersedia dalam bentuk MVVM via ReactiveUI . 3 dari 10 unduhan nuget wpf teratas adalah kerangka kerja MVVM: Prism.WPF, MvvmCross, Caliburn.Micro. AFAIK, semua ini juga mendukung Xamarin. Bentuk dan UWP, jadi akan relevan untuk tahun-tahun mendatang.
ToolmakerSteve

Jawaban:

6

MVVM tidak ketinggalan jaman, tapi sudah terlalu dini untuk memulai. Saya tidak pernah menyukainya dan itu membuat saya tetap di WinForms terlalu lama; Karena gagal melihat hutan untuk pepohonan, saya membuang bayi itu dengan air mandi. Saya mendapatkan WPF sekarang, dan saya mendapat ide tidak ingin mencampur kode dengan markup, tapi saya lebih suka gaya Android menempel markup di satu tempat dan men-dereferensinya dengan gips dalam kode saya (yang juga dapat Anda lakukan di WPF, bahkan meskipun tidak pernah menjadi trendi untuk melakukannya untuk alasan apa pun).

Dengan begitu Anda mendapatkan kontrol yang lebih baik dan tidak perlu khawatir tentang semua penanganan "onchanged" di mana-mana. Saya merasa ini sebenarnya lebih dapat diuji karena tes tidak akan selalu menangkapnya jika Anda melewatkan acara "onchanged".

Anda kehilangan sedikit "deklaratif" -ness, yang tampaknya menjadi tren akhir-akhir ini (misalnya jika dua widget dipetakan dengan nilai yang sama, dalam MVVM Anda bisa melakukan itu, sedangkan dengan kode imperatif Anda harus mengatur keduanya secara individual) . Tetapi bahkan dengan MVVM, itu hanya bekerja dalam kasus kasar. Jika beberapa widget harus menampilkan log widget lain, maka Anda harus menulis handler lain dan acara "onchanged" lainnya dan akhirnya Anda harus memperluas definisi "deklaratif" untuk mengatakannya demikian.

Pembaruan 2015

WPF MVVM adalah (r) evolusioner untuk masanya. Seperti WPF. Tapi mereka berdua punya kutil. WPF biasa memiliki terlalu banyak dibangun di dalamnya (plus itu dibangun di atas XML), dan agak menyebalkan. (Sungguh, jika WPF baru saja mengambil pendekatan yang lebih "perpustakaan" daripada pendekatan "kerangka kerja", itu bisa berubah menjadi beberapa hal yang sangat keren dan seluruh dunia teknologi mungkin sama sekali berbeda sekarang). The Ide dari MVVM besar, tetapi berusaha untuk menyesuaikan MVVM dalam WPF agak Hacky sejak 1) C # tidak bisa benar-benar mengungkapkannya tanpa banyak boilerplate, dan 2) WinForms peninggalan seperti popup modal masih ideologis lazim tapi tidak bisa mudah diwakili dalam MVVM. Jadi semuanya tersedot.

Yang mengatakan, itu masih satu-satunya pilihan realistis di Windows ketika Anda membutuhkan transparansi atau GPU untuk aplikasi LOB.

Bereaksi tentu saja membuat MVVM usang. Saya kecewa bahwa VS2015 tidak memiliki penghitung asli untuk itu. Untuk saat ini kita masih terjebak menggunakan WPF mentah (yang OK, tapi terasa lama (benar-benar terasa seperti setua winforms sekarang), dan tidak memiliki satu ton built-in fungsi (terasa seperti beberapa keren tapi proyek ditinggalkan) atau dengan-MVVM, yang pada saat ini terasa seperti banyak overhead untuk apa-apa, karena bahkan MVVM yang baik (sudut 1) telah terkena kekurangannya.

Saya akan menghindari WPF MVVM. Ini lapisan tambahan, dan tidak ada yang peduli lagi.

Dax Fohl
sumber
3
Hmm .. Saya sadar itu sebagian masalah agama, tapi saya mulai dengan MVVM di WPF menggunakan Cinch kembali .. Mmm. 2010? Dan saya sangat menyukainya. Sejak itu saya sudah pindah ke Caliburn.Micro dan Angular dan masih menyukainya - jelas, ada banyak kekurangan di MVVM seperti yang Anda katakan (jelas tidak ada cara non-hacky untuk melakukan dialog). MVVM mungkin terasa sangat bertele-tele, tetapi keterbacaan keseluruhan dan kesenjangan ui-desain / implementasi eksplisit masih membuatnya berharga bagi saya.
cwap
4
"Bereaksi tentu saja membuat MVVM usang" - namun sebagian besar industri menggunakan Angular.
Den
Semua terlalu banyak sampai Anda memutuskan untuk memindahkan aplikasi desktop Anda ke web dan yang Anda miliki hanyalah satu ton kode-belakang semua terkait dengan kontrol WPF.
CAD berbicara
1
Jadi, bukankah Bereaksi dan Sudut lingkungan JavaScript? Apa hubungannya dengan WPF? Atau apakah saya melewatkan sesuatu.
Berin Loritsch
1
@BerinLoritsch - Anda tidak melewatkan sesuatu. Paragraf itu tidak relevan dengan T&J ini; rupanya Dax telah "pindah" dari WPF ke pemrograman web. Apel dan jeruk.
ToolmakerSteve
2

Semua dikatakan dan dilakukan, ada batasan untuk apa yang dapat Anda lakukan dengan kerangka kerja MVVM.

Mereka "selesai" karena WPF belum pindah sejak Microsoft merilisnya. Jika ada pembaruan pada teknologi, perpustakaan akan perlu memperbarui juga. Ini belum terjadi.

Oded
sumber
Jadi WPF yang 'ketinggalan zaman'? Mengenai kalimat pertama Anda: apakah itu dalam UI kehidupan nyata dan kode terlalu terjalin untuk membuatnya proposisi realistis, atau bisakah beberapa tweak di WPF menjadikannya Holy Grail (atau hampir?)
Benjol
3
@Benjol - Tampaknya Microsoft mengabaikan WPF (atau setidaknya, tidak lagi memperbarui teknologi). Maksud saya tentang kerangka kerja MVVM adalah hanya untuk tujuan yang dimaksudkan ada sedikit untuk melanjutkan dan memperluas mereka pada platform basi. Saya tidak tahu mengapa Microsoft berhenti memperbarui WPF, tapi saya ragu apa yang Anda sarankan - lebih mungkin bahwa Windows 8 dan RT mengambil sumber daya dari WPF.
Oded
18
Ini tidak benar. WPF telah diperbarui beberapa kali, yang terbaru di .NET 4.5: msdn.microsoft.com/en-us/library/bb613588.aspx
17 of 26
3
Perlu juga dicatat bahwa MS mendukung teknologi pengembang mereka selamanya. MFC, dirilis pada tahun 1992, terus mendapatkan perbaikan bug dengan setiap rilis / paket layanan dari Visual Studio.
17 dari 26
5
Saya bahkan melangkah lebih jauh dengan mengklaim bahwa kurangnya penambahan WPF baru-baru ini merupakan indikasi kedewasaannya. Selain itu, seperti yang sudah disentuh oleh @Oded, aplikasi desktop, walaupun masih memiliki nilainya, kini digantikan oleh aplikasi seluler. Namun, perlu disebutkan bahwa banyak dari apa yang WPF mulai (pemrograman UI deklaratif, MVVM, DependencyProperties dan Data Binding) sekarang hidup dalam teknologi WinRT dan Web (beberapa kerangka kerja JS). Ini adalah nilai-nilai inti yang telah memajukan bidang ini secara signifikan, dan saya percaya mereka akan terus melakukannya untuk waktu yang lama.
Sebastian