2009-09-04 16 views
9

Sono un principiante. Voglio chiedere del modello MVC per la separazione delle preoccupazioni. Ho letto alcuni tutorial su MVC ma non ho ancora una piena comprensione dei ruoli di ciascun modello, vista e controller.MVC - Separazione delle preoccupazioni

Ad esempio, dico che sto scrivendo un'applicazione per un utente per monitorare un portfolio. Desidero che la pagina di destinazione visualizzi elenchi di investimenti in base a criteri diversi, ad esempio uno può elencare gli investimenti in base all'importo investito, un altro può ordinarlo in base al rendimento dell'investimento.

La mia domanda è, secondo lo schema di progettazione in cui dovrei scrivere la logica per generare le liste; nel modello, Visualizza o Controller?

Anche gli esempi MVC di asp.net che dimostrano la separazione delle preoccupazioni sono molto apprezzati.

Grazie in anticipo ragazzi.

risposta

4

A rischio di ripetermi, ti indicherò la risposta che ho dato a in this thread. The entire thread probabilmente vale la pena, così come decine di altri su Stack Overflow.

di scomporlo semplicemente:

Controller - il flusso di applicazioni di controllo e prende decisioni sui dati.

Modelli - eseguire la logica di business.

Visualizzazioni - produrre output.

Per la tua situazione particolare, ti consigliamo di produrre i tuoi elenchi nel livello Visualizza. Utilizza i modelli per creare la struttura delle liste e riempirli con i dati recuperati dal livello Modello.

Non sono un programmatore asp.net, quindi non posso darvi un esempio affidabile, ma fare una ricerca per altri thread SO.

1

Il pattern MVC "richiede" di inserire tutta la "logica aziendale" nei Modelli. I modelli sono utilizzati per accedere al database e recuperare i dati e modellarli in un modo che è sufficiente utilizzare un controller per assegnarlo a una vista.

Un esempio grafica: http://www.bhartisoftland.com/technologies-skill-sets/gifs/mvc-php.png

Inutile dire, forse, che è possibile ignorare l'uso di modelli e scrivere tutti i vostri logica nelle Controller, ma che si tradurrebbe in una quantità molto ampia e probabilmente ridondante di codice. I controller sono utilizzati in modo da poter chiamare modelli e viste e scambiare informazioni da uno all'altro con solo poche righe di codice.

3

Bella domanda, questa è soggettiva e ci sono molte soluzioni, si scende al contesto che penso e alle preferenze dell'individuo.

Con l'implementazione ASP.Net di MVC un sacco di gente parla del modello più di un ViewModel che di un modello come in alcuni altri framework (un po 'come un DTO). Tenendo presente questo aspetto e osservando il Controller come un semplice coordinatore del flusso dell'applicazione, non sarebbe sbagliato generare gli elenchi in un livello aggiuntivo a cui si accede tramite un servizio di qualche tipo.Dovresti fare una richiesta a quel servizio per una serie di ViewModels che soddisfano un determinato gruppo di criteri e lasciare che questo ulteriore livello si preoccupi del modo in cui tali elenchi vengono generati da quella serie di criteri. In questo modo tutto ciò che il controller deve sapere è passare alcuni criteri al servizio e fornire la vista con un insieme di modelli (viewmodels) da visualizzare, la vista è libera di prendere decisioni su cosa fare con i dati che sono stati forniti e i modelli sono belli e leggeri.

Spero che questa spiegazione abbia senso, e sono aperto alle critiche se le persone non sono d'accordo ...

Problemi correlati