Domanda

Sono nuovo nel concetto di MVC e architettura web a più livelli. Sto sviluppando un'applicazione PHP e sto utilizzando uno dei framework MVC disponibili. La mia domanda è la seguente:

Da quello che ho capito, MVC in sé e per sé non è considerato un'architettura a più livelli. Posso capire come l'uso di MVC da solo è un passo avanti dall'adozione di un approccio non strutturato, ma stavo pensando a come si adatterebbe una semplice architettura a 3 livelli? MVC risiederebbe nello strato di presentazione? Quali sono i meriti di aggiungere un approccio a più livelli? Da quello che raccolgo, con MVC da solo non ci sono oggetti di dati espliciti responsabili del recupero dei dati dal database e questo di solito è riempito nel modello. Allo stesso modo la logica aziendale, che in un'architettura a 3 livelli risiederebbe in uno "strato d'affari" (o come vuoi chiamarla), può essere riempito nel controller.

La mia comprensione è in qualche modo corretta? So di aver fatto molte domande, ma vorrei sentirti discutere di come hai incorporato un'architettura di livello N nel tuo framework MVC (PHP o altro) poiché presumo che i due non si escludano a vicenda. Grazie!

È stato utile?

Soluzione

M) M è il tuo modello. Questo è generalmente vive nel livello aziendale o nel livello proprio dietro il livello di presentazione. A molte persone non piace che il livello di presentazione abbia alcuna conoscenza dello strato aziendale e quindi lo astraggono ulteriormente avendo quello che viene chiamato un moderno. Questi sono frequentemente DTO (oggetti di trasferimento dei dati) che mappano vagamente al modello di dominio. Per me (.net Guy) ci sono strumenti come Automapper per effettuare la conversione dal modello di dominio per visualizzare il modello.

V) v è la tua vista. La vista è il tuo livello di presentazione. Questo è il codice HTML o PHP effettivo con cui l'utente tocca e interagisce direttamente. La vista dovrebbe essere il più leggera possibile (che significa nessuna logica se possibile). Prova a mantenere fuori dalla vista qualsiasi tipo di scenari If/Then e attenersi alla semplice visualizzazione e raccolta di dati. Presenta una ViewModel ai tuoi web designer in modo che non contaminino il moto di dominio.

C) C è il tuo controller. Questo è molto simile a un coordinatore. Prende i dati dalla tua vista e si assicura che arrivi alla funzione/metodo di back -end destro per l'elaborazione di tali dati. Coordina anche i dati dal retro sulla parte anteriore.

Laddove i concetti di design a più livelli arrivino è dietro lo strato di presentazione (dove si trova dove è principalmente MVC). Quando il controller sta prendendo i dati dalla vista e lo riporta al back-end (se si seguono DDD o Domain Driven Design) passerebbe i dati a un servizio applicativo (una classe che coordina il back-end è importante). Il servizio potrebbe spingere ulteriormente i dati in un livello di repository (che è una classe che parla al database, al filesystem, ai servizi Web, ecc. - qualsiasi roba infrastrutturale). DDD è un grande argomento ma metterà la testa attorno all'approccio di livello n e come funziona con MVC.

Durante la ricerca di questo argomento, dai un'occhiata a IOC (inversione del controllo), DI (iniezione di dipendenza), TDD (sviluppo guidato dai test) e il maggior numero possibile di modelli (facciata, fabbrica, ecc.).

Altri suggerimenti

In generale, la logica aziendale non dovrebbe essere nel controller: finiresti con enormi controller se avessi seguito questo modello. Il modello ospita sostanzialmente tutti i tuoi livelli di non presentazione ... Accesso ai dati, logica aziendale e oggetti di entità aziendale. Il controller prepara i dati aziendali per la vista.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top