2010-03-20 8 views
9

Estamos debatiendo si nuestro futuro desarrollo de la interfaz de usuario de Windows debe ser WinForms o WPF. ¿Cómo han tomado esta decisión algunos de ustedes? La mayoría de nuestras aplicaciones son aplicaciones de LOB, y no estoy seguro de ver un beneficio claro y abrumador para WPF para este tipo de aplicaciones. Sin embargo, mi conocimiento de WPF es limitado. También estoy un poco preocupado de que WPF esté en boga por un par de años más y luego Microsoft se cansará de eso y empujará algo más sobre nosotros. Supongo que un argumento en contra de esto es el hecho de que Visual Studio 2010 es una aplicación WPF.¿Es WPF una buena opción para desarrollar interfaces de usuario de líneas de negocio?

Gracias.

+4

"También estoy un poco preocupado de que WPF esté de moda por un par de años más y luego Microsoft se cansará de eso". Por otra parte, Microsoft ya está "cansado" de Windows Forms. – itowlson

+1

@itowlson: no hay problema. Me gusta mucho SO, pero algunas personas aquí necesitan una vida. ¿Por qué las personas aquí son tan rápidas para cerrar preguntas? ¿Obtienes puntos cuando votas para cerrar una pregunta? No lo entiendo –

Respuesta

13

Hay muchos factores a considerar aquí.

razones para no elegir WPF:

  • Actualmente cuenta con menos apoyo que WinForms para los controles de línea de negocio comunes como selectores de fecha, widgets de entrada de números, y así sucesivamente, aunque esto está mejorando a través de la WPF Toolkit, en WPF 4 y a través de proveedores de control de terceros.
  • Las herramientas no son aptas para besar las botas del diseñador de Windows Forms. (Aunque para ser justos esto se debe en parte a que las herramientas tienen que hacer frente a formas mucho más sofisticadas de construir vistas. Y Blend definitivamente está llegando).
  • Un modelo mental muy diferente a Windows Forms. Para obtener beneficios reales de WPF, necesita pensar de una manera muy diferente a la que está acostumbrado. Por lo tanto, puede haber una curva de aprendizaje sustancial, no solo en términos de aprendizaje de la tecnología, sino en términos de internalización de las expresiones idiomáticas y patrones (aunque ahora hay muchos más recursos de la comunidad en torno al WPF idiomático de lo que solía ser).

Razones para elegir WPF:

  • soporte arquitectónico decente. WPF (si lo haces bien) tiene una separación decente entre código y UI integrada, lo que hace que las aplicaciones WPF sean mucho más fáciles de probar y evolucionar.
  • Mayor flexibilidad. Por ejemplo, si necesita una visualización de mapa simple, puede compilarla en un par de horas a partir de un ListBox, en lugar de tener que investigar y comprar un componente de un tercero o escribir un control de mapa desde cero. La visualización simple de datos es una característica clave para WPF.
  • WinForms es un callejón sin salida. No verá ninguna mejora de Microsoft, y los proveedores de control ya están empezando a cambiar a WPF a medida que se sature el mercado de WinForms.
  • La mayor parte de su experiencia WPF puede trasladarse a Silverlight, que (a) le brinda flexibilidad para llevar sus aplicaciones al navegador y al teléfono, y (b) le da confianza adicional de que Microsoft no perderá interés, incluso si se "cansan" de WPF, han demostrado un fuerte compromiso con Silverlight.

Personalmente, si estuviera comenzando una aplicación de escritorio de Windows ahora, elegiría WPF. Sin embargo, ya he escalado la curva de aprendizaje. Para un equipo que no tiene experiencia en WPF, el costo de asumirlo debe ser un factor mayor de lo que es para mí.

+0

No estoy seguro de lo que quiere decir acerca de las herramientas, pero de lo contrario estoy de acuerdo. –

+0

