Sono del parere che le applicazioni siano così diverse l'una dall'altra e la nostra comprensione di come dovrebbero essere scritte le applicazioni è ancora molto limitata. Le applicazioni precedenti di Windows Form su cui ho lavorato erano così diverse l'una dall'altra. Alcune delle differenze di progettazione che ho visto sono (inclusa la maggior parte delle combinazioni):
- Parla direttamente al database (2 livelli)
- Utilizza un backend che è stato scritto per l'applicazione data (3 livelli)
- Utilizza una serie di servizi Web che sono stati scritti per essere utilizzati da molte applicazioni e non possono essere modificati per la tua applicazione. (Architettura orientata ai servizi)
- Aggiornamenti eseguiti dalle operazioni CRUD
- Aggiornamenti eseguiti con il modello di comando (invio di comandi al server di backend)
- Molti utilizzi del data binding / nessun utilizzo del data binding
- La maggior parte dei dati è "simile a una tabella" (ad es. Fatture) che funzionano bene nei controlli della griglia standard / richiedono controlli personalizzati per la maggior parte dei dati dell'interfaccia utente.
- Uno sviluppatore / team di 10 o 20 sviluppatori (solo sull'interfaccia utente)
- Un sacco di unit test utilizzando mock ecc / nessun unit test
Pertanto non penso sia possibile creare un'implementazione di MVC (o MVP) che si adatti sempre bene.
I migliori post che ho visto che spiegano veramente MVC e perché un sistema MVC è costruito così com'è, è la serie "Build Your Own CAB" di Jeremy D Miller . Dopo averlo lavorato dovresti essere in grado di capire molto meglio le tue opzioni.
Dovrebbe essere presa in considerazione anche la guida per smart client di Microsoft (CAB / blocco di applicazioni composite Microsoft) . È un po 'complesso, ma può funzionare bene per applicazioni che si adattano bene.
La selezione di un'implementazione MVC / MVP per un progetto Winforms fornisce una panoramica che vale la pena leggere. A molte persone piace PureMVC . Non l'ho mai usato, ma lo guarderei la prossima volta che avrò bisogno di un framework MVC.
" Presenter First " è un approccio di sviluppo software che combina le idee del modello di progettazione Model View Presenter (MVP) e lo sviluppo basato sui test . Ti consente di iniziare scrivendo test nella lingua del cliente. Per esempio:
"Quando faccio clic sul pulsante" Salva ", il file dovrebbe essere salvato e l'avviso relativo al file non salvato dovrebbe scomparire."
Non ho esperienza nell'uso di "Presenter First", ma ci proverò quando ne avrò la possibilità, poiché sembra molto promettente.
Altre domande su Stack Overflow che potresti voler esaminare sono qui e qui .
Se stai pensando di utilizzare WPF in qualsiasi momento, dai un'occhiata al pattern Model-View ViewModel (MVVM) . Ecco un ottimo video a cui dovresti dare un'occhiata: Jason Dolinger su Model-View-ViewModel .
MVVM (Model View View Model) Design Pattern per Winforms offre un'altra opzione che può rendere più semplice la conversione in WPF se necessario. Magical.Trevor è ancora un altro esempio MVVM per Windows Form che include anche l'associazione automatica basata sui nomi delle proprietà.
Chiediti anche perché stai usando MVC.
- Vuoi essere in grado di testare quanto più codice possibile?
- Stai cercando di riutilizzare quanto più codice possibile?
- Stai cercando di rendere la tua base di codice facile da capire?
- 101 altre ragioni che possono essere valide per un dato progetto.
Una volta che hai chiarito i tuoi obiettivi , diventa più facile scegliere un'implementazione o un'altra.