Windows Presentation Foundation. El final de Windows Forms…

Últimamente cada vez leo más artículos que hablan sobre las ventajas de construir aplicaciones en WPF frente a la utilización de Windows Forms, para aquellos que no lo conozcan, WPF es una tecnología que nos permite aprovechar al máximo las características gráficas de nuestros equipos ofreciendo interfaces más ricas de las que estamos acostumbrados. El objetivo de Windows Presentation Foundation es proporcionar avances en el entorno de Windows que permitan crear interfaces que incorporen documentos, componentes multimedia, gráficos bidimensionales y tridimensionales, animaciones, características tipo web, etc.

Sobre la afirmación de que WPF marcará el final de Windows Forms, me parece arriesgada, aunque la evolución que está teniendo esta tecnología frente a Windows Forms no solamente desde Microsoft sino de la mayor parte de empresas de controles de terceros, me hace pensar hasta que punto es cierta esta afirmación.

En los últimos años Microsoft viene acostumbrado a sacar nuevas tecnologías casi por arte de magia y a relegar otras de la misma forma, lo cierto es que el cambio no es tan fácil como se pueda pensar, la adopción de una tecnología como WPF, cambia por completo la forma habitual que teníamos para desarrollar aplicaciones Windows Forms. Los diseñadores gráficos pasan a formar parte casi indispensable de los equipos de desarrollo si queremos sacarle todo el partido a esta tecnologia, si bien es cierto que la mayor parte de empresas dedicadas a desarrollar controles de terceros como Infragistics, DevExpress y otros están apostando seriamente por esta tecnologia  con la inclusión de Skins y controles que nos facilitaran mucho esta labor.

En mi opinión son muy pocos los sistemas de gestión que requieran hacer un uso intensivo de la interface gráfica, sin embargo, en algunos ámbitos como científico o el médico, las capacidades 3D y las animaciones permiten obtener información de forma más eficaz. También es cierto que la mayor parte de los sistemas de gestión actuales suelen tener carencias precisamente en este apartado.

Glenn Block de Microsoft afirma que WPF es de largo la solución recomendada para el desarrollo de aplicaciones de línea de negocio para un futuro inmediato.

Algunas ventajas de WPF son las siguientes:

  • Estilo potente y estructurado.
  • Facilidad para crear estilos y aspectos.
  • Soporta Windows Forms.
  • Es el futuro para el desarrollo de aplicaciones de Vista.
  • Tiene capacidad de reutilización del código existente.
  • Databinding avanzado, que permite enlazar datos con cualquier control.
  • Programación declarativa vs procedural.
  • Capacidades avanzadas para la Web. (WPF/E)
  • Apuesta clara de Microsoft para su implantación.

Desventajas

  • En muchas ocasiones vamos a necesitar el trabajo de diseñadores gráficos para beneficiarnos del potencial de WPF, lógicamente este será un coste que debemos repercutir a nuestros clientes.
  • Modificar código en AXML es un infierno o al menos para mí es bastante complicado.
  • Los requerimientos de los equipos en el apartado gráfico serán mayores, deben soportar DirectX y disponer de una tarjeta gráfica con suficiente capacidad, sin embargo, estos son la mayoría de los pc´s de hoy en día, aunque todavía existen muchos equipos, sobre todo portátiles que no soportan del todo estos requerimientos.
  • Al tratarse de la primera versión, tiene muchos aspectos en los que mejorar sobre todo en el apartado de los diseñadores de formularios y entorno gráficos. De hecho se encuentra aún en fase de desarrollo.
  • La curva de aprendizaje es alta.

¿ Debo migrar mi apliación a WPF ?