Estaba pensando en el diseñador de Visual Studio WPF, que me parece lento, con funciones limitadas e inexorablemente defectuoso, hasta el punto en que siempre termino elaborando XAML a mano, en lugar de luchar con sus limitaciones. Compare eso con el diseñador de WinForms con sus 8 años de combate y su arsenal de técnicas útiles como etiquetas inteligentes, verbos personalizados, etc. Dicho esto, si usa herramientas de mezcla y/o de terceros, las cosas son mucho mejores. Y parece que tu experiencia es diferente a la mía, así que es justo, ¡tal vez soy demasiado duro ...! – itowlson

+4

El diseñador de VS WPF es lo suficientemente malo como para haberlo apagado hace meses. El impacto que esto ha tenido en mi capacidad para diseñar y construir buenas IU ha resultado insignificante. –

11

Una cosa a tener en cuenta es Silverlight. ¿Es posible que desee escribir su aplicación para que se ejecute desde un navegador en el futuro, o posiblemente incluso desde un dispositivo con Windows Phone 7? Si bien Silverlight y WPF no son lo mismo, son extremadamente similares. Este sería mi principal argumento "a prueba de futuro" a favor de WPF.

Personalmente, me gusta el modelo de composición de WPF, así como una forma declarativa de representar la interfaz de usuario y un mejor sistema de diseño que WinForms. No es que sea un tipo UI, de verdad.

+0

@Jon: he considerado Silverlight, pero no hay ningún beneficio real para nosotros al escribir para el navegador. –

+0

+1 para la forma declarativa de representar la IU. Para mí, este es el mayor paso sobre WinForms, hasta el punto en que realmente no me gusta tener que trabajar en WinForms nuevamente. –

+2

@Downvoter: ¿me gustaría comentar? –

1

WPF parece listo para reemplazar Winforms, al menos en dispositivos con Windows Mobile, con un desarrollo futuro centrado en Silverlight (un spinoff de WPF) y XNA.

En un mercado abierto, tiene sentido cubrir WPF si desea mantenerse atractivo para un mercado de reclutamiento más amplio.

+0

¿No estoy seguro de por qué esto atrajo un voto negativo anónimo? –

1

Me lo he preguntado yo mismo. Pero el hecho de que VS2010, como dijiste, hace un gran uso de WPF, me dice que Microsoft está tratando de decirle al mundo que no es solo otra moda de MS, sino que permanecerá por un tiempo.

1

Creo que MS está enviando un mensaje claro de que WPF y Silverlight son el presente y el futuro. El PM de Winforms lo ha dicho tanto. Además, se espera que WPF y Silverlight converjan en el futuro.

Pasamos por este mismo dilema hace 6 meses en mi oficina. Estábamos comenzando una gran aplicación LOB y nadie en el equipo tenía mucha experiencia en WPF o Winforms. Siendo ese el caso, no pudimos encontrar una razón abrumadora para ir con Winforms y sentimos que WPF nos ofreció una separación mucho más clara de las preocupaciones. Decidimos ir con WPF y usar PRISM como marco de aplicación. 6 meses después, creo que tomamos la decisión correcta.

+1

@Daniel, tengo curiosidad sobre por qué crees que tomaste la decisión correcta. ¿Qué beneficio tangible ves de ir con WPF? –

+1

Permítanme expresarlo de otra manera: no nos arrepentimos de nuestra decisión. No hay nada acerca de nuestra aplicación que no pudiéramos haber hecho con Winforms, pero creo que nuestro diseño es mucho más limpio de lo que hubiera sido debido principalmente al enlace de datos en WPF. Construir pantallas con áreas de contenido dinámico es mucho más fácil en WPF. MVVM ha sido una gran victoria para nosotros, y también lo ha hecho una vez. Además, siento que estamos aprendiendo algunas habilidades que darán frutos si alguna vez necesitamos entregar algo con Silverlight. –

0

