2009-05-27 17 views
19

Estamos comenzando un nuevo proyecto y estamos intentando decidir usar Windows Forms o WPF.¿Serán obsoletos los formularios de Windows a favor de WPF?

He leído algunas de las otras publicaciones de Desbordamiento Stack  , y me doy cuenta de que WPF tiene algunas ventajas en las áreas de unión de datos y apariencia, pero también tiene una curva de aprendizaje pronunciada y herramientas y controles bastante inmaduros.

Nos gustaría entender mejor si Microsoft planea detener el nuevo desarrollo de la tecnología de Windows Forms y forzar a que todos los nuevos desarrollos vayan eventualmente a WPF, o si ambas tecnologías se mantendrán y mejorarán. (¿O solo van a esperar y ver cómo funciona antes de decidirse?)

Actualmente, parece que WPF no es necesariamente la mejor manera de utilizar las aplicaciones line of business que no necesitan campanas y silbatos adicionales. en la interfaz de usuario. Sin embargo, sería bueno saber si WPF es algo que tendremos que aceptar tarde o temprano.

+0

Posible duplicado: * [WPF versus Windows Forms] (http://stackoverflow.com/questions/202079) * –

+0

Otros cinco posibles duplicados: 1. [¿Es mejor usar WPF en Windows Forms?] (Http : //stackoverflow.com/questions/640633), 2. [Migrar de Windows Forms a WPF ... ¿valió la pena?] (http://stackoverflow.com/questions/534205), 3. [Cuando ¿Windows Forms es la elección correcta frente a WPF?] (http://stackoverflow.com/questions/388711), 4. [WPF, Windows Forms u otra cosa?] (http://stackoverflow.com/questions/504014) y 5. [¿Cuáles son los beneficios de usar WPF en Windows Forms?] (http://stackoverflow.com/questions/897945). –

Respuesta

53

Esto es en parte un argumento razonado, y parcialmente una queja sincera ....

Windows Forms se basa en la tecnología de user32/GDI que ha existido desde el amanecer de Windows moderno. No va a ir a ninguna parte, en todos los sentidos de la frase: no obtendrá nuevas características; no se eliminará el soporte.

O tal vez todavía lo hará. La API de gráficos en .NET 4.0 es nueva y está escrita para GDI, no para WPF.

En general, Microsoft tiene una historia con las nuevas tecnologías que se parece a lo siguiente:

  1. inventar nuevas API.
  2. Innovar con esa API para 2 o 3 ciclos de productos.
  3. Tenga en cuenta que seguir innovando significa hacer concesiones irrazonables a la compatibilidad con versiones anteriores o tener realizaciones que la tecnología no abordaba originalmente.
  4. Inventa nueva API al envolver o abandonar la API existente. La API existente no desaparece, pero las cosas nuevas tampoco la usan.

RDO -> DAO -> ADO -> ADO.NET -> LINQ a SQL -> Entity Framework, echar en algunos ODBC ... hay un tesoro de tecnologías "muertas" y envueltos que aún están usable y todavía existe hoy. Estas son tecnologías de acceso a datos, pero se aplica la misma idea; Los marcos de interfaz de usuario duran un poco más porque son las áreas más visibles de las aplicaciones.

Si me pongo el sombrero Nostradomus, puedo decir con seguridad que cuando .NET, oh, 6.0 sale en 2015, lo que suena muy lejos, pero está lo más cerca que estamos de 2003, WPF será como " dead "como Windows Forms porque se habrá creado otra interfaz ingeniosa que suaviza todos los errores e inconvenientes aún no descubiertos de WPF. ¿A quien le importa?Todo lo que estamos diciendo hoy será obsoleto para entonces. (Algo va a tener que dar en .NET 5.0 de todos modos porque el framework se está volviendo cómicamente grande.)

En todo caso, lo que Windows Forms está buscando es que se basa en la tecnología que ha existido para bien más de una década, y esa inercia no está muriendo pronto: el navegador que estás escribiendo está usando GDI, la barra de tareas está usando GDI, tu aplicación de mensajería instantánea está usando GDI, el nuevo control Ribbon en Windows 7 está usando GDI, los $ 60 La impresora sentada en su escritorio usa un controlador de impresora GDI, las aplicaciones Windows CE que se ejecutan en su teléfono ejecutan un puerto de Windows Forms y GDI, el nuevo Visor de eventos en Windows Vista usa Windows Forms y hay una gran comunidad de componentes de terceros detrás de la plataforma de Windows Forms: WPF es un producto pequeño y de nicho que solo existe en el mundo administrado, que a su vez es más pequeño que su cou no administrado nterpart.

Para este fin, creo que todas estas discusiones de "WinForms vs. WPF" están desbordando cosas; las tecnologías no son mutuamente excluyentes o inferiores/superiores, tanto como el marketing de Microsoft podría hacernos creer, y los desarrolladores de Microsoft son lo suficientemente inteligentes como para darse cuenta de esto. Simplemente son diferentes y uno de ellos pasa a ser mayor. Si no lo consideramos periódicamente, todos hubiéramos escuchado a Gartner en 2005 y detuviéramos completamente las aplicaciones de Windows y moviéramos todo a AJAX en la Web ... con nuestras interfaces SOA ... que exponen una interfaz REST alternativa. que usan un modelo TDD DDD en ese backend ... abstraído de la base de datos por un ORM.

Tener tantas ganas de abandonar una tecnología por temor a su desaprobación solo garantiza a nuestros clientes que mantendremos un nivel constante de inexperiencia e incompetencia en las soluciones de software de programación.

WPF es parte del futuro, sin duda, pero no es EL futuro. Personalmente, estoy en la mira para ver si WPF "lo hace" en el sentido tecnológico de la interfaz de usuario que las tecnologías anteriores de acceso a datos no tienen, aunque Visual Studio lo adoptó en 2010 es una señal bastante reconfortante de que Microsoft realmente lo toma en serio. dogfooding en un producto estrella.

En resumen: si está creando una aplicación LOB, no me sentiría culpable por usar WinForms. Si necesita un escenario de diseño avanzado, la interoperabilidad de WPF siempre está disponible para usted, del mismo modo que uno mejora un sitio web regular ocasionalmente con un objeto Flash. Pero para cualquier otra cosa, le debes a tu cliente que presente una Buena Razón para hacer la transición de todo el equipo y el shell a WPF; Windows Forms tiene sus problemas, pero la mitad de la batalla con cualquier plataforma es saber cuáles son los problemas y las limitaciones que son, y la mayor parte del mundo (incluido Microsoft) todavía está aprendiendo sobre WPF.

+0

¡Gran respuesta! En cualquier caso, creo que necesito entrar en WPF y no quiero "apostar" un cronograma de proyecto para aprender todo de una vez. Lo que quiero decir es que solo tengo algunos controles de WPF en un Winform, a menos que el cliente comprenda los riesgos y aún quiera avanzar con la nueva tecnología para obtener sus beneficios potenciales. – alchemical

+0

Gran publicación. WPF tiene una curva de aprendizaje bastante empinada, ya que hace cosas significativamente diferentes de WinForms (el enlace de datos es diferente, el diseño es diferente, etc.). Pero tiene una funcionalidad poderosa una vez que te acostumbras. –

+0

Además, debido a la interoperabilidad entre los dos, si tiene una situación específica en una aplicación que se presta a WPF, puede alojarla y usarla en ese lugar mientras se queda con WinForms en el resto. Nunca entendí ninguna de las dos cosas, o argumentos en este contexto. Use lo que funciona mejor en cada caso, y MS ha tenido la amabilidad de realmente habilitar potentes escenarios de combinación y compatibilidad con WinForms y WPF. :) –

1

Creo que Windows Forms continuará siendo mantenido por Microsoft, pero mejorado solo en pequeñas formas. Todas las innovaciones nuevas irán a WPF. Windows Forms está en una posición similar a LINQ to SQL. LINQ   a   SQL es un compacto, rápido y compacto ORM que es impresionante, pero Microsoft está lanzando su peso detrás del Entity Framework.

Windows Forms es ideal para lo que es, y para qué se utiliza, que es aplicaciones pequeñas y bien ajustadas. Todavía le quedan muchos años de vida.

Si desea una aplicación que (más) fácilmente realice un puerto entre una interfaz web, una interfaz WPF o una interfaz Silverlight (o incluso una Flex), Windows Forms probablemente no sea para usted. Estas otras interfaces utilizan el marcado basado en estándares y una arquitectura que se presta mejor para el desarrollo empresarial.

+2

WinForms es perfectamente capaz de utilizar WCF, servicios web y bases de datos empresariales. Esa es una declaración bastante audaz. Se ha utilizado para alimentar algunas aplicaciones bastante grandes durante muchos años, y estoy seguro de que seguirá utilizándose. Estoy de acuerdo (principalmente) con tu primer párrafo, pero sinceramente creo que el segundo párrafo es bastante inexacto. –

+2

Gracias por el voto de no confianza Scott. Por supuesto, Winforms es capaz de desarrollar empresas. La verdadera pregunta es, ¿lo desea, dado que Microsoft está poniendo todo su peso detrás de WPF? –

+1

Si no necesita la funcionalidad adicional, no hay razón para no hacerlo. WinForms todavía tiene una curva de aprendizaje mucho más superficial, y no todos tienen un diseñador trabajando para ellos. –

2

No me preocuparía demasiado acerca del soporte a largo plazo. WPF puede estar recibiendo todo el amor últimamente, pero hay mucho código de WinForms para abandonar el soporte. Después de todo, incluso MFC sigue recibiendo actualizaciones con cada versión de Visual Studio.

0

Fui a un campo de vista previa de WPF en Redmond hace un par de años, y le hice la misma pregunta a una de las personas que trabajan en Crossbow (WPF/Windows Forms interopera). Su respuesta fue que Windows Forms será compatible en el futuro previsible, pero no podría garantizarlo.

Dado que, creo que estará bien basando su aplicación en Windows Forms sabiendo que tendrá algún nivel de soporte para la próxima versión o dos de .NET (por ejemplo, 3-5 años).

Apostaría personalmente más cerca de 10 años teniendo en cuenta el soporte continuo de Microsoft para Win32. Es posible que no obtenga un montón de nuevas funciones con cada versión, pero tampoco se descartará.

En cualquier caso, estaría más preocupado con el cambio de las tecnologías de cliente enriquecido a las tecnologías basadas en web de Microsoft, pero no lo suficiente como para ignorar las oportunidades de crear aplicaciones atractivas en ambos casos.

0

Ciertamente no llamaría a WinForms muerto ... pero tampoco escribiría un nuevo proyecto en él. Escribiría todos los proyectos nuevos usando WPF por una miríada de razones. Lo más importante es que si usa WPF/XAML, sus esfuerzos de migración a Silverlight serán mucho más fáciles.

+0

La migración a Silverlight suena bien, pero la verdad es que la mayoría de las aplicaciones internas de Windows que creamos son ventanas en lugar de web una razón, y no anticipamos la necesidad de portarlos. Como dicen, IAGH. – alchemical

+0

Simplemente le da más flexibilidad ... eso es todo. –

+0

Entonces, dos años después, la posibilidad de llevar a puerto a Silverlight no parece tan atractiva ahora que Microsoft básicamente la está abandonando para HTML5 y Windows 8. Es difícil planificar el futuro. – DOK

4

Política de soporte de Microsoft para.NET Framework y todas las clases dentro de él son 5 + 5: 5 años de soporte principal después de un lanzamiento, y luego hay 5 años de soporte extendido disponibles, o una tarifa.

Con la actualización de .NET 4.0, incluyendo todas las cosas de WinForms, lanzada en 2009, obtendrá 5 años de soporte principal, hasta 2014 para cualquier aplicación WinForms basada en .NET 4.0.

Es probable que todo lo que venga después .NET 4.0 también incluya WinForms, en cuyo caso el reloj se restablece.

Esta política 5 + 5 se aplica a todo el software de infraestructura relacionado con la empresa: Windows, Servidor Windows, Servidor SQL, Visual Studio, .NET, y más.

El punto es que no tendrá que preocuparse por la falta de soporte para WinForms.

Pero los carteles anteriores son correctos, los avances van a WPF.

5

WinForms no estará en desuso hasta que Win32 sea ... lo que podría ser bastante a veces.

(recordando que WinForms es básicamente una abstracción sobre Win32)

WPF, por otro lado tiene pocas dependencias directas sobre Win32 tan potencialmente podrían formar la base de un "nuevo comienzo" capa de interfaz de usuario en una versión futura de ventanas. En ese momento, me imagino que Win32 (y por lo tanto WinForms) se abandonará por completo y solo estará disponible a través de la virtualización. Como ya he dicho que esto podría ser un largo camino fuera :)

+0

Debo decir que el mejor modelo de desaprobación que he visto hasta ahora es "convertirlo en código abierto". –

Cuestiones relacionadas