7

Sfondo: Ci ho pensato per un po 'di tempo e non ho trovato alcuna risposta valida. Dopo aver lavorato per qualche tempo con WebForms e periodicamente con MVC 2,3 e 4, non riesco ancora a capire come ASP.NET MVC possa affermare di essere un'implementazione del pattern MVC.ASP.NET MVC è un'implementazione errata del modello di architetto MVC?

Una delle prime cose che ho imparato su MVC (pattern) è che è ciclico - il che significa che la vista utilizza il controller che aggiorna il modello che aggiorna la vista - e così via, round e round. Naturalmente con l'utente nel cerchio per inserire nuove istruzioni/dati, ecc.

Tuttavia, ASP.NET MVC non è realmente un'implementazione ciclica, che è ben dimostrata nell'immagine a colori di seguito da W3CSchools. Ho anche visto questo in pratica quando View ha un'istanza di un Modello e il Modello è aggiornato dal Controller ma dove il Controller è anche responsabile dell'aggiornamento della Vista dopo che il Modello è stato aggiornato.

Domanda: Is l'ASP.NET MVC erroneamente attuate dalle cosciente e dovrebbe essere visto solo come un'interpretazione di proprietà o ho frainteso le regole del pattern MVC?

ASP.NET MVC MVC Architectural pattern

+1

buona domanda. Le altre implementazioni di framework MVC che ho visto isolano la vista dal modello. Lo sviluppo di iOS e Android sono esempi. In ASP.NET MVC, è possibile utilizzare il modello all'interno della vista. – Slavo

+2

Sì, è sbagliato. Principalmente perché la versione 1.x originale ha preso Rails come template (che implementa in realtà una strana bastardizzazione di PAC e mix di PageController). Le versioni correnti di ASP.NET MVC soffrono ancora di questa scelta. –

+0

Contrassegnerei come risposta se potessi. – Marcus

risposta

-2

L'(Database) modello non aggiorna la vista, il controllore aggiorna la vista mentre passa la vista del modello se si utilizza modelli vista separati (che si dovrebbe)

+0

In ASP.NET MVC sì, ma questo non è implicito nel modello MVC per quanto ne so. Invece, nel modello, il modello dovrebbe aggiornare la vista, senza interferenze da parte del controller. Non sono sicuro di essere d'accordo sul fatto che il modello sia uguale al database. Vedo il modello come una rappresentazione di un modello di dati. Inoltre, non risponde alla mia domanda. – Marcus

+0

Beh, se leggi l'articolo di wikipedia dice che il pattern MVC si è evoluto e questo è esattamente ciò che sta accadendo con gli attuali trend di sviluppo web 'Questo primo concetto MVC definito Controller come" il modulo che si occupa di input "(analogamente a come la vista si occupa dell'output). Il Controller, nelle moderne applicazioni degli anni 2000, è un modulo, o una sezione intermedia di codice, che media la comunicazione (tra il Modello e la Vista) e unifica la convalida, utilizzando chiamate dirette o l'Observer - per disaccoppiare il Modello dal Visualizza nel Modello attivo. – matthijsb

+0

Sì, certo, ma evolvere non è la stessa cosa di andare in tutte le direzioni possibili mantenendo il nome. Ecco perché abbiamo MVVM, MVP, DCI e altro che derivano tutti dal pattern MVC ma con le sue caratteristiche. Nota: i commenti continuano a cambiare su di me; Il fatto che il controllore si occupi della comunicazione "tra il Modello e la Vista" non dice nulla sulla direzione della comunicazione.Continuo a pensare che un vero MVC dovrebbe essere ciclico e quindi, la comunicazione dovrebbe essere solo dalla vista al controller, da modellare alla vista. – Marcus

Problemi correlati