Ich bin der Ansicht, dass Bewerbungen so unterschiedlich sind und dass unser Verständnis, wie Bewerbungen geschrieben werden sollten, immer noch sehr begrenzt ist. Frühere Windows Forms-Anwendungen, an denen ich gearbeitet habe, waren so unterschiedlich voneinander. Einige der Designunterschiede, die ich gesehen habe, sind (einschließlich der meisten Kombinationen):
- Sprechen Sie direkt mit der Datenbank (2 Ebenen)
- Verwenden Sie ein Backend, das für die jeweilige Anwendung geschrieben wurde (3 Ebenen).
- Verwenden Sie eine Reihe von Webdiensten, die für die Verwendung durch viele Anwendungen geschrieben wurden und für Ihre Anwendung nicht geändert werden können. (Serviceorientierte Architektur)
- Aktualisierungen werden durch CRUD- Operationen durchgeführt
- Aktualisierungen werden mit dem Befehlsmuster durchgeführt (Senden von Befehlen an den Back-End-Server)
- Viele Verwendungen der Datenbindung / keine Verwendungen der Datenbindung
- Die meisten Daten sind "tabellenartig" (z. B. Rechnungen), die in Standard-Rastersteuerelementen gut funktionieren / für die meisten Benutzeroberflächendaten benutzerdefinierte Steuerelemente benötigen.
- Ein Entwickler / Team von 10 oder 20 Entwicklern (nur auf der Benutzeroberfläche)
- Viele Unit-Tests mit Mocks usw. / keine Unit-Tests
Daher denke ich nicht, dass es möglich ist, eine Implementierung von MVC (oder MVP) zu erstellen, die immer gut passt.
Die besten Beiträge, die ich gesehen habe , um MVC wirklich zu erklären und warum ein MVC-System so aufgebaut ist, wie es ist, sind die "Build Your Own CAB" -Serien von Jeremy D Miller . Nachdem Sie daran gearbeitet haben, sollten Sie in der Lage sein, Ihre Optionen viel besser zu verstehen.
Die Smart Client Guidance von Microsoft (CAB / Microsoft Composite Application Block) sollte ebenfalls berücksichtigt werden. Es ist ein bisschen komplex, aber es kann gut für Anwendungen funktionieren, die eine gute Passform haben.
Durch Auswahl einer MVC / MVP-Implementierung für ein Winforms-Projekt erhalten Sie einen lesenswerten Überblick. Viele Leute mögen PureMVC . Ich habe es noch nie benutzt, aber ich würde es mir ansehen, wenn ich das nächste Mal ein MVC-Framework benötige.
" Presenter First " ist ein Softwareentwicklungsansatz, der die Ideen des MVP-Entwurfsmusters (Model View Presenter) und der testgetriebenen Entwicklung kombiniert . Sie können damit beginnen, Tests in der Sprache des Kunden zu schreiben. Beispielsweise:
"Wenn ich auf die Schaltfläche 'Speichern' klicke, sollte die Datei gespeichert werden und die Warnung zu nicht gespeicherten Dateien sollte verschwinden."
Ich habe keine Erfahrung mit "Presenter First", aber ich werde es versuchen, wenn ich die Gelegenheit dazu bekomme, da es sehr vielversprechend aussieht.
Weitere Fragen zum Stapelüberlauf, die Sie möglicherweise prüfen möchten, finden Sie hier und hier .
Wenn Sie zu irgendeinem Zeitpunkt WPF verwenden möchten , sehen Sie sich das MVVM- Muster (Model-View ViewModel) an . Hier ist ein sehr gutes Video, das Sie sich ansehen sollten: Jason Dolinger auf Model-View-ViewModel .
Das MVVM-Entwurfsmuster (Model View View Model) für Winforms bietet eine weitere Option, die die Konvertierung in WPF bei Bedarf vereinfacht. Magical.Trevor ist ein weiteres MVVM-Beispiel für Windows Forms, das auch die automatische Bindung basierend auf Eigenschaftsnamen enthält.
Fragen Sie sich auch, warum Sie MVC verwenden.
- Möchten Sie in der Lage sein, so viel Code wie möglich zu testen?
- Versuchen Sie, so viel Code wie möglich wiederzuverwenden?
- Versuchen Sie, Ihre Codebasis leicht verständlich zu machen?
- 101 andere Gründe, die für ein bestimmtes Projekt gültig sein können.
Sobald Sie Ihre Ziele klar definiert haben , wird es einfacher, die eine oder andere Implementierung auszuwählen.