2015-04-12 2 views
16

Vedo numerosi siti e articoli che spiegano che la vista viene aggiornata dal modello come nell'esempio qui sotto mvc tuttavia vedo alcuni altri esempi di architettura MVC mostrando che la vista viene aggiornata tramite il controllore enter image description hereMVC: è il modello da visualizzare o il controller da visualizzare?

`la seconda se hai @Model nelle tue visualizzazioni? mi sto solo chiedendo perché le diverse versioni di MVC ci hanno insegnato che dovrebbe essere la seconda immagine.

+0

primo diagramma non è completamente corretto .. dovrebbe essere richiesta dell'utente -> gestito dal controller -> manipola modello -> gestito dal controller -> inviato alla visualizzazione. Quindi in pratica il controller è come l'uomo medio che collega il modello con la vista. – SolidSnake

+0

Bene la prima immagine offre un chiaro flusso di come Model - View - Controller. lavori. Ma qui viene mostrata la comunicazione diretta tra Modello e Vista. Lo stesso non è vero per la seconda immagine, anche ad eccezione della domanda; La vista è correlata al modello ?. Sì. –

+1

Anche questo l'ho pensato, ma dopo aver visto più articoli con modelli di design simili come il primo diagramma ho iniziato a chiedermi ha. A meno che il secondo diagramma sia MVP, P è presentatore? – Matchbox2093

risposta

9

MVC è un pattern definito in modo approssimativo che offre all'architetto molta discrezione sui dettagli di implementazione. Questo è probabilmente il motivo per cui esistono così tante varianti di MVC.

Per quanto ne so, tutto è iniziato con Classic (Original) MVC che separa l'applicazione Web in tre parti, ad esempio Model, View e Controller. Gli obiettivi erano:

  • Raggiungere accoppiamento lasco tra il modello e Vista (pattern Observer impiegato per realizzarlo).
  • Incapsulare la business logic in Model in modo che possa essere testato in modo completo .
  • Rendi la visualizzazione il più muto/sottile possibile per ridurre la necessità di testarlo.

A Standard MVC Interaction

Il modello incantare così tanti che c'erano diverse varianti (modello attivo, passivo modello, Model2). Queste variazioni erano dovute alle implementazioni del modello in particolari quadri per adattarsi agli obiettivi di progetto delle strutture.

Ad esempio, una variante è Modello2. Model2 è una variante Web (il classico MVC era in realtà destinato a un'applicazione desktop) ed è diventato popolare come "ASP.NET MVC Framework".

The Model2 Interaction as in the ASP.NET MVC Framework

La differenza fondamentale tra Classic MVC e ASP.NET MVC Framework è, il più tardi offre invece una netta separazione tra il modello e vista vale a dire senza interazione diretta. Piuttosto Controller è responsabile di facilitare questa comunicazione tra Modello e Vista in ASP.NET MVC Framework. Ciò rende le applicazioni Web ASP.NET MVC Framework molto più semplici da testare &.

Inoltre, in Model2 è possibile stabilire una sorta di contratto libero tra la vista e il controller. In ASP.NET MVC Framework, questo contratto veniva rappresentato dall'oggetto contenitore ViewData e oggigiorno utilizza un oggetto ViewModel.

Per evitare confusione, è necessario esaminare le interazioni tra queste tre parti (Modello, Visualizza controller &) nelle implementazioni del pattern MVC attualmente in uso. Comprende anche il fatto che si tratta di una particolare implementazione del pattern MVC e un diagramma potrebbe non essere in grado di descriverlo completamente.