No hace mucho tiempo que Miguel Jiménez solicitó que le enviase algunos formularios de la aplicación actual que estábamos desarrollando para ver la posibilidad de realizar un proyecto paralelo de migración a WPF, lógicamente le envié algunos de los formularios más grandes y complejos que teníamos, su respuesta fue: buff estas pantallas con tantos controles, pestañas y funcionalidad para realizarlos con WPF, sería un trabajo demasiado arduo, no se hasta que punto merecerá la pena, tendríamos que dividir algunos para integrarlos en WPF, esto me hace pensar, si WPF está lo suficientemente maduro para abordar sistemas de gestión complejos y si realmente merece la pena realizar este cambio sin una necesidad comercial seria. Creo que existen muchos desarrolladores migrando sus aplicaciones a WPF, sin una razón que justifique la adopción de esta nueva tecnología, todavía son pocos los entornos de gestión empresarial que necesiten verdaderamente un cambio de arquitectura y que son incapaces de articular una necesidad comercial.

Lo cierto es que algunas de las interfaces que he probado son verdaderamente impresionantes, no solo en cuando a mejora del interface gráfico, la velocidad de refresco y la interacción con el usuario mejoran notablemente. Como ejemplo os dejo un par de pantallas de los controles que usamos.

image

image

image

¿ Cuanto apoyo le queda a Windows Forms ?, he leído en alguna parte que Microsoft solo está apostando por WPF ahora y manteniendo Windows Forms, si esto es cierto, WinForms esta condenado a desaparecer y deberemos centrarnos poco a poco en la adopción de WPF, por otra parte el número de aplicaciones existentes hoy en día, hará que el soporte de WinForms persista durante mucho tiempo.

En mi opinión WPF es una nueva tecnología que se está asentando en estos momentos y como tal, no carente de problemas. Su curva de aprendizaje para aquellos que venimos de Winforms es alta. Quizás el verdadero reto no este en aprender como usar esta nueva tecnología, sino en pensar cómo, a través de ella, podemos enriquecer las aplicaciones para alcanzar determinados objetivos, como mejorar la productividad, mejorar la interacción con el usuario, aumentar la satisfacción, mejorar el rendimiento, etc. No debemos olvidar que la adopción de WPF, tendra un coste muy alto si tenemos que incorporar diseñadores gráficos a nuestros equipos de desarrollo. En cualquier caso parece que Microsoft ha realizado una apuesta clara por la utilización de WPF, su adopción en nuevas herramientas como Visual Studio 2010 y el nuevo diseñador de WorkFlow así lo demuestran y que además de confirmarse, ya habria abandonado la mejora de Winforms, con lo que de una forma u otra estaríamos abocados a utilizarla tarde o temprando.

Por otra parte me quedan varias preguntas sin contestar que creo que son comunes a las de muchos desarrolladores y que me gustaría con vuestra ayuda resolver:

¿ Deberiamos comenzar a estudiar a fondo WPF, para la adopción de esta tecnología en un futuro cercano ?

Si tuvieraís que realizar un nuevo proyecto similar a los anteriores desarrollados en Windows Forms, ¿ utilizarías WPF o esperarías a nuevas versiones ?

¿ Sera WPF el sustituto definitivo de Windows Forms o tan solo una nueva tecnología para realizar programas diferentes ?

¿ Sera WPF una tecnología más, que quizas en poco tiempo se vea relegada por otras como Silverlight o que debido a su alta curva de aprendizaje o sus costes no lograra asentarse lo suficiente como para convertirse en el sustituto de Windows Forms ?

¿ Esta lista esta tecnologia para abordar desarrollos similares a los que venimos realizando en Windows Forms ?

¿ Si no tenemos ni idea sobre diseño gráfico o nuestro equipo no puede disponer de diseñadores, podremos sacarle partido a WPF ?, ¿ Tiene sentido utilizar WPF en estos casos ?

En fin, quizas os dejo mas preguntas que respuestas, pero confio que entre todos conformemos una idea mas clara de lo que es WPF y de lo que va a suponer esta tecnología en los próximos años.

 

Pd. Y pensar que todo esto comenzo con CSI….

