Best practice per MVC Architecture [chiuso]

28

La mia domanda riguarda più come progettare un'applicazione MVC. Ad esempio, siamo incoraggiati a utilizzare DI con il modello di repository per disaccoppiare l'accesso ai dati dal controller, tuttavia molto poco è detto su COME farlo in modo specifico per MVC. Dove posizioneremmo le classi di repository, per esempio? Non sembrano essere specificamente correlati al modello, dal momento che il modello dovrebbe anche essere relativamente disaccoppiato dalle effettive tecnologie di accesso ai dati.

Una seconda domanda riguarda come strutturare i livelli o i livelli. La maggior parte delle applicazioni di esempio (Nerd dinner, Music Store, ecc.) Sembrano utilizzare un approccio a livello singolo, a 2 livelli (senza contare i test) che in genere ha i controller che chiamano direttamente L2S o codice EF.

Se voglio creare un'applicazione multilivello / strato quali sono alcune delle migliori pratiche in merito a MVC?

    
posta Erik Funkenbusch 27.12.2010 - 17:57
fonte

2 risposte

5

DI è compiuto in ASP MVC usando una fabbrica di controllori. Questo factory è utilizzato per risolvere le dipendenze del controller.

MvcContrib ha alcune implementazioni di Controller Facotry che puoi usare immediatamente. Uso la loro implementazione Castle Windsor e funziona bene. Suggerirei anche di verificare la loro classe TestHelper. Ha alcune funzionalità molto interessanti per il controllo di Controller HTTPContext, Sessions, ecc. MVCContrib

Personalmente mi piace dare l'istanza di Modelli a repository con cui lavorare. Il modello espone una API al repository (CRUD). La dipendenza del controllore su un particolare modello viene iniettata durante la creazione (costruttore) e questo viene iniettato tramite Controller Factory. Questo è il mio punto di accesso al grafico dell'oggetto che gestisce il mio contenitore IoC.

    
risposta data 27.12.2010 - 18:15
fonte
2

Where would we place the Repository classes, for instance?

Appartengono al modello; sono il modello in-applicazione.

How to do I structure the layers? If I want to create a multi-tier/layer application what are some of the best practices there in regards to MVC?

Livelli Rappresentano le separazioni fisiche del codice. I livelli rappresentano separazioni logiche. Gli strati (come sono attualmente) funzionano bene per MVC. A seconda della quantità di business logic, può essere inserito nel controller, oppure può essere inserito in un assembly separato e può essere utilizzato dal controller durante il ciclo di richiesta.

    
risposta data 27.12.2010 - 18:15
fonte

Leggi altre domande sui tag