Domanda

Non riesco a Grok ciò che MVC è, che cosa mentalità o la programmazione modello dovrei acquistare roba così MVC possono istantaneamente "lampadina" sulla mia testa? Se non immediatamente, cosa semplice programmi / progetti devo cercare di fare in primo luogo in modo da poter applicare le cose meravigliose MVC porta alla programmazione.

OOP è intuitivo e facile, oggetto è intorno a noi, ed i benefici di riutilizzo del codice utilizzando OOP-paradigma istantaneamente clic a chiunque. Probabilmente si può parlare con nessuno su OOP in pochi minuti e lezioni alcuni esempi e avrebbero capito. Mentre OOP in qualche modo sollevare l'aspetto intuitività della programmazione, MVC sembra fare il contrario. Sto ricevendo i pensieri negativi che alcuni futuri datori di lavoro (o anche i clienti) sarebbe guardare dall'alto in basso su di me per non usare la tecnologia MVC.

Anche se probabilmente ho la personalizzabile aspetto della MVC, ma quando ho cercare di applicarlo al mio progetto, non so da dove cominciare.

E anche alcuni programmatori hanno anche opinioni divergenti su come realizzare MVC correttamente.

Prendete questo ad esempio dal post di Jeff su MVC:

  

La vista è semplicemente il modo di disporre la   dati fuori, come questo viene visualizzato. Se tu   vuole un sottoinsieme di alcuni dati, per   ad esempio, la mia opinione è che è un   responsabilità del modello.

Quindi, forse alcuni programmatori utilizzano MVC, ma in qualche modo usano inavvertitamente la vista o il controller per estrarre un sottoinsieme di dati.

Perché non possiamo avere una definizione definitiva di cosa e come realizzare MVC correttamente?

E anche, quando cerco programmi MVC NET, la maggior parte di esso vale per programmi web, applicazioni non del desktop, questo mi intrigano di più. La mia ipotesi è che questo è più vantaggiosa per applicazioni web, non c'è molto problema circa vista mescolati (html) e di controllo (codice di programma) in applicazioni desktop.

È stato utile?

Soluzione

Mi piace il modo in cui Martin Fowler dice:)

http://martinfowler.com/eaaCatalog/modelViewController.html

.. e da http://martinfowler.com/eaaDev/uiArchs.html :

  

Prendere Model-View-Controller come esempio. E 'spesso definito come un modello, ma io non lo trovo terribilmente utile pensare ad esso come un modello, perché contiene un bel paio di idee diverse. Diverse persone che leggono su MVC in luoghi diversi prendono idee diverse da esso e descrivono questi come 'MVC'. Se questo non causa abbastanza confusione si ottiene quindi l'effetto di incomprensioni del MVC che si sviluppano attraverso un sistema di sussurri cinesi.

Altri suggerimenti

Si potrebbe iniziare leggendo le risposte a questa domanda .

MVC fa WebApps integrarsi bene. La maggior parte delle WebApps ottenere i dati dal DB, processo solo un po 'e li mostrano per l'utente. DB è il tuo livello di modello, il controller si occupa di elaborazione e visualizzazione solo emette codice HTML.

Alcune persone pensa controller dovrebbe solo ottenere i dati dal modello e dei mangimi alla vista, ma credo che questo significa che i controllori sono inutili e quindi è proprio modello di programmazione MV :) Ma li capisco, se si usa un qualche tipo di trattamento, si sta andando ad utilizzare più di una volta e quindi è meglio farlo a livello di modello, può essere condiviso tra le diverse parti di applicazioni in questo modo.

Non è necessario usare MVC per le applicazioni desktop, infatti, non sono sicuro che questo modello funziona per grandi applicazioni, quali i desktop quelli di solito sono. Troppo spesso si desidera utilizzare un "componente", cosa che si può nutrire gli stessi dati e ottenere la stessa interfaccia utente fuori di esso, ma in diverse parti del app, e porta solo per copiare il codice in giro con MVC.

Ho trovato il paradigma MVC spesso un sacco troppo gonfio. Un semplice modello / vista (senza il regolatore) è più facile da comprendere e facile da implementare.

La maggior parte delle persone a capire che qualche classe contiene i dati (modello) e la logica per caricare / salvare i dati e un'altra classe dimostra che i dati (vista). Dare qualche colla per caricare un documento (qualcosa di simile a un gestore di documento) e si è fatto.

