MVVM in WPF è obsoleto? [chiuso]


18

Al momento sto cercando di farmi girare la testa a MVVM per WPF - non intendo farmi girare la testa intorno al concetto, ma intorno ai veri e propri bulloni di fare tutto ciò che è più fuori dai sentieri battuti del muto CRUD.

Quello che ho notato è che molti dei framework e la maggior parte / tutti i post dei blog sono di "età" fa.

È perché ora è vecchio cappello e i blogger si sono spostati su Next Big Thing, o semplicemente perché hanno detto tutto quello che c'è da dire?

In altre parole, c'è qualcosa che mi manca qui?


1
I framework MVVM per WPF hanno continuato ad essere aggiornati. La programmazione reattiva per nuovi argomenti [google it!] È disponibile come MVVM tramite ReactiveUI . 3 dei primi 10 download di nuget wpf sono framework MVVM: Prism.WPF, MvvmCross, Caliburn.Micro. AFAIK, tutti questi supportano anche Xamarin.Forms e UWP, quindi saranno rilevanti per gli anni a venire.
ToolmakerSteve

Risposte:


6

MVVM non è obsoleto, ma all'inizio è stato sottoposto a overplay. Non mi è mai piaciuto e mi ha tenuto in WinForms per troppo tempo; non riuscendo a vedere la foresta per gli alberi, ho gettato il bambino fuori con l'acqua del bagno. Ora ho WPF e ho l'idea di non voler mescolare il codice con il markup, ma preferisco lo stile Android di attaccare il markup in un posto e dereferenziarlo con i cast nel mio codice (cosa che puoi fare anche in WPF, anche anche se non è mai stato alla moda farlo per qualsiasi motivo).

In questo modo ottieni un controllo più preciso e non devi preoccuparti di tutte le manipolazioni "invariate" ovunque. Ritengo che questo sia effettivamente più testabile perché i test non lo cattureranno sempre se si perde un evento "invariato".

Perdi un po 'di "dichiarativa" -ness, che sembra essere una tendenza in questi giorni (ad esempio se due widget sono associati allo stesso valore, in MVVM puoi semplicemente farlo, mentre con il codice imperativo devi impostare entrambi individualmente) . Ma anche con MVVM, questo funziona solo nel caso umile. Se un widget deve visualizzare il registro di un altro widget, allora devi scrivere un altro gestore e un altro evento "modificato" e quindi devi estendere la definizione di "dichiarativo" per dire che è così.

Aggiornamento 2015

WPF MVVM era (r) evolutivo per i suoi tempi. Come è stato WPF. Ma entrambi avevano le loro verruche. Il semplice WPF ne aveva incorporato troppo (in più era basato su XML) ed era una specie di problema da affrontare. (Davvero, se WPF avesse appena adottato un approccio più "bibliotecario" piuttosto che un approccio "quadro", avrebbe potuto trasformarsi in qualcosa di veramente interessante e l'intero universo tecnologico potrebbe essere completamente diverso ora). L' idea di MVVM era eccezionale, ma cercare di inserire un MVVM in WPF era alquanto confuso dal momento che 1) C # non poteva davvero esprimerlo senza molta caldaia, e 2) le reliquie di WinForms come i popup modali erano ancora ideologicamente prevalenti ma non potevano essere facilmente rappresentato in MVVM. Quindi ha fatto schifo.

Detto questo, è ancora l'unica opzione realistica su Windows quando hai bisogno di trasparenza o GPU per le app LOB.

Naturalmente React ha reso obsoleto MVVM. Sono rimasto deluso dal fatto che VS2015 non avesse un contatore nativo a questo. Per ora siamo ancora bloccati utilizzando WPF prime (che è OK, ma si sente vecchia (in realtà si sente altrettanto antica quanto WinForms ora), e non ha una tonnellata di funzionalità incorporata (si sente come un po 'di fresco, ma progetto abbandonato) o con-MVVM, che a questo punto sembra molto sovraccarico per nulla, poiché anche un buon MVVM (angolare 1) è stato esposto per i suoi difetti.

Eviterei WPF MVVM. È un livello extra e nessuno se ne preoccupa più.


3
Hmm .. Mi rendo conto che in parte è una questione di religione, ma ho iniziato con MVVM in WPF usando Cinch in .. Mmm. 2010? E mi è piaciuto molto. Da allora sono passato a Caliburn.Micro e Angular e lo adoro ancora - ovviamente, ci sono molte carenze in MVVM come hai detto (chiaramente nessun modo non complicato per fare dialoghi). MVVM potrebbe sembrare alquanto dettagliato, ma la leggibilità generale e il divario esplicito di progettazione dell'interfaccia utente / implementazione lo rendono ancora utile per me.
cwap

4
"Naturalmente React ha reso obsoleta MVVM", ma la maggior parte del settore utilizza Angular.
Den,

Troppo finché non decidi di spostare la tua app desktop sul Web e tutto ciò che hai è una tonnellata di code-behind tutto legato ai controlli WPF.
Bloke CAD

1
Quindi, React and Angular non è un ambiente JavaScript? Cosa c'entra questo con WPF? Oppure mi sfugge qualcosa.
Berin Loritsch,

1
@BerinLoritsch - non ti stai perdendo qualcosa. Tale paragrafo è irrilevante per le presenti domande e risposte; apparentemente Dax si è "spostato" da WPF alla programmazione web. Mele e arance
ToolmakerSteve

2

Detto questo, c'è un limite a ciò che puoi fare con un framework MVVM.

Sono "fatti" da quando WPF non è passato da quando Microsoft l'ha rilasciato. Se ci fossero aggiornamenti alla tecnologia, anche le librerie avrebbero bisogno di essere aggiornate. Questo non è successo.


Quindi è WPF che è "obsoleto"? Per quanto riguarda la tua prima frase: è che nella vita reale l'interfaccia utente e il codice sono troppo intrecciati per renderlo una proposta realistica, o alcune modifiche in WPF potrebbero averlo reso il Santo Graal (o quasi?)
Benjol

3
@Benjol - Sembra che Microsoft abbia abbandonato WPF (o almeno non stia più aggiornando la tecnologia). Il mio punto sui framework MVVM è solo che per gli scopi previsti c'è poco da continuare ed estenderli su una piattaforma obsoleta. Non so perché Microsoft abbia smesso di aggiornare WPF, ma dubito che sia ciò che suggerisci: è più probabile che Windows 8 e RT abbiano tolto le risorse da WPF.
Oded,

18
Questo non è vero. WPF è stato aggiornato più volte, più recentemente in .NET 4.5: msdn.microsoft.com/en-us/library/bb613588.aspx
17 del 26

3
Vale anche la pena notare che MS supporta le tecnologie degli sviluppatori per sempre. MFC, rilasciato nel 1992, continua a ricevere correzioni di errori con ogni versione / service pack di Visual Studio.
17 del 26

5
Mi spingerei addirittura a sostenere che la mancanza di recenti aggiunte a WPF sia indicativa della sua maturità. Inoltre, come già toccato da @Oded, le app desktop, sebbene abbiano ancora il loro valore, ora vengono sostituite da app mobili. Tuttavia, vale la pena ricordare che gran parte di ciò che WPF ha iniziato (programmazione dichiarativa dell'interfaccia utente, MVVM, DependencyProperties e Data Binding) vive ora nelle tecnologie WinRT e Web (più framework JS). Questi sono valori fondamentali che hanno fatto avanzare significativamente il campo e credo che continueranno a farlo per molto tempo.
Sebastian,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.