¿MVVM en WPF está desactualizado? [cerrado]

18

Actualmente estoy tratando de entender MVVM para WPF: no me refiero a entender el concepto, sino a los detalles básicos de hacer cualquier cosa que esté más lejos de lo habitual que CRUD tonto.

Lo que he notado es que muchos de los marcos, y la mayoría / todas las publicaciones de blog son de 'edades'.

¿Es esto porque ahora es viejo y los bloggers se han mudado a la Siguiente Gran Cosa, o simplemente porque han dicho todo lo que hay que decir?

En otras palabras, ¿hay algo que me falta aquí?

Benjol
fuente
1
MVVM Frameworks para WPF se ha seguido actualizando. La programación reactiva de tema nuevo y candente [google it!] Está disponible como MVVM a través de ReactiveUI . 3 de las 10 principales descargas de wpf nuget son marcos MVVM: Prism.WPF, MvvmCross, Caliburn.Micro. AFAIK, todos estos también son compatibles con Xamarin.Forms y UWP, por lo que serán relevantes en los próximos años.
ToolmakerSteve

Respuestas:

6

MVVM no está desactualizado, pero para empezar fue exagerado. Nunca me gustó y me mantuvo en WinForms por mucho tiempo; al no poder ver el bosque por los árboles, tiré al bebé con el agua del baño. Ahora tengo WPF, y tengo la idea de no querer mezclar código con marcado, pero prefiero el estilo de Android de pegar el marcado en un lugar y desreferenciarlo con moldes en mi código (que también puedes hacer en WPF, incluso aunque nunca se puso de moda hacerlo por cualquier razón).

De esa manera, obtienes un control más preciso y no tienes que preocuparte por todo el manejo "modificado" en todas partes. Creo que esto es realmente más comprobable porque las pruebas no siempre lo detectarán si se pierde un evento "modificado".

Pierdes un poco de "declaración", lo que parece ser una tendencia en estos días (por ejemplo, si dos widgets se asignan al mismo valor, en MVVM puedes hacer eso, mientras que con el código imperativo tienes que configurar ambos individualmente) . Pero incluso con MVVM, eso solo funciona en el caso de baja categoría. Si algún widget tiene que mostrar el registro de otro widget, entonces tiene que escribir otro controlador y otro evento "onchanged" y, por lo tanto, tendrá que extender la definición de "declarative" para decir que es así.

Actualización 2015

WPF MVVM fue (r) evolutivo para su época. Como fue WPF. Pero ambos tenían sus verrugas. Plain WPF tenía demasiado incorporado (además estaba construido en XML), y era un poco difícil de manejar. (Realmente, si WPF hubiera adoptado un enfoque más de "biblioteca" en lugar de un enfoque de "marco", podría haberse convertido en algo realmente genial y todo el universo tecnológico podría ser completamente diferente ahora). La idea de MVVM fue genial, pero tratar de encajar un MVVM en WPF fue algo hacky ya que 1) C # realmente no podía expresarlo sin una gran cantidad de repeticiones, y 2) las reliquias de WinForms como ventanas emergentes modales aún prevalecían ideológicamente pero no podían ser fácilmente representado en MVVM. Por lo tanto, todo apestaba.

Dicho esto, sigue siendo la única opción realista en Windows cuando necesita transparencia o GPU para aplicaciones LOB.

Por supuesto, React ha dejado MVVM obsoleto. Me decepcionó que VS2015 no tuviera un contador nativo para eso. Por ahora todavía estamos atrapados usando WPF sin procesar (lo cual está bien, pero se siente viejo (realmente se siente tan viejo como winforms ahora), y no tiene una tonelada de funcionalidad incorporada (se siente como un proyecto genial pero abandonado) o con MVVM, que en este punto se siente como una sobrecarga para nada, ya que incluso MVVM bueno (angular 1) ha sido expuesto por sus deficiencias.

Evitaría WPF MVVM. Es una capa extra, y ya nadie se preocupa por eso.

Dax Fohl
fuente
3
Hmm ... Me doy cuenta de que es en parte una cuestión de religión, pero comencé con MVVM en WPF usando Cinch en ... Mmm. 2010? Y me gustó mucho. Desde entonces, me mudé a Caliburn, Micro y Angular y todavía me encanta, obviamente, hay muchas deficiencias en MVVM como usted dijo (notablemente, no hay una forma no hacky de hacer diálogos). MVVM puede parecer bastante detallado, pero la legibilidad general y la brecha explícita de diseño de interfaz de usuario / implementación todavía hacen que valga la pena para mí.
cwap
44
"React, por supuesto, ha hecho que MVVM sea obsoleto", aunque la mayoría de la industria usa Angular.
Den
Demasiado hasta que decida mover su aplicación de escritorio a la web y todo lo que tiene es un montón de código detrás, todo vinculado a los controles de WPF.
Bloque CAD el
1
Entonces, ¿no es React and Angular un entorno JavaScript? ¿Qué tiene eso que ver con WPF? O me estoy perdiendo algo.
Berin Loritsch
1
@BerinLoritsch: no te estás perdiendo algo. Ese párrafo es irrelevante para estas preguntas y respuestas; aparentemente Dax se ha "movido" de WPF a la programación web. Manzanas y naranjas.
ToolmakerSteve
2

Todo dicho y hecho, hay un límite de lo que puede hacer con un marco MVVM.

Están "listos" ya que WPF no se ha movido desde que Microsoft lo lanzó. Si hubiera actualizaciones de la tecnología, las bibliotecas también tendrían que actualizarse. Esto no ha sucedido.

Oded
fuente
Entonces, ¿es WPF el que está "desactualizado"? Con respecto a su primera oración: ¿es que en la vida real la interfaz de usuario y el código están demasiado entrelazados para hacer una propuesta realista, o podrían algunos ajustes en WPF haberlo convertido en el Santo Grial (o casi?)
Benjol
3
@Benjol: parece que Microsoft abandonó WPF (o al menos, ya no está actualizando la tecnología). Mi punto sobre los marcos MVVM es que, para los fines previstos, hay poco para continuar y extenderlos en una plataforma obsoleta. No sé por qué Microsoft dejó de actualizar WPF, pero dudo que sea lo que sugiera; es más probable que Windows 8 y RT le quiten los recursos a WPF.
Finalizado
18
Esto no es verdad. WPF se ha actualizado varias veces, más recientemente en .NET 4.5: msdn.microsoft.com/en-us/library/bb613588.aspx
17 de 26
3
También vale la pena señalar que MS es compatible con sus tecnologías de desarrollo para siempre. MFC, lanzado en 1992, continúa obteniendo correcciones de errores con cada paquete de lanzamiento / servicio de Visual Studio.
17 de 26
55
Incluso iría tan lejos como para afirmar que la falta de adiciones recientes a WPF es una indicación de su madurez. Además, como @Oded ya menciona, las aplicaciones de escritorio, aunque todavía tienen su valor, ahora están siendo reemplazadas por aplicaciones móviles. Aún así, vale la pena mencionar que gran parte de lo que WPF comenzó (programación declarativa de interfaz de usuario, MVVM, propiedades de dependencia y enlace de datos) ahora vive en WinRT y tecnologías web (múltiples marcos JS). Estos son valores fundamentales que han avanzado significativamente en el campo, y creo que continuarán haciéndolo durante mucho tiempo.
Sebastian