MVC si applica solo al web

14

È quasi e istantaneo ogni volta che parlo con gli sviluppatori di Model View Controller ( MVC ) dicono che fai una richiesta a un URL il server crea un'entità (MODELLO) e ti fornisce una rappresentazione visiva di quel modello.

  • Questo significa che MVC è solo per il web o ho incontrato persone che sono solo sviluppatori che utilizzano MVC per scrivere applicazioni Web?

  • Ci sono usi per MVC su applicazioni in stile desktop?

  • Io per primo sono un nuovo paradigma e vorrei sapere di qualsiasi super-set di MVC

posta Deeptechtons 21.03.2012 - 09:53
fonte

8 risposte

22

MVC è un modello. I pattern si applicano a tutta la programmazione. MVC semplicemente funziona molto bene in un contesto web.

Come gnat sottolinea basta dare un'occhiata a il tag mvc e vedrai più esempi di implementazione.

    
risposta data 21.03.2012 - 10:09
fonte
45

Considerando che MVC è del 1977 e il web è stato inventato solo nel 1991, dovrebbe essere abbastanza ovvio che MVC è non solo per il web.

    
risposta data 21.03.2012 - 10:13
fonte
9

No, lo sviluppo per OS X e iOS utilizza Pattern Model View Controller.

    
risposta data 21.03.2012 - 10:04
fonte
8

Fai la domanda in un ambiente Microsoft e molte persone presumeranno che tu voglia dire ASP.Net MVC, che è un'implementazione MVC specifica per il web.

Sfortunatamente ci sono molte persone che non si rendono conto che questa è un'implementazione del pattern MVC e pensano che siano termini intercambiabili, il che porta ad una supposizione di "solo web".

    
risposta data 21.03.2012 - 11:30
fonte
2

Almeno per quanto ne so, la prima implementazione di MVC era in Smalltalk. Era decisamente presente in Smalltalk-80. Anche se non ho alcuna documentazione a portata di mano per dimostrarlo, credo che (o comunque qualcosa di abbastanza simile) sia stato in Smalltalk per alcuni anni da allora.

La maggior parte dei framework OO della GUI ha incluso almeno alcune varianti di MVC. Non sono sicuro, tuttavia, esattamente quale "superset" significherebbe in questo caso. È un po 'difficile dire se una determinata variante sia un superset, un sottoinsieme o un peer di MVC, ma tenderei a considerare la maggior parte dei peer.

In ogni caso, molti (la maggior parte?) di questi sono stati utilizzati per lo sviluppo del desktop, non per lo sviluppo web. Grazie ad alcuni vecchi brevetti AT & T, la maggior parte dei sistemi a finestre richiede che i programmi siano in grado di ri-generare viste su richiesta. Questa (quasi) forza almeno un certo grado di separazione tra il codice che mantiene lo stato corrente (il modello) e il codice che visualizza quello stato (la vista). Ciò lascia ancora molto spazio alla variazione in 1) il grado in cui la funzionalità del controller è isolata, e 2) i dettagli esatti su dove tracciare le linee tra ciascuno dei pezzi principali.

    
risposta data 21.03.2012 - 20:26
fonte
1

No, si applica anche per le applicazioni standalone. Esempio Java Swing segue MVC.

    
risposta data 21.03.2012 - 15:17
fonte
1

Quindi ci sono molti modelli di design differenti in quest'area.

  • Model View Presenter (mvp)
  • Vista modello Visualizza relatore (mvvp)
  • Controller vista modello
  • Modello 2

e così via. Nel corso degli anni questi sono stati intrecciati, purificati insieme, modificati e applicati in un'ampia varietà di contesti. Il punto importante qui è che il modello di progettazione MVC del 1977 è cambiato parecchio e non è più il modello di progettazione utilizzato dai framework web serveride. Come esempio nell'implementazione smalltalk originale, il Modello osserverebbe la vista delle modifiche, che non è più il caso in quanto il serveride non può semplicemente osservare gli elementi html nel browser degli utenti. Invece se la vista cambia, la vista invierà una richiesta al controller che aggiornerà la vista. Anche in questo caso l'implementazione MVC originale non viene seguita, poiché un aggiornamento del modello implicherebbe l'aggiornamento di tutte le viste dipendenti dal modello.

I moderni framework web seguono una semplice architettura a tre livelli nota anche come architettura Model 2.

Esistono naturalmente esempi di vere architetture MVC sul Web, ma questi sono spesso solo lato client, connessi a un server che segue l'architettura del Modello 2, poiché le viste sono xml e json e non sono osservate per le modifiche. Esempi di architetture in mvc puro lato client sono Sencha Touch e Sproutcore.

Se hai MVC nel browser, mvc come sul server e mvc come il livello dati, hai un'implementazione mvc gerarchica.

Nota. Ho parlato solo di framework web, altre implementazioni di MVC come java swing e Flex ha altre differenze di implementazione.

    
risposta data 22.03.2012 - 12:20
fonte
1

Una cosa che devi sapere è che ci sono tanti gusti di MVC quanti sono i framework che pretendono di implementare MVC.

La maggior parte concorda sul fatto che il modello detiene alcuni stati e la vista lo rende. Ma il controller ha ruoli molto diversi.

In Smalltalk, dove è stato descritto per la prima volta, il modello è il fulcro delle applicazioni, dei dati e dei metodi commerciali. La vista è una rappresentazione grafica dello stato dell'applicazione (ovvero modello) e il controller gestisce gli eventi di input, mouse e tastiera dell'utente. Il Controller, ad esempio, indirizza gli eventi della tastiera all'elemento della vista che ha lo stato attivo.

Nelle pagine .jsp, il modello è per lo più di dati, la vista esegue il rendering del modello in HTML e il controllore esegue il routing del modello alla vista corretta per renderlo.

Quindi, per rispondere alla tua domanda, mentre MVC è utilizzato sia su applicazioni standalone (Java, .Net, Flex) che sul web (pagine jsp), è una cosa molto diversa. Ciò significa che l'MVC che conosci non è utilizzato nelle applicazioni standalone.

    
risposta data 08.11.2014 - 18:35
fonte

Leggi altre domande sui tag