it-swarm.it

Best practice per l'architettura MVC

La mia domanda è più su come progettare un'applicazione MVC. Ad esempio, siamo incoraggiati a utilizzare DI con il modello Repository per disaccoppiare l'accesso ai dati dal controller, tuttavia su HOW si fa ben poco per farlo in modo specifico per MVC. Dove inseriremmo le classi del repository, per esempio? Non sembrano essere specificamente legati al modello, poiché il modello dovrebbe anche essere relativamente disaccoppiato dalle attuali tecnologie di accesso ai dati.

Una seconda domanda riguarda come strutturare i livelli o i livelli. La maggior parte delle applicazioni di esempio (cena per nerd, negozio di musica, ecc.) Sembrano tutte utilizzare un approccio a 2 livelli a livello singolo (senza contare i test) che in genere ha controller che chiamano direttamente il codice L2S o EF.

Se voglio creare un'applicazione multilivello/layer quali sono alcune delle migliori pratiche in materia di MVC?

28
Erik Funkenbusch

DI viene realizzato in ASP MVC utilizzando un controller di fabbrica. Questo factory viene utilizzato per risolvere le dipendenze del controller.

MvcContrib ha alcune implementazioni Controller Facotry che è possibile utilizzare immediatamente. Uso l'implementazione di Castle Windsor e funziona bene. Suggerirei anche di verificare la loro classe TestHelper. Ha alcune funzionalità molto interessanti per deridere Controller HTTPContext, Sessioni, ecc. MVCContrib

Personalmente mi piace fornire ai miei modelli un'istanza di repository con cui lavorare. Il modello espone un'API al repository (CRUD). La dipendenza del controller da un particolare modello viene iniettata nella creazione (costruttore), che viene iniettata tramite Controller Factory. Questo è il mio punto di accesso al grafico a oggetti gestito dal mio contenitore IoC.

5
Nick

Dove inseriremmo le classi del repository, per esempio?

Appartengono al modello; sono il modello in-application.

Come strutturare i livelli? Se voglio creare un'applicazione multilivello/layer quali sono alcune delle migliori pratiche in materia di MVC?

I livelli rappresentano le separazioni fisiche del codice. I livelli rappresentano separazioni logiche. I livelli (così come sono attualmente) funzionano bene per MVC. A seconda della quantità di logica aziendale, può essere collocato nel proprio controller oppure può essere collocato in un assieme separato e può essere utilizzato dal controller durante il ciclo di richiesta.

2
George Stocker