2010-01-10 34 views
12

Recientemente me he unido a un nuevo proyecto en desarrollo que desarrolla una aplicación cliente gruesa usando WPF y MVVM. He desarrollado aplicaciones en varios frameworks .NET desde 1.1 hasta 3.5 y todas las tecnologías principales; WebForms, MVC y WinForms. En todos mis proyectos he disfrutado cada minuto, pero en este proyecto siento que estoy luchando y, como tal, no lo disfruto tanto. Cuando salió .NET 3.5 en 2008, realmente disfruté aprendiendo las nuevas características del lenguaje (LINQ, MVC, Lambda Expressions, etc.) e incursioné en WPF así que no asuman que estoy en contra de aprender algo nuevo.Aprendiendo WPF y MVVM

Pero la curva de aprendizaje en este proyecto parece ser muy empinada y creo que aprender MVVM sobre WPF + la aplicación es un poco desalentador. Aunque solo he estado en el proyecto por un corto tiempo (2 semanas), realmente me gusta WPF, pero no me gusta el patrón MVVM. Mi desagrado por el patrón MVVM puede deberse a que realmente no lo entiendo y creo que tengo que escribir un montón de código de "no mejores prácticas" para hacer lo que era relativamente simple en mis días de WinForms.

Así que mi pregunta es si alguien más se enfrentó a una situación similar y ¿se quedó con MVVM o se dirigió en otra dirección arquitectónica?

Respuesta

9

He estado trabajando con WPF desde las versiones beta y nunca volvería a las formas de ganar. Para mí, MVVM es una filosofía y requiere mucho trabajo y disciplina para implementarla fielmente. Fomenta el desacople completo entre la IU y la lógica de interacción, lo que significa que no hay código detrás de lo que signifique una lógica de interacción verificable que es muy difícil de hacer con las formas de las mismas.

A diferencia de gius, le recomendaría que se quede con WPF y MVVM simples, especialmente si recién está empezando con WPF. Hay mucho que entender con MVVM y WPF, y eso solo retrasará su progreso. Pero esa es solo mi opinión.Siempre prefiero plasmar mi aprendizaje en lugar de tratar de aprender todo de una vez, de esa manera tienes el control y tienes más conocimiento sobre cómo funciona tu aplicación.

Si no lo ha hecho, así que recomiendo que lea el artículo del ms en MVVM:

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Su fantástica y es de lectura obligatoria para los miembros de mi equipo que escriben cualquier código de WPF.

No estoy seguro de cómo trabajas tú y tu equipo, pero debes preguntarte si MVVM es o no para ti. Si la prueba unitaria/prueba impulsada y la UI desacoplada es algo que ya está haciendo o es importante para usted, entonces MVVM es definitivamente un buen camino a seguir. Si su equipo está contento con la escritura de código y no ve por qué debería molestarse en desvincularse, entonces no se moleste con MVVM, ya que encontrará que lo retrasará. Personalmente, este último nunca es una opción para mí.

No dude en ponerse en contacto conmigo si tiene alguna pregunta específica sobre WPF o MVVM.

+0

Gracias por su respuesta, el enlace de MSDN es excelente. – Kane

+0

En mi experiencia, se necesita una gran cantidad de soluciones alternativas, hacks y bloat code para implementar MVVM fielmente. Desearía que ese no fuera el caso, pero ahí es donde nos encontramos actualmente. – Damien

1

Empecé a aprender WPF y me topé rápidamente con MVVM: me pareció tan bueno que me he quedado con él. Probablemente valga la pena señalar que parece haber algunas diferencias en la forma en que las personas implementan MVVM, una de las cuales es View-first o ViewModel-first. Algunos parecen ver esto como un punto del evangelio: no tengo suficiente experiencia para decidir si debería ser. Me inclino por Ver primero (por lo que View tiene una referencia a ViewModel y ViewModel tiene una referencia a Model y ninguno en la otra dirección), pero me encontré con un escenario donde la otra manera era más fácil.

¿Por qué no publicar algunas preguntas sobre los puntos específicos que considera que no son de las mejores prácticas? También podría ayudar a otros a luchar con este tema.

Otra pregunta: ¿está utilizando un marco específico para MVVM?

1

Bueno, antes de usar MVVM, usé MVC en el framework ASP.NET MVC. La arquitectura Model-view-controller es bastante obvia, así que me ayudó a cambiar mi actitud de ASP.NET y WinForms estándar.

MVVM es un poco "más difícil" de entender, pero una vez que se da cuenta de que WPF difiere de la web (usted como usuario responde a la vista, no al controlador), tiene sentido pasar de MVC a MVVM . Sugiero leer artículos sobre MVVM en la página principal de Caliburn project (columna de la izquierda, parte 3. Estudiar en MVVM) - esto me ayudó mucho.

En cuanto a las aplicaciones WPF (Silverlight), recomiendo encarecidamente que empiece a crear aplicaciones justo encima de PRISM (Composite WPF) y/o Caliburn, aunque puede ser confuso desde el principio, aún así es una opción mucho mejor que con vainilla WPF (hablando de prácticas que te obligan a usar). Pero asegúrese de que una vez que haya terminado su primera aplicación WPF, desee volver a escribir desde cero. Pero así es como funciona cuando aprendes una nueva tecnología.

1

MVVM es simplemente un patrón de diseño . No lo necesita a menos que se sienta cómodo con WPF. Si está aprendiendo WPF, le sugiero que primero complete el libro, luego aprenda sobre MVVM. Si intenta aprender ambos, intentaría implementar MVVM en cada aplicación WPF simple o no entendería alguna característica de WPF que utiliza MVVM.

P.S: Llegué a esta conclusión cuando me enfrenté al problema yo mismo. Todavía no entiendo cómo ViewModel puede crear una nueva Vista si no sabe nada al respecto.

+0

Solo deja que la vista lo haga con comandos. –

2

me he enfrentado a una situación similar, y la ruta que decidí ir fue:

  • Use ViewModels de mis puntos de vista, pero evitar algunos pureza MVVM, al igual que sus comportamientos asociados (que me parece tonto y torpe)
  • Use Magellan MVC framework, que se ajustan mejor a mi modelo mental sobre cómo deben comportarse las aplicaciones.
0

WPF tiene una curva de aprendizaje empinada. Lo mismo ocurre con MVVM. Lo que explica las sensaciones que tienes: entender a XAML y MVVM y tratando de producir una aplicación del mundo real al mismo tiempo es una tarea desalentadora.

He entrenado a desarrolladores de .NET como usted y les he ayudado a superar esa curva de aprendizaje rápidamente. Entonces lleno que el entrenamiento en un libro de lectura rápida que se puede obtener aquí:

Es también disponible en Amazon y los principales sitios de libros.

Lo siento si eso suena como publicidad propia, pero realmente creo que este libro es 100% apropiado para su perfil.