Dove non dovremmo usare MVC? [duplicare]

7

Ho un progetto di corso di ingegneria del software che dovremmo progettare un'applicazione web, quindi ho deciso di leggere i modelli di architettura del software.

Ho letto molto su cosa sia MVC e la sua struttura, inoltre conosco i vantaggi di rompere un'applicazione in livelli.

Ma non riesco a trovare una risposta a questa domanda, quindi apprezzo chiunque possa dirmi:

Dove non dovremmo usare il pattern MVC in un'applicazione web?

    
posta K327 28.04.2015 - 16:58
fonte

1 risposta

16

Nella mia esperienza, un'applicazione web dovrebbe essere banalmente piccola per non beneficiare dell'organizzazione e del disaccoppiamento fornita da MVC.

Forse un po 'di spiegazione sulla famiglia MV * di modelli architettonici è in ordine.

I pattern MV * riguardano principalmente l'interfaccia utente . Il loro scopo principale è quello di fornire il disaccoppiamento tra l'interfaccia utente e il resto dell'applicazione.

In Winforms e altre UI guidate dagli eventi, creiamo un'interfaccia utente inserendo oggetti che rappresentano elementi del modulo come caselle di testo in un contenitore Form, quindi associamo eventi a tali oggetti (come Click o LostFocus) per eseguire azioni nel codice.

Hodisegnatounafrecciaspessatralescatoleperrappresentareilfattochesiaidaticheicomandisonopassatiavantieindietro;questocreaun'interfacciautentestrettamentevincolataalrestodell'applicazione.Chiunqueabbiamaicreatoun'applicazioneinquestomodosacheèdifficilerenderlogrande,perchésifiniscevelocementeconunpiattodicodicespaghetti.

Perrisolverequestoproblema,aggiungiamounPresentatore(avoltechiamatoSupervisionController)almix,creandoModel-View-Presenter.Questadisposizionespingelamaggiorpartedellalogicadell'interfacciautentefuoridallavistaenelPresenter,consentendounamiglioremanutenibilità.

Notare che ho tracciato una linea sottile tra il Modello e il Presenter, indicando che solo i dati vengono passati avanti e indietro, non i comandi. Ciò fornisce un certo disaccoppiamento tra il Modello e la Vista.

Model-View-ViewModel è molto simile, tranne che c'è un ViewModel al posto di un Presenter. Questa soluzione è vista più spesso in Windows Presentation Foundation e in applicazioni Web a pagina singola (SPA) utilizzando un framework MVVM come Angular. Oltre al comando e al controllo, MVVM si occupa anche di associazione dati .

Model-View-Controllerèprincipalmenteassociatoalleapplicazioniweb.InMVC,icomandinonvengonoscambiatiregolarmentetrailmodelloelavista.Invece,lavistavieneinviataalcontrollertramiteunverboHTTPeilcontrolloredecidecosafareconesso.Lamaggiorpartedellalogicadidominiovienereinseritanelmodello.

Poiché MVC associa ancora piuttosto strettamente la vista agli oggetti di dominio reali, è possibile inserire un modello di vista per ottenere qualche riferimento indiretto aggiuntivo.

Questo modello di vista non è un livello comando, come in Model-View-ViewModel; è semplicemente un livello di traduzione dei dati tra il modello e l'interfaccia utente. Un buon esempio di ciò sarebbe un ViewModel per una fattura, che conterrà tutto ciò che è necessario per visualizzare e aggiornare una fattura, come nomi, indirizzi e elementi pubblicitari della fattura. Questi dati si associano quindi agli oggetti del dominio del modello attuale, come clienti, prodotti, prezzi, ecc.

Quando usarli?

Quando ne hai bisogno per lo scopo che servono: per disaccoppiare l'interfaccia utente dal resto del sistema. L'aroma che usi dipenderà dal tipo di applicazione web che stai creando. Se le tue pagine vengono per lo più generate lato server, utilizzerai MVC. Se le tue pagine vengono generate principalmente sul client, utilizzando Javascript (come in un'applicazione SPA), utilizzerai MVVM.

    
risposta data 28.04.2015 - 18:23
fonte

Leggi altre domande sui tag