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ù.