Siendo que esencialmente abandonaron Winddows Mobile para Windows Phone 7, que solo utilizará WPF y XNA como su capa principal de IU, tendría que decir que sí. Uno podría incluso considerar este movimiento como un expiriment para el sistema operativo Windows mucho más ampliamente implementado. Eso y la mayoría de los usuarios adoran los ojos embotados en mi humilde opinión.

1

Conociendo ambos, realmente espero que WPF sea el futuro. Windows Forms tiene puntos de dolor increíbles, p. con respecto a Enlace de datos, y es una película bastante delgada de .NET en muchas cosas existentes. Cuando tuve que depurar en clases como BindingSource, me asustaba muchísimo. Ahora, yo no sé cómo se ven las clases de WPF en el interior, pero Microsoft está obligado a tener aprendido algo entre 2001 y 2006.

Me encanta WPF debido

  • styling
  • plantillas de datos
  • datos de la clase y excelentes primer soporte de unión
  • interfaz de usuario declarativa configuración
  • propiedades atached
  • ...

Solo espero que Microsoft haga un mayor uso interno de esta tecnología de IU, reduciendo así sus debilidades que tienen que ver principalmente con el rendimiento. WPF es bastante exigente. En VS2010 espero ver diseñadores que muestren el poder de la interfaz de usuario (el diseñador de esquemas XML en el Beta ya se veía bastante útil). Creo que una aplicación como MS Word se beneficiaría mucho de todas las capacidades de transformación de WPF.

+0

Lista de verificación agradable de las características que son de valor práctico real para los desarrolladores de LOB. La creación de plantillas en controles de elementos cambia las reglas del juego en comparación con WinForms. – itowlson

5

WPF es un cambio de juego para mí. La aplicación insignia de mi empresa es un programa WinForms cuya interfaz de usuario se compila dinámicamente en tiempo de ejecución a partir de los metadatos. Fue todo un esfuerzo de seis meses, en total, para obtener la interfaz de usuario, incluso estable, y mucho menos atractivo. Todavía hay algunos errores que no he podido solucionar, en gran parte porque el código de la interfaz de usuario está irremediablemente entrelazado con el código del modelo de datos.Y no me hagas comenzar a usar los mangos de las ventanas.

Ahora que el sistema ha estado en producción durante un año más o menos, los clientes vienen a mí con solicitudes como, "Nos gustaría poder reordenar la información en esta pantalla arrastrando y soltando" y "Puede obtenemos esta información para mostrar en una cuadrícula en esta parte de esta pestaña? " y - mi favorito - "¿Podemos obtener el corrector ortográfico y el texto automático?" Esas solicitudes van a una cartera de pedidos que se está demorando bastante.

Me ha tomado bastante tiempo descubrir cómo refabricar el diseño de la aplicación para que pueda soportar una interfaz de usuario de WPF. (De hecho, eso es considerable subestimación. He estado lidiando con esto de manera intermitente durante un año y medio, y solo comencé a sentirme atraído una vez que rompí los libros de WPF de los que estaba trabajando y aprendí MVVM .) Una vez que lo hice, los resultados son espectaculares.

El código es mucho más simple. Hay mucha menos lógica para depurar. Todo en la interfaz de usuario es mucho más rápido, lo cual es importante porque la razón principal por la cual esta es una aplicación de escritorio en primer lugar es que necesitábamos una interfaz de usuario muy sensible. Mi programa puede crear miles de controles de UI sin tener que preocuparse por los identificadores de ventanas. La facilidad con la que puedo cambiar la apariencia del programa es asombroso.

(Un ejemplo: la interfaz de usuario presenta DataRow s con una variedad de plantillas. Dado que una pantalla determinada puede tener docenas de filas y el cursor es algo pequeño, es útil para que el usuario sepa, de un vistazo, en qué fila está el cursor. Me tomó diez minutos implementar los estilos que ahora hacen que esta accesibilidad visual esté disponible en todas partes en mi aplicación. Eso es menos tiempo de lo que me llevaría a estimar esa característica si quisiera agrégalo a mi aplicación WinForms. De acuerdo, habría demorado mucho más tiempo si no se hubiera podido hacer agregando dos estilos. WPF no es realmente mágico.)

