Uygulamaların birbirinden çok farklı olduğu görüşündeyim ve uygulamaların nasıl yazılması gerektiğine dair anlayışımız hala çok sınırlı. Üzerinde çalıştığım geçmiş Windows Forms uygulamaları birbirinden çok farklıydı. Gördüğüm tasarım farklılıklarından bazıları (çoğu kombinasyon dahil):
- Veritabanıyla doğrudan konuşun (2 katmanlı)
- Verilen uygulama için yazılmış bir arka uç kullanın (3 katman)
- Birçok uygulama tarafından kullanılmak üzere yazılmış ve uygulamanız için değiştirilemeyen bir dizi web hizmeti kullanın. (Servis Odaklı Mimari)
- CRUD işlemleri tarafından yapılan güncellemeler
- Komut kalıbı ile yapılan güncellemeler (arka uç sunucusuna komutlar gönderme)
- Çok sayıda veri bağlama kullanımı / veri bağlama kullanımı yok
- Çoğu veri, standart ızgara kontrollerinde iyi çalışan / UI verilerinin çoğu için özel kontrollere ihtiyaç duyan "tablo benzeri" (örn. Faturalar) şeklindedir.
- 10 veya 20 geliştiriciden oluşan bir geliştirici / ekip (yalnızca kullanıcı arayüzünde)
- Taklit vb / birim testleri kullanmadan birçok birim testi
Bu nedenle, her zaman iyi uyan bir MVC (veya MVP) uygulaması oluşturmanın mümkün olduğunu düşünmüyorum.
MVC'yi ve neden bir MVC sisteminin bu şekilde inşa edildiğini gerçekten açıklayan gördüğüm en iyi gönderiler , Jeremy D Miller'ın "Kendi CAB'nizi Oluşturun" serisi . Yine de çalıştıktan sonra seçeneklerinizi çok daha iyi anlayabilmelisiniz.
Microsoft'un Akıllı İstemci Kılavuzu (CAB / Microsoft Kompozit Uygulama Bloğu) da dikkate alınmalıdır. Biraz karmaşıktır, ancak iyi uyan uygulamalar için iyi çalışabilir.
Bir Winforms Projesi için MVC / MVP Uygulamasının seçilmesi , okumaya değer bir genel bakış sağlar. Çoğu insan PureMVC'yi sever . Hiç kullanmadım, ancak bir dahaki sefere bir MVC çerçevesine ihtiyacım olduğunda ona bakardım.
" Presenter First ", Model View Presenter (MVP) tasarım modeli ile test odaklı geliştirmenin fikirlerini birleştiren bir yazılım geliştirme yaklaşımıdır . Müşterinin dilinde testler yazarak başlamanıza olanak tanır. Örneğin:
"'Kaydet' düğmesini tıkladığımda dosya kaydedilmeli ve kaydedilmemiş dosya uyarısı kaybolmalıdır."
"Presenter First" ü kullanma deneyimim yok, ancak çok umut verici göründüğü için bir şans bulduğumda deneyeceğim.
Bakmak isteyebileceğiniz diğer Stack Overflow soruları burada ve burada .
Herhangi bir noktada WPF kullanmayı düşünüyorsanız , Model-View ViewModel (MVVM) modeline bir göz atın . İşte göz atmanız gereken çok güzel bir video: Model-View-ViewModel'de Jason Dolinger .
MVVM (Model Görünüm Görünüm Modeli) Winforms için Tasarım Modeli, gerektiğinde WPF'ye dönüştürmeyi kolaylaştırabilecek başka bir seçenek sunar. Magical.Trevor , Windows Forms için özellik adlarına dayalı otomatik bağlama da içeren başka bir MVVM örneğidir.
Ayrıca kendinize neden MVC kullandığınızı sorun .
- Mümkün olduğunca çok sayıda kodu birim test edebilmek ister misiniz?
- Mümkün olduğunca çok kodun yeniden kullanılmasına izin vermeye mi çalışıyorsunuz?
- Kod tabanınızın anlaşılmasını kolaylaştırmaya mı çalışıyorsunuz?
- Belirli bir proje için geçerli olabilecek diğer 101 neden.
Eğer açıkça ifade kere amaçlarından , bu bir uygulama ya da başka bir seçim yapmak daha kolay olur.