Saya berpandangan bahwa aplikasi sangat berbeda satu sama lain dan pemahaman kita tentang bagaimana aplikasi harus ditulis masih sangat terbatas. Aplikasi Windows Forms yang pernah saya kerjakan sangat berbeda satu sama lain. Beberapa perbedaan desain yang pernah saya lihat adalah (termasuk sebagian besar kombinasi):
- Langsung berbicara ke database (2 tingkat)
- Gunakan backend yang telah ditulis untuk aplikasi yang diberikan (3 tingkat)
- Gunakan sekumpulan layanan web yang ditulis untuk digunakan oleh banyak aplikasi dan tidak dapat diubah untuk aplikasi Anda. (Arsitektur berorientasi layanan)
- Pembaruan sedang dilakukan oleh operasi CRUD
- Pembaruan sedang dilakukan dengan pola perintah (mengirim perintah ke server backend)
- Banyak sekali penggunaan data binding / tidak ada penggunaan data binding
- Sebagian besar data berupa "tabel seperti" (mis. Faktur) yang berfungsi dengan baik dalam kontrol kisi standar / memerlukan kontrol khusus untuk sebagian besar data UI.
- Satu pengembang / tim yang terdiri dari 10 atau 20 pengembang (hanya di UI)
- Banyak tes unit menggunakan ejekan dll / tidak ada tes unit
Oleh karena itu saya rasa tidak mungkin untuk membuat satu implementasi MVC (atau MVP) yang selalu cocok.
Posting terbaik yang pernah saya lihat benar-benar menjelaskan MVC dan mengapa sistem MVC dibangun seperti itu, adalah seri "Build Your Own CAB" oleh Jeremy D Miller . Setelah mengerjakannya, Anda harus dapat memahami opsi Anda jauh lebih baik.
Panduan Klien Cerdas Microsoft (CAB / Blok Aplikasi Komposit Microsoft) juga harus dipertimbangkan. Ini agak rumit, tetapi dapat bekerja dengan baik untuk aplikasi yang cocok.
Memilih Implementasi MVC / MVP untuk Proyek Winforms memberikan gambaran umum yang layak dibaca. Banyak orang menyukai PureMVC . Saya belum pernah menggunakannya, tetapi saya akan melihatnya saat berikutnya saya membutuhkan kerangka kerja MVC.
" Presenter First " adalah pendekatan pengembangan perangkat lunak yang menggabungkan ide pola desain Model View Presenter (MVP) dan pengembangan yang digerakkan oleh pengujian . Ini memungkinkan Anda memulai dengan menulis tes dalam bahasa pelanggan. Sebagai contoh:
"Saat saya mengklik tombol 'simpan' maka file akan disimpan dan peringatan file yang belum disimpan akan hilang.”
Saya tidak memiliki pengalaman menggunakan "Presenter First," tapi saya akan mencobanya ketika saya mendapat kesempatan, karena kelihatannya sangat menjanjikan.
Pertanyaan Stack Overflow lainnya yang mungkin ingin Anda lihat ada di sini dan di sini .
Jika Anda berpikir untuk menggunakan WPF pada titik mana pun, lihat pola Model-View ViewModel (MVVM) . Berikut adalah video yang sangat bagus yang harus Anda lihat: Jason Dolinger di Model-View-ViewModel .
Pola Desain MVVM (Model View View Model) untuk Winforms memberikan opsi lain yang dapat membuatnya lebih mudah untuk dikonversi ke WPF jika diperlukan. Magical.Trevor adalah contoh MVVM lain untuk Windows Forms yang juga menyertakan penjilidan otomatis berdasarkan nama properti.
Juga tanyakan pada diri Anda mengapa Anda menggunakan MVC.
- Apakah Anda ingin dapat menguji kode unit sebanyak mungkin?
- Apakah Anda mencoba mengizinkan sebanyak mungkin kode untuk digunakan kembali?
- Apakah Anda mencoba membuat basis kode Anda mudah dipahami?
- 101 alasan lain yang valid untuk proyek tertentu.
Setelah Anda jelas pada Anda tujuan , menjadi lebih mudah untuk memilih satu implementasi atau yang lain.