Perché disaccoppiare la vista e il controller (web)?

8

Perché non possiamo inserirli nella stessa pagina, come ogni azione abbinata alla sua vista? Non usando l'isola del codice, ma il codice del controller in alto, quindi il codice visualizzato in basso? Quali sono i problemi con questo approccio?

Per MVC, mi riferisco a framework come ASP.NET MVC e Ruby on Rails, e ho l'impressione che V e C siano effettivamente il livello dell'interfaccia utente.

    
posta Andy 14.11.2011 - 02:10
fonte

3 risposte

5

Il motivo per cui sono generalmente disaccoppiati è perché vuoi che la tua vista utilizzi un controller per arrivare al tuo modello. Ma l'architettura dovrebbe consentire di sostituire una vista con un'altra senza dover modificare la logica aziendale (ad esempio il modello di oggetti o il modo in cui questi oggetti vengono recuperati).

Non legando il controller direttamente alla vista, in seguito mi sarebbe molto più facile aggiungere altre funzionalità come import / export che possono utilizzare direttamente il controller / modello senza dover fare affidamento su alcuna interfaccia utente.

Un altro vantaggio di spingere il maggior numero possibile di codice dall'interfaccia utente è dato dal fatto che le interfacce utente sono molto più difficili da testare unitamente al livello aziendale dietro di esse. Separando il più possibile la vista, è possibile scrivere molti più test unitari per garantire che il controller / modello e la logica dell'applicazione siano corretti.

    
risposta data 14.11.2011 - 02:37
fonte
4
  • Il controllore gestisce la logica di bussiness che può cambiare di volta in volta e la vista può rimanere invariata, come da requisiti.

  • È anche vero il contrario di quanto sopra.

  • I progettisti e gli sviluppatori devono essere in grado di lavorare sullo stesso progetto in modo indipendente.

Un bel post: link

  • L'intero sistema diventa più gestibile. Risolvere bug diventa più facile con l'approccio disaccoppiato.

  • Gli standard web con tecnologie front-end stanno cambiando rapidamente. Immagina un'azienda che decide di migrare tutti i tecnlogici front-end in HTML5, Dart, ecc. Avere un View e un Controller accoppiati sarebbe un incubo!

risposta data 14.11.2011 - 03:45
fonte
3

Non è necessario separare i due ovviamente. Ma se view e controller sono indipendenti, è possibile utilizzare qualsiasi interfaccia utente. Ad esempio, è possibile utilizzare il controller tramite l'interfaccia console, socket, Web o desktop. In altre parole, puoi aumentare il riutilizzo del codice.

    
risposta data 14.11.2011 - 02:38
fonte

Leggi altre domande sui tag