Saya mengembangkan aplikasi dengan model MVVM, tetapi saya telah mencapai titik di mana saya harus memilih kerangka kerja mana yang akan digunakan.
Di antara opsi yang mungkin adalah:
- MVVM Toolkit
- Yayasan MVVM
- Kerangka Aplikasi WPF (WAF)
- MVVM ringan
- Caliburn
- Menang
- Prisma
- ReaktifUI
Menurut pengalaman Anda, mana yang lebih baik?
wpf
mvvm
frameworks
Rangel
sumber
sumber
Jawaban:
Ini benar-benar tergantung pada apa yang Anda coba capai, dan berapa banyak infrastruktur yang Anda inginkan sudah ada, ditambah kemudahan yang Anda dapat menemukan sampel yang membantu Anda. Saya akan menyatakan minat di sini, karena saya telah aktif terlibat dalam setidaknya satu kerangka kerja MVVM, dan saya sudah mendapat masukan dari orang lain melalui kelompok WPF Disciples, jadi saya sedikit bias. Mengatakan itu, begini:
Microsoft MVVM Toolkit - ini masih sangat banyak di tahap alpha. Ketika awalnya dirilis, butuh sedikit biadab dari para Murid karena apa yang tidak dilakukannya. Mengatakan itu, MS ingin meningkatkan kerangka kerja ini jadi satu untuk ditonton - hanya belum siap.
MVVM Foundation - versi kerangka kerja Josh Smith. Josh adalah salah satu ayah MVVM, dan telah menjadi pembela dan pengajar pola yang besar. Akibatnya, banyak hal yang akan Anda temukan di kerangka kerja lain memiliki sidik jari Josh. Kerangka kerja ini dimaksudkan untuk memberikan dasar-dasar MVVM, dan bukan untuk mengatasi beberapa masalah yang lebih esoteris. Awalnya ini dimaksudkan hanya untuk WPF, tetapi orang-orang seperti Laurent Bugnion dan saya sendiri telah menambahkan fungsionalitas / proyek yang berarti ini akan menjadi kerangka kerja yang kompatibel dengan Silverlight juga.
WAF - tidak ada pengalaman, jadi saya tidak bisa berkomentar tentang itu, saya khawatir.
MVVM Light - Laurent Bugnion mengambilnya, dan baru saja diperbarui ke versi 2. Ini adalah kerangka kerja yang sangat baik, tetapi sekali lagi ini tidak dimaksudkan untuk mencakup setiap aspek aplikasi MVVM. Mengingat latar belakang Laurent, ia memiliki dukungan Silverlight dan Blendability yang sangat kuat di dalamnya.
Pembaruan Laurent baru saja memberi tahu saya bahwa versi .NET 3.5 dan .NET 4.0 kompatibel dengan fitur. Kami akan pergi Laurent.
Cinch - kerangka kerja MVV khusus WPF Sacha Barber yang luar biasa. Ini mencakup lebih banyak landasan daripada kerangka kerja yang telah saya bicarakan di atas. Ini merupakan kerangka kerja yang sangat baik, dan mengambil keuntungan dari konsep-konsep yang tercakup dalam proyek Onyx yang luar biasa dari Bill Kempf . Onyx dimaksudkan untuk melengkapi kerangka kerja MVVM, dan menambahkan fungsionalitas yang biasanya sulit dilakukan orang di MVVM / WPF. Sekali lagi, awalnya hanya dimaksudkan untuk WPF, Onyx telah berkembang untuk menyertakan kompatibilitas SL - pekerjaan yang saya sangat bangga telah terlibat di dalamnya.
Prism - Sekali lagi, saya tidak pernah menggunakannya, tetapi saya telah mendengar banyak hal baik tentang itu.
Ocean - Karl Shifflett, Manajer Program di tim Cider, baru-baru ini merilis kerangka kerja WPF MVVM berfitur lengkap. Sekali lagi, ini adalah kerangka kerja yang sangat baik dan memiliki banyak untuk merekomendasikannya.
Intinya adalah, unduh kerangka kerja yang berbeda, lihatlah dan kerjakan mana yang paling sesuai dengan cara Anda berpikir dan persyaratan Anda. Jika Anda berpikir bahwa Anda mungkin ingin mendukung Silverlight dari basis kode yang sama maka kerangka kerja WPF saja harus didiskon.
sumber
Saya menemukan artikel ini sangat berguna http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Sehingga saya membawanya ke sini untuk pengguna yang akan datang
Saya memperbarui bagian Cinch dan menambahkan dukungan silverlight ke fitur-fiturnya
Maaf atas ceritanya yang panjang
Fitur umum:
Menang
MVVM Light Toolkit
Pembantu MVVM
Yayasan MVVM
Caliburn
Onyx
Kalsium
nRute
Nito MVVM
Lautan
Kerangka kerja MVVM dasar
GoodLight
sumber
Saya mencoba menggambarkan Kerangka kerja yang hilang dalam jawaban hebat Pete:
MVVM Toolkit (Microsoft) adalah perpustakaan yang sangat ringan dengan templat proyek Visual Studio yang harus mendukung pemula dengan pola ini. Jika Microsoft mendapatkan umpan balik yang baik untuk Toolkit mereka maka mereka mungkin mengimplementasikan ini sebagai template proyek Visual Studio (mungkin 2010) yang baru.
Prism (Microsoft p & p) adalah kerangka kerja yang menyediakan lebih dari dukungan untuk pola MVVM. Tujuan utama dari proyek ini adalah untuk membantu Anda membangunWPF modular dan / atau aplikasi Silverlight. Ketika Anda hanya perlu menerapkan pola MVVM atau Anda seorang pemula di .NET / WPF saya tidak akan merekomendasikan proyek ini. Lihat juga: Tautan .
WPF Application Framework (WAF) adalah kerangka kerja ringan yang membantu Anda membuat aplikasi WPF dengan MVVM. Ini hanya untuk WPF dan tidak mendukung Silverlight. Ini sedikit berbeda dari kebanyakan kerangka kerja MVVM lainnya dengan diperkenalkannya Pengontrol . Mereka bertanggung jawab atas alur kerja aplikasi dan mereka memediasi antara berbagai ViewModels.
sumber
Ah. Mvvm tidak benar-benar membutuhkan keseluruhan kerangka kerja untuk mendukung IMO. Jika Anda memahami konsepnya, cukup mudah untuk memulai dengan baseclass VM bersih yang mengimplementasikan INotify, dan langsung saja pergi dari sana.
sumber
Lihat juga:
Caliburn & Onyx !
sumber
Campur sendiri!
Saya menggunakan EventAggregator dari PRISM, dengan ViewModelBase dari yayasan MVVM dan sebagainya. Saya juga men-tweak RelayCommand (DelegateCommand memanggil beberapa tempat) untuk menerima data lain juga, dan seterusnya.
Saya tidak akan merekomendasikan hanya satu kerangka per se.
sumber
Taruhan saya adalah Caliburn dan MVVMlight, tampaknya tidak banyak kerangka kerja mvvm ini mendukung silverlight. Saya dapat meramalkan bahwa akan ada lebih banyak kerangka kerja MVVM untuk dipilih daripada kerangka kerja IoC, karena lebih sulit untuk mengatur batas fitur ke kerangka mvvm. Saya kira cara terbaik untuk mengetahui mana yang lebih sesuai dengan proyek Anda adalah dengan mendaftar / membandingkan fitur-fiturnya.
Lihat juga Mix10. Saya belajar banyak dari pembicaraan: membangun kerangka kerja mvvm Anda.
sumber
Juga kerangka kerja Cocktail dan DevForce oleh Ideablade
sumber
Saya menggunakan Prism dan menyukainya. Salah satu hal besar bagi saya adalah bahwa akan ada orang lain di luar sana yang dapat membantu saya jika diperlukan dan teladan yang baik. Setelah Anda menjalankan dasar-dasarnya, ada banyak ekstensi yang Anda perlukan untuk aplikasi Anda dan itu jauh lebih mudah ketika Anda bekerja dengan kerangka kerja yang sama dengan yang lain.
sumber
Semua dalam semua, saya 90% melalui aplikasi saya dan semua saya telah menggunakan MVVM Toolkit adalah fungsi pabrik yang membangun perintah untuk saya diberikan fungsi delegasi untuk diluncurkan di Execute. Saya pikir saya bisa beralih ke kerangka kerja lain atau kerangka tidak dalam beberapa jam.
sumber
Satu lagi yang perlu dipertimbangkan adalah MEFedMVVM . Saya telah menggunakannya pada beberapa proyek dan ringan, tidak mengganggu dan mendukung Silverlight dan WPF. Itu juga dapat mendukung data waktu desain di Blend, bagi mereka yang menggunakan produk itu.
sumber
Jika Anda mencari Extensibility (kemampuan untuk menulis add-in) di atas kerangka aplikasi WPF / MVVM, maka Anda mungkin tertarik dengan penafian SoapBox Core : Saya menulisnya . Ini bersumber terbuka, jadi bahkan jika Anda tidak menggunakannya, mungkin ada beberapa ide bagus di sana untuk Anda. Ini menggunakan MEF untuk Extensibility dan IoC.
sumber
Ada juga nRoute
Kerangka kerja aplikasi yang sangat bagus untuk WPF / Silverlight yang mendukung MVVM
sumber