¿Hay inconvenientes? Como a la Sra. Palin le gusta decir, te apuesto. Examine algunas de las preguntas que hice en SO - la que está sobre how a no-op value converter changed the behavior of data binding es buena. Todo el enfoque de depurar enlaces es bastante frustrante, especialmente porque es muy fácil tener errores vinculantes y ni siquiera saberlo. (Ahora mantengo mi ventana de Salida en la pantalla en todo momento solo para que si hay algún error vinculante mientras estoy probando, el movimiento de los mensajes que se registran me llame la atención.) Sería bueno poder obtener una traza de pila real cuando su ventana arroja un XamlParseException. No me hagas hablar, podría hablar toda la noche.

¡Y las herramientas! Las herramientas visuales de Visual Studio para construir UI WPF son completamente inútiles para mí. Tengo Blend, y lo he usado para volver a crear la plantilla de un control, pero en general me parece que usar Blend es como intentar correr a través de un pantano lleno de tapacubos y alambre de empacado. Estoy seguro de que es realmente increíble si todo lo que sabes es Blend, pero si lo que aprendiste primero es el modelo de objetos de WPF y XAML, el comportamiento de Blend es bastante misterioso. Los editores de XML en Visual Studio y Kaxaml me dan tristeza, y la funcionalidad WFF de Resharper es, digamos, un trabajo en progreso. Mucho, mucho prefiero las herramientas para WinForms que me permiten construir sin problemas y rápidamente el lento, peculiar e inamovible nido de códigos que estoy empezando a detestar.

1

WPF es un gran marco para la creación de aplicaciones. Y cuando lo combina con una buena arquitectura de GUI, como MVC, MVP o MVVM, es brillante a la hora de crear aplicaciones de línea de negocios de aspecto interesante con más pizazz que su aplicación WinForms estándar.

XAML por el contrario es el primo feo que viene con WPF. El problema principal con XAML es la herramienta. Las herramientas son peores que inexistentes, porque hacen que la gente piense que hay un diseñador de WPF como WinForms, cuando de hecho la mayoría de los desarrolladores que conozco usan el equivalente del bloc de notas para desarrollar su XAML.

El otro problema de herramientas con XAML es el compilador. XAML es solo un poco mejor que las cadenas mágicas. El compilador no puede recoger la mayoría de los errores que comete en XAML, y algunos errores ni siquiera bloquearán su aplicación. En cambio, WPF imprimirá un mensaje de error en su salida y continuará.

0

En cuanto a las herramientas, admitiré que construir WPF y Silverlight Apps en el diseñador de Visual Studio 2008 ha requerido un poco de experiencia para hacerlo bien. Sin embargo, espero que le eches un vistazo al diseñador mejorado en Visual Studio 2010; tiene muchas más características que esperamos tengan sentido para el desarrollador de Windows Forms para crear formularios comerciales, ya sea en Silverlight o WPF.

Salida estos videos: Data Binding and Forms Tools Styling Tools Futures New Features in Beta 2

y obtener el Release Candidate aquí:

El equipo tiene un nuevo Blog here

espero que encuentres esta información útil - si ya has probado Visual Studio 2010, me encantaría escuchar tus comentarios. Enviarme un correo a mwthomas en microsoft dot com.

Gracias Mark Wilson-Thomas Administrador Programa, WPF & Silverlight Designer, Visual Studio

0

en mi humilde opinión, Microsoft dio algunas pistas sobre su trayectoria futura mediante el desarrollo de VS 2010 en WPF.

WPF no es más, nada menos que WinForms. Tiene una forma totalmente diferente y extensible de diseño UX.

Cuestiones relacionadas