2010-06-24 8 views
7

Sembra che ci siano un sacco di possibili configurazioni/architetture MVC (MVC, MVVM, MVP, HMVC, PAC, vista documento ...). Esiste attualmente un'architettura MVC "migliore" o all'avanguardia? Qual è il pensiero più recente? O è tutto un free-for-all e/o semplicemente legato a qualunque piattaforma si sviluppi (ad esempio MVVM per WPF)?Stato dell'arte nell'architettura MVC?

(In particolare mi interessa MVC come applicato in applicazioni desktop/rich-client.)

+0

+1 buona domanda. – adatapost

risposta

6

No. Non si ottiene alcun accordo su quale sia il "attualmente accettato" migliore architettura.

E ' certamente non MVC o MVP Queste architetture hanno avuto origine rispettivamente tra la fine degli anni '70 e l'inizio degli anni 90. MVP è un miglioramento su MVC, ma nei venti anni da quando MVP è stato inventato, è diventato chiaro che soffre di molti, molti difetti. Ecco perché ci sono così tante nuove architetture concorrenti.

I concetti di "modello" e d "view" sono ben accettati e sembrano essere comuni a tutti i modelli di architettura attuali al giorno d'oggi. La vera domanda è come collegarli al meglio. Hai bisogno di qualcos'altro oltre al modello e alla vista, ma cosa?

La maggior parte delle architetture più recenti tende a farlo disponendo del collegamento della vista o collegandosi direttamente al modello e al "qualcos'altro" utilizzando l'associazione dati, le espressioni o meccanismi simili. In questo modo qualsiasi cosa nel modello che può essere vincolata direttamente dalla vista non ha affatto bisogno di coinvolgere il "qualcos'altro".

Il mio preferito è MVVM. Adoro il fatto che un "modello di vista" sia concettualmente solo un "modello" con tutti gli aspetti di qualsiasi altro modello, tranne che non viene (normalmente) mai scritto sul disco. Infatti, se non si confondesse, "MVVM" potrebbe essere rinominato in "MV", dal momento che praticamente elimina la necessità di nient'altro che visualizzazioni e modelli. MVVM può essere utilizzato non solo con WPF ma con qualsiasi framework di presentazione con funzionalità avanzate di associazione dei dati. Sfortunatamente questo esclude GWT e Cocoa. Mi piace anche MVVM perché tende a eliminare completamente il codice ridondante o ripetitivo.

MVVM non è l'unico lettore avanzato in città. Anche gli approcci orientati all'aspetto e le architetture di comando costruite su modelli e viste tradizionali hanno aspirazioni simili.

La linea di fondo è, questa è ancora un'area attivamente ricercata e non è stato raggiunto un consenso in questo momento. MVVM è la più popolare tra le nuove architetture ma non l'unica. La giuria è ancora fuori.

Nota: Per avere un'idea di come le architetture più recenti sono miglioramenti rispetto MVC e MVP, controlla this comparison of Cocoa and WPF a partire dalla voce "codice ripetitivo" e scendendo fino alla fine della sezione "Command Architecture".

+0

Esiste un collegamento a un sito che descrive MVVM in dettaglio? –

+0

Ci sono molti di questi siti. L'articolo di Wikipedia su MVVM ha 12 link esterni, molti dei quali sembrano essere quello che stai cercando. http://en.wikipedia.org/wiki/Model_View_ViewModel Avvertenza: alcuni di questi collegamenti descrivono la creazione di una proprietà proxy nel ViewModel per ciascuna delle proprietà del modello, ma non riescono a chiarire che questo è * solo * necessario o auspicabile se il tuo modello non ha una notifica di modifica della proprietà. Utilizzo un livello dati che implementa correttamente la notifica di modifica delle proprietà, quindi non ho mai avuto motivo di creare tali proprietà proxy quando ho utilizzato MVVM. –

3

L'ultimo ricerca architettonica sta facendo in questi giorni per thick client è stato fatto da parte di Google. con l'architettura MVP.

Scopri gli articoli GWT su MVP
http://code.google.com/webtoolkit/articles/mvp-architecture.html
http://code.google.com/webtoolkit/articles/mvp-architecture-2.html

Anche guardare questo http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/8b0ae5eaf84d8bc2?hide_quotes=no

Verificate anche questo video di YouTube http://www.youtube.com/watch?v=PDuhR18-EdM

Per quanto riguarda rispondere alla tua domanda, ad eccezione di dicendo che MVC è un po 'datato, penso che sia molto soggettivo su quale strada andare. Non è specifica piattaforma, salvo che il quadro si sceglie potrebbe dettare l'Architettura :(

+0

GWT nel contesto di app desktop/rich client? .. inoltre, sto fraintendendo, o implichi davvero che l'architettura MVP sia di Google? –

+0

@Pavel GWT è molto simile a Java Swing. Non sto insinuando che abbiano inventato MVP (non sono sicuro di chi l'abbia fatto), solo che lo stanno promuovendo e hanno pubblicato molto. Aggiornato il mio post su dove potrebbe essere interpretato che intendevo quello. –

+0

** MVP è in circolazione dai primi anni '90 ** ed è una notizia vecchia. Se la domanda è chiedersi quale sia lo stato dell'arte, MVP non è nemmeno in esecuzione. MVP ha ancora la maggior parte dei problemi che MVC ha avuto. Puoi fare molto meglio di così. –

Problemi correlati