Quando Jeremy & Chad posted about their FubuMvc project, uno degli elementi di differenziazione hanno menzionato era la loro "Thunderdome Principale":Thunderdome MVC- Perché one-model-in in MVC?
Il “Thunderdome Principle” - Tutti metodi controller prendono in uno oggetto ViewModel (o pari a zero oggetti in alcuni casi) e restituire un singolo oggetto ViewModel (un oggetto entra, lascia un oggetto). Le classi Controller non saranno MAI direttamente esposte a qualsiasi cosa relativa a HttpContext. Nulla mi fa piangere come vedere persone che provano a scrivere test che simulano lo o che stub quella nuova interfaccia IHttpContextWrapper . Allo stesso modo, i metodi Controller non restituiscono oggetti ViewResult e sono generalmente disaccoppiati da tutta l'infrastruttura MVC. Noi abbiamo adottato questa strategia molto presto come un modo per rendere più semplice il test del controller. È sicuramente lo raggiunto questo obiettivo, ma è anche reso il codice del Controller molto semplificato e di facile lettura. Spiegheremo come funziona in KaizenConf.
Qual è il vantaggio della loro 'una ViewModel (o zero) in' approccio?
Ok, posso sicuramente comprare i benefici di essere solo una convenzione. Darò a questo modello uno scatto su uno dei miei prossimi progetti. – Troy
Avere 16 parametri per tutti i controller è anche una convenzione. La convenzione da sola non è necessariamente una buona cosa. – liammclennan
@liamclennan Questo è corretto. Le convenzioni intelligenti potrebbero essere un modo migliore per descriverlo. Per fortuna nessuno stava promuovendo convenzioni stupide, ma grazie per averlo sottolineato :) – chadmyers