Un'implementazione MVC "tipico" avrebbe:

  • viste - rende i dati per l'utente finale di vedere e dà loro oggetti dell'interfaccia utente di interagire con i dati (ma non a gestire tale interazione)
  • Controller (s) - gestisce l'interazione con l'utente e la manipolazione dei dati che viaggiano tra i punti di vista e il modello
  • modello - gestisce la memorizzazione dei dati e la rappresentazione di tali dati per l'applicazione

Un uso frequente del pattern MVC sarebbe il codice HTML / CSS / navigatore rendering per la parte di vista di un'applicazione web, il / scripting livello di applicazione lingua recitazione PHP come il controller, e MySQL o di un database simile agiscono come modello (che può o non può avere una sorta di quadro ORM di fronte ad essa).

La verità è che pochissime persone utilizzano MVC esattamente questo formato, e per una buona ragione (a mio parere). Diverse applicazioni hanno esigenze diverse e requisiti di progettazione ed è vantaggioso per piegare i modelli di ciò che è necessario. Questi giorni "MVC" sembra descrivere più di utilizzo di un quadro che isola i livelli di un'applicazione che lo specifico modello model-view-controller.

Dal punto di vista datore di lavoro, ciò che realmente viene cercato (spesso) è quello strato di astrazione e l'esperienza che deriva dalla costruzione di un'applicazione n-strati. C'è un salto mentale abbastanza considerevole che si verifica quando ci si sposta da lavorare in un app che può essere divisa non solo in caratteristiche verticali, ma in strati orizzontali di caratteristiche pure.

Come nota, la scuoiatura è in realtà solo un aspetto di un particolare livello, è possibile modificare le fonti di dati a livello di modello, i metodi di manipolazione che i dati (un nuovo algoritmo per esempio) a livello di controllo e li rotolare fuori gradualmente senza dover cambiare gli altri strati.

Forse seguendo la Wikipedia articolo può fare riferimento a più implementazioni. Ha collegamenti a di MVC come framework GUI .

MVC è un pattern, e funziona bene con programmazione orientata agli oggetti, i due non sono esclusivo - direi che erano ortogonali. Il pattern MVC tenta di separare il codice sul display (V) dai dati (M) e il flusso di controllo (C).

Se si cerca "MVC .Net" sarà quasi certamente ottenere un sacco di risultati per le applicazioni web, perché il quadro ASP.Net MVC è stato recentemente pubblicato, e questo è un'applicazione del pattern MVC alla programmazione ASP.Net, quindi è utilizzato per lo sviluppo di siti web. Come lei suggerisce non v'è alcun motivo per non applicare il modello al desktop applicazioni troppo.

Se si stanno avendo un momento difficile con MVC Mi raccomando di leggere fino modelli, in generale, per avere un'idea di come la gente parla di modellazione problemi / soluzioni usando i modelli, poi guardare MVC in modo più dettagliato.

Modifica Spinto dal riferimento a Fowler, il suo libro Patterns of Enterprise Application Architectur e è un ottimo posto per leggere su MVC e altri modelli.

  

Il paradigma MVC è un modo di rompere un'applicazione in tre parti: il modello, la vista e il controller. MVC è stato originariamente sviluppato per mappare l'ingresso tradizionale, l'elaborazione, i ruoli di uscita in GUI regno.

L'input dell'utente, la modellazione del mondo esterno, e il feedback visivo all'utente vengono separate e gestite da modello, e viewport controllore oggetti. Il controllore interpreta mouse e tastiera da parte dell'utente ed atlanti queste azioni dell'utente in comandi che vengono inviati al modello e / o finestra per effettuare la modifica appropriata. Il modello gestisce uno o più elementi di dati, risponde alle domande circa il suo stato, e risponde alle istruzioni per modificare lo stato. La finestra gestisce un'area rettangolare del display ed è responsabile per la presentazione dati all'utente attraverso una combinazione di grafica e testo ... Per saperne di più e anche informazioni .

Al suo interno, MVC è solo un caso particolare di separazione degli interessi: Una porzione di codice è responsabile della memorizzazione dei dati, un secondo blocco è responsabile per manipolare i dati, e un terzo prende cura di interagire con l'utente.

Uno qualsiasi di questi pezzi possono essere implementati in maniera OO, o no - MVC e OOP sono ortogonali. (Anche se, nella mia esperienza, le applicazioni MVC e framework sono estremamente suscettibili di essere OO.)

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