15 comentarios en “Windows Presentation Foundation. El final de Windows Forms…”

  1. Así como WPF será el final de WindowsForms, Silverlight (v3…) será el final de WPF, más ahora que tiene la feature “out of browser”, por eso considero mejor para quien quiere actualizarse incluso en aplicaciones de escritorio, arrancar de una vez con Silverlight.

  2. Quiero hacerte dos preguntas, la del millon y la del millon y medio. Pensamos adoptar WPF, de hecho estoy preparando el 70-502 y tenemos nuestros productos estandares en VB6, ahora estamos dando el salto a .NET en plan bestia y nos rondan dos cosas la cabeza ¿Con WPF podremos tener la misma aplicación para escritorio y para WEB? ¿Que requisitos puede tener esta am,biciosa idea?

    ¿Tu sabrias darnosa tu opinión al respecto?

    Un saludo y enhorabuena por tu aclarativo post

  3. Muy buen post Juan…yo no sé mucho de WPF, pero me voy a atrever con la preguna de Julio. Mi opinión respecto a si con WPF podemos tener una aplicación para escritorio y para la WEB…la respuesta es que depende. Si sólo quieres tener una única interfaz en WPF, la única opción que tienes es que WPF te permite el formato XBAP, es decir, que la aplicación se pueda ejecutar desde el navegador…el problema es que siempre necesitarás el framework en cliente….la otra alternativa es tener una versión de UI en WPF para la aplicación de escritorio y otra en Silverlight para web….o bien como dice Jorge esperar a Silverlight 3 (que está a punto de caer).

    Un saludo

    JC’s

  4. En respuesta a Julio te digo que sí, podrás tener la misma aplicación tanto en escritorio como en Web. La única pega que yo le encuentro es que a día de hoy WPF es un verdadero quebradero de cabeza el uso de los UserControl ya que está muy verde (sin hablar de la locura que es el uso del XAML a pelo). El acceso a ellos y el ‘pintado’ dentro de un Canvas según la aplicación es o muy sencillo o muy tedioso, dependiendo del grosor de esta. Por lo demás basta con cambiarle a la pantalla inicial desarrollada para escritorio el tipo de Window a Page. Ya que, en uso con BBDD, atacan al mismo IIS y sucedáneos. Requisitos, pues una excepcional conexión, piensa que tu ejecutable de escritorio deberá ser descargado cada vez que se acceda desde web y para una aplicación muy pequeña de 500kb es irrelevante pero si lo extrapolamos a una de 50 MB por poner un ejemplo la cosa cambia…

    Espero haberte ayudado.

  5. Muy bueno el post Juan (y el blog en su conjunto).

    Pregunta 1: ¿No es Silverlight la parte de WPF para web?. ¿Es otra tecnología diferente?.

    Preguna 2: ¿Un buen libro en castellano de WPF, de los que no tienen un millón de páginas?. Y que se pueda comprar en España.

    Si es electrónico y gratuito mejor …. 🙂

  6. Yo antes trabajaba con WinForms y en cuanto vi las capacidades de WPF me cambié sin dudarlo.

    Hice el 70-502 y ahora todos mis desarrollos son con WPF.

    Es cierto que tal vez la curva de aprendizaje sea algo alta, pero en mi opinión merece la pena.

    Hay aspectos en los que, a pesar de ser una tecnología relativamente reciente, WPF supera de largo a WinForms.

    Creo que en un mundo en el que el cliente demanda cada vez más facilidad de uso, capacidades y riqueza visual, WPF es la opción.

    Esta es mi opinión.

    Un saludo a todos.

  7. Hola Juan,
    La verdad es que no me sorprende la afirmación que haces sobre aplicaciones de línea de negocio. Esta es una de las primeras dudas que surgen con WPF y en el fondo con cualquier tecnología reciente que se presenta como una alternativa de adopción. Es cierto que el desconocimiento de los entresijos de una tecnología hace que dudemos de su utilidad, pero también son dudas fundadas en la resistencia al cambio a una tecnología en la que no te sientes tan seguro y sobre la que no pesan los años de experiencia en el desarrollo con ella. Debo decir que esas mismas dudas ya las tuvimos con Windows Forms en su nacimiento.
    Mi comentario pretende aportar mi visión del estado de la tecnología actualmente.
    WPF no está en su primera versión, si no que actualmente está en la 4ª release y próximamente dispondremos de la 5ª con .NET 4.0.
    Creo que el primer mito que hay que dejar de lado es que no puedes desarrollar en WPF sin un diseñador, esto es totalmente falso, el resultado sería el mismo visualmente que con Windows Forms. Si bien el trabajo de un diseñador logrará una imagen más uniforme y consolidada de nuestra aplicación. La verdadera ventaja de WPF frente a WF es sin duda el potencial que proporciona en enlace a datos, separación entre lógica y presentación, modelo unificado para todos los aspectos de nuestras aplicaciones, ejecución en Browser y por supuesto reutilización de código y compatibilidad con Windows Forms.
    Debo darte la razón en que la adopción de WPF requiere de un perido de formación y sobre todo de un cambio en la forma de pensar si vienes de WinForms.
    Me gustaría contestar a tus preguntas desde mi experiencia en el desarrollo de aplicaciones con WPF:
    WPF es una tecnología madura y muy eficiente.
    WPF permite mejorar el diseño, la usabilidad y la interacción de una aplicación sin costes elevados y creo que es a dia de hoy un sustituto digno de WinForms.
    Silverlight es una tecnología para el desarrollo de RIA y por lo tanto un subconjunto del Framework orientado a aplicaciones web, no un framework para desarrollo de aplicaciones de escritorio aunque la base de las dos tecnologías sea la misma y su evolución sea paralela.
    WPF está completamente preparado para todo tipo de aplicaciones de linea empresarial, ya sea un ERP, CRM, programas de gestion, etc y mi experiencia en el desarrollo de este tipo de aplicaciones con mi empresa así lo confirma.
    Por último decir que WPF permite el despliegue de las aplicaciones en escritorio (EXE) y en entornos Web mediante XBAP (solo entornos windows).
    Espero que mis comentarios ayuden a ver la tecnología desde otro punto de vista.

  8. Para el tema de aplicaciones cliente / web, también se podría hacer una compilación en xbap y otra en .exe normal. Para ello existe un template de proyecto para visual studio “Flexible Application” (http://scorbs.com/2006/06/04/vs-template-flexible-application/). Básicamente es tener dos “ventanas principales” una para web (page) y otra para cliente (Windows) y según el tipo de compilación de hagas xbap o exe te instancia una u otra.

    La ventaja de utilizar esto frente a WPF (cliente) + Silverligh (web) es que el desarrollo es el mismo al 95%. Sólo tienes que mantener dos “ventanas principales ” el resto del desarrollo es el mismo. Evidentemente a la hora de desarrollar tienes que tener en cuenta las limitaciones de xbap.

    Un saludo,
    Pedro.

  9. Por otro lado, y no quiero que parezca que soy un detractor de WPF (es más, soy pro-WPF) estoy muy descontento con el ensamblado que se ha hecho de Expression Blend con VS así como con SourceSafe. Por lo menos todo lo que yo he desarrollado he tenido que tener tanto Blend como VS ejecutándose a la vez sin poder editar el ‘Code Behind’ desde Blend, algo que por lo que he visto se ha solucionado en la Versión 3, pero con un IntelliSense muy descafeinado todavía, nada que ver con el disponible desde VS.

    Qué decir ya del control de código fuente de SourceSafe desde Blend. Muy decepcionado en este aspecto.

    Por lo demás. Decir que estoy muy contento por todas las posibilidades que ofrece esta plataforma al margen de ‘pequeñas cosas’ que lo deterioran un poco.

  10. Gracias a todos por vuestros comentarios.

    @Julio, así es, puedes aprovechar las ventajas que te da WPF, para ejecutarse sobre plataforma Web, lo único que tienes que tener en cuenta es que de momento solo funcionara en entornos Windows.

    @Jorge, como responde Cristian Manteiga  posteriormente, Silverlight está orientado a la web y aunque comparten la misma tecnología no es un framework de desarrollo de aplicaciones de escritorio, la duda es si se convertirá en esto, tal y como apunta Jorge Gamba, sobre el libro yo inicialmente aprovecharia los recursos, Microsoft dispone de un curso gratuito en http://www.desarrollaconmsdn.com/msdn/CursosOnline/Curso_WPF/index.html, tambien tienes otro en el programa desarrollador 5 estrellas, que ademas siempre y cuanto hayas cumplido con las tres estrellas anteriores, Donetmania tiene un pequeño libro Windows Presentation Foundation 7, que te puede ayudar a iniciarte de una forma sencilla. Un buen libro para empezar podria ser http://oreilly.com/catalog/9780596101138/ pero esta en ingles. Saludos.

    @Cristian, muchas gracias por tu comentarios, se agradece especialmente que hables sobre experiencias propias, coincido en la mayoría de las cosas que expones. Entiendo que desde luego una tecnología moderna como WPF, tiene mucho que mejorar, sobre todo en el apartado del diseño de interfaces gráficos, la verdad trabajar con XAML es un autentico coñazo, no creo que nunca me pueda acostumbrar. En cualquier caso creo que la mayoría de los errores y problemas que presenta actualmente serán solucionados en las próximas versiones ya que la apuesta parece cada vez más clara. Te animo a que escribas un post sobre tu experiencia con WPF, con sus problemas y los beneficios que os ha aportado, sería de gran utilidad. Saludos.

  11. Muy buen post Juan, yo creo que sí van a tender hacia WPF los nuevos desarrollo aunque creo que para que ese paso se de falta un poco, sobre todo porque adaptar muchas aplicaciones sería algo complicado, sobre todo las que vienen de NO .NET.

    Otra cosa, alguien preguntaba material en castellano de WPF.

    Acaba de salir hace un mes aproximadamente el libro de WPF de O’Reilly traducido por la editorial Anaya Multimedia llamado WPF. Caro pero merece la pena.

    WPF
    ANAYA MULTIMEDIA/O´REILLY
    Chris Sells y Ian Griffiths
    960 páginas
    Mayo 2009
    72,70 Euros

    Saludos.
    Francisco J.

  12. Hey que bueno; este es de los posts interesantes !!! y comento solo 2 cosillas:

    – SL3 no va a desbancar a WPF, pensad que SL se ejecuta en un sandbox aislado que no permite acceso a recursos locales, que tiene un modelo de seguridad muy restrictivo, etc. Cuando haya que crear aplicaciones que requieran alto nivel de integración con Windows, pues SL lo lleva frito

    – pues yo debo ser un poco mastuerzo, porque lo de reaprovechar codigo entre SL y WPF no me funcionó. A ver, después de un proyecto muy grande de SL (que realmente me dejó asombrado por las capacidades de presentación que tiene) en determinado momento tratamos de pasarlo a un AddIn de Office, es decir reaprovechar toda la logica y presentarlo nuevamente en WPF dentro de un AddIn. Por suerte en enfoque no era un MVP pero era parecido, y la parte de gestión de logica y presentación se pudo aprovechar, pero los XAMLs y los controles son como un huevo y una castaña … pero repito puede ser por la ignoracia de quien suscribe.

    Saludos

    PD: ahh y por cierto … yo creo que todavía tenemos WinForms para rato !!!

  13. @Francisco muchas gracias por tus comentarios.

    @Bruno creo que eres el primero que cree en Winforms, menos mal que todavia queda alguien…

    Comparto lo que dices sobre el XAML y los controles, veremos como lo han mejorado en VS2010.

    Saludos y gracias.

  14. Bueno yo creer creo pero creo que los que tienen la sartén por el mango son los que sacan el Visual Studio y el NET Framework.

    Es más, a mí me sigue gustando más GDI+ que XAML aunque éste último hay que reconocer que en muchas ocasiones facilita mucho los desarrollos.

    Pero en fín, como comento habrá que esperar a ver qué decide Microsoft.

    También hay que tener en cuenta que tendemos en todos los aspectos a la INTEROPERABILIDAD, y XAML es más interoperable que GDI y otros elementos como Windows.Forms, etc.

    Saludos.
    Francisco J.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *