c# - tutorial - wpf vs winforms
¿Cuáles son los obstáculos más grandes para superar la migración de Winforms a WPF? (8)
He estado desarrollando aplicaciones Winforms en C # durante algunos años y he estado interesado en mover el desarrollo futuro hacia WPF, principalmente debido a las cosas positivas que he estado escuchando al respecto. Pero me pregunto qué clase de obstáculos han tenido que superar otros cuando migraron a WPF. ¿Hubo un golpe significativo a su productividad o algún problema en particular que encontró desafiante?
- No puedes desactivar el anti-alias .
- Sus usuarios necesitan Vista o XP SP2 con .net 3.x framework.
- Si quieres usar winforms, ten en cuenta Air Space (una solución para D3D aquí ).
Estos son los principales problemas para mí. Aparte de eso, estoy totalmente de acuerdo, es mucho más de lo que parece.
Bueno, para mí fue el hecho de que los controles en WPF se comportan de manera diferente a los de WPF (por ejemplo, cuando se trata de posicionamiento en el formulario). Debe comprender la diferencia tan pronto como sea posible para usarla de manera exitosa y productiva.
El sitio web de Microsoft Learning tiene una introducción útil, que creo que está disponible gratis si tiene una cuenta Microsoft Passport https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=85488
En mi experiencia ciertamente limitada con WPF, los obstáculos más grandes incluyen una revisión completa de mi modelo mental sobre cómo se construyen las UI y la nueva terminología que debe aprenderse como resultado de eso. Sin embargo, es posible que a otros les resulte más fácil adaptarse al modelo. Puedo ver cómo alguien que proviene de las mejores prácticas en el mundo web encontraría la transición mucho más natural.
Definitivamente hubo un impacto significativo en mi productividad (tan significativo que aún no me siento cómodo con la idea de ir a ver a mi empleador y decir "déjame hacer esto con WPF en lugar de Winforms"). No creo que nunca llegue allí, pero necesito desarrollar un poco de comodidad adicional con la tecnología a través de la práctica en mi tiempo personal.
No me encontré con ningún problema en particular que sea más desafiante que otros. Creo que el WPF Unleashed de Adam Nathan fue mencionado en otra parte, y definitivamente es una lectura que vale la pena. También escuché cosas buenas sobre el libro de Charles Petzold , aunque personalmente no puedo responder.
No estoy seguro de poder darle un solo obstáculo, porque es una desviación completa de WinForms. Mi sugerencia es obtener WPF Unleashed de Adam Nathan, olvidarse de todo lo que sabes sobre la construcción de UI con cualquier tecnología anterior (Winforms, MFC, Java) y comenzar de nuevo en el primer cuadro.
Si tratas de hacerlo de otra forma, te provocará una gran frustración.
ETA: la razón por la que digo que solo empiece de cero es porque a veces es más fácil aprender nuevos conceptos si se ingresa con un borrón y cuenta nueva. En el pasado, descubrí que puedo ser mi peor enemigo cuando se trata de aprender algo nuevo si trato de llevar el conocimiento de la tecnología a la tecnología (por ejemplo, pensar que hacer servicios web de asmx durante años me impide leer la primera pareja capítulos de un libro de WCF).
Estoy en el mismo barco. He estado programando usando winforms por tanto tiempo. Ahora sigo decidido que voy a aprender WPF y comenzar a hacer todo con él. Lo más difícil para mí es acostumbrarme a utilizar XAML principalmente para la interfaz de usuario en lugar del código C #, y muchas de las propiedades son diferentes en WPF. (IE: para cambiar el texto de una etiqueta, debe cambiar la propiedad del Contenido). Así que mi mayor problema es sacar mi cabeza de las formas de ganar y ponerme en una forma completamente nueva de pensar.
Si la aplicación WinForms tiene una arquitectura de modelo de objeto adecuada (más como una arquitectura de modelo MVC), creo que no llevará mucho tiempo migrar su interfaz de usuario a WPF. WPF ha organizado sus elementos visuales de forma jerárquica (VisualTree) y RoutedEvents y RoutedCommands son conceptos totalmente nuevos en WPF. y, obviamente, hay más productos como DataTemplate / Controltemplate, todos en el nivel XAML. Todo esto hace una manera muy poderosa y fácil de lograr una gran experiencia de usuario. Así que mi punto principal aquí es que puedes esperar que tu modelo de Objetos sea reutilizable (con algunas modificaciones) en WPF y todo lo demás en el proyecto de Winforms debe descartarse. Por supuesto, no es necesario modificar todas las otras capas (Comunication Layer / DataLayer)
Incluso con más de 20 años de experiencia, encontré que WPF tiene una curva de aprendizaje abrupta. Intenté hacer mi último proyecto utilizando WPF, pero la falta de controles integrados (como NumericUpDown, por ejemplo) y problemas para hacer que DataBinding funcione con un objeto comercial me obligó a recurrir a Winforms para este proyecto, pero espero poder hacer futuros proyectos con eso. Casi todo el código que escribí (frente a lo que el diseñador generó) fue reutilizable cuando cambié entre WPF y Winforms.