Hemos leído: Adam Nathan: Windows Presentatio Foundation Unleashed

image La idea de adelantar casi un año la lectura de este libro respecto a mi plan ha sido la de hacer un programa utilizando WPF, pero al final ha sido peor el remedio que la enfermedad. O dicho de otro modo: pese a ser enormemente potente, pese a soportar temas, pese a contener ideas relativamente nuevas y bien implementadas… no lo voy a hacer con WPF. Simplemente es que no me gusta cómo ha sido expresada dicha potencia. Me han dicho que quizás si leyera el libro equivalente de Petzold lo vería de otro modo, pero de Petzold ya tuve bastante con el de Programación en Windows con C#, que contenía más errores que aciertos.

Sí, ya sé que los libros de Petzold sobre Win32 y C son una referencia de base, de hecho tengo tres ediciones de las cinco que hay, pero por eso mismo: la referencia son estos, no los nuevos. No creo que nadie pueda negarme que el de C# no tenga errores.

Sin embargo, el de Nathan es otra cosa, y pese a tener ya más de tres años, sigue siendo actual y no desmerece para nada. Me dicen que pasa lo mismo con el de Petzold, que quizás compre y lea.

Dividido en cinco partes, ninguna tiene desperdicio. En la primera se nos presenta XAML y lo que significa para WPF, así como los conceptos que hay detrás de todo esto. Lo más destacable es que, a partir de un fichero de marcas como es XAML (que no es más que una variación de XML), el sistema es capaz de construir el tipo de interfaces que es capaz de hacer. Aunque suene un poco como a magia, no lo es, ya que la construcción del fichero y los tags son complejos.

Otras cosas interesantes son las propiedades propagadas, en las que si tu modificas una de ellas, todos los hijos las modificarán de acuerdo al cambio, con lo que variar aspectos de la UI puede llegar a ser trivial en muchos casos. En los eventos ocurre parecido: si uno hace clic en un componente que no tiene dicho evento asignado, éste irá subiendo por el árbol hasta llegar a alguien que lo maneje. Si bien esto último puede sonar espectacular en .NET, en MFC y otros frameworks es el comportamiento habitual.

La segunda parte nos presenta los controles de que disponemos en WPF. Pese a toda su enorme potencia a veces resultan escasos, porque básicamente son una serie de contenedores. A los programadores de GTK o de QT les deben sonar los componentes de layouts y fluentes en el sentido de que reordenan los hijos de forma automática. Aparte de los botones, los cuadros de lista, los combos y los labels, pocos más hay. También nos cuenta cómo juntar todo esto en un programa, y crea una especie de clon de las ventanas de Visual Studio, y digo "especie de" porque realmente el soporte de docking está como ausente, pero aceptaremos pulpo pese a no haber hablado de arrastrar y soltar (que me temo WPF no soporta directamente).

En la tercera nos explica cómo trabajar con recursos, enlace a datos y el soporte para estilos, plantillas (de estilos), pieles (skins) y temas. Aquí me he llevado otro pequeño desengaño, ya que pese a la potencia de todo esto, resulta sensiblemente difícil añadir o cambiar el aspecto de una aplicación. Para hacerlo es necesario al menos saber XAML, y presenta un potencial y enorme agujero de seguridad ya que dicho XAML puede contener código arbitrario…

La penúltima parte cubre la multimedia: cómo hacer gráficos 2D y 3D, animaciones, vídeo y audio. Pese al soporte ampliado, la verdad es que no hay mucha mejora respecto a otras tecnologías.

La quinta y última parte sí que es interesante, por lo menos para mi: Interoperabilidad con Win32, C++/CLI, COM, ActiveX y Windows Forms. De todos modos, nada nuevo bajo el sol, y para ver interoperabilidad entre C++/CLI y WPF y/o Windows Forms de verdad, el libro de Sivakumar. También vemos cómo crear controles personalizados y de usuario.

No os llevéis a engaño por mis comentarios. El libro es muy bueno, lo explica todo perfectamente, pero la tecnología me ha desilusionado un poco. No sé, esperaba más. No más complejidad (que ya tiene bastante), sino más facilidad y menos picar código (aunque sea XAML)… Sí, ya sé que tenemos el Expression Blend, pero creo que aprender a manejar esa bestia parda tampoco es tarea de un rato…

6 comentarios en “Hemos leído: Adam Nathan: Windows Presentatio Foundation Unleashed”

  1. Interesante reseña rafa, me interesa actualizarme en cuestiones de programación tanto en aplicaciones como en web, que tipo de entorno me recomiendas para comenzar? Digo para comenzar, pq desde Visual C++, Visual Basic net y Visual Fox 9 a la fecha no me he puesto a ver algo mas reciente :S Gracias.

  2. Supongo que esto de la programación es cuestión de gustos … cada uno tiene el suyo.

    Yo personalmente después de llevar varios años desarrollando con windows forms no he dudado en pasarme a WPF cuando ha salido .NET 3

    A pesar de la supuesta complejidad que se menciona de XAML en otros posts de este artículo, en mi opinión, dicha complejidad no es tal y la potencia y versatilidad de XAML bien vale la pena un pequeño esfuerzo de aprendizaje inicial.

    Bueno, creo que ha quedado claro que soy defensor de WPF, de hecho, soy MCTS y ahora mi vida como programador es más fácil, jejeje!

    Un Saludo!

  3. @CDB, pues si te digo la verdad: no lo sé. Si vas hacer aplicaciones típicas de gestión y todo eso, tanto VB.NET como C# son buenas opciones, y de hecho no hay nada más nuevo. Que extiendan eso sí, como LINQ, WPF, WCF, pero ciertamente el núcleo es el mismo. Aparte de eso, yo de tecnologías WEB y aplicaciones de bases de datos, cero patatero.

    Si quieres Desktop, tanto C#, VB.NET como C++ con MFC siguen siendo buenas opciones (la mejor, la última, aunque podrías cambiar MFC por QT, wxWidgets o similar).

    @mad4ever, es que Windows Forms es un poco una aberración en sí, tanto el diseño como la implementación, y así les ha ído. WF ha sido una tecnología intermedia de transición, y creo que WPF está, queramos o no, para quedarse, y quizás, dentro de unos años (muchos, como poco 10 ó 20) quizás forme parte del API nativo de Windows como ahora lo es Win32…

  4. Hola…
    Desde el 2002 que desarrollo apliaciones de .NET winforms y claro, ahora me es mucho mas facil crear las interfaces graficas sin problema.. por ello, cuando sacaron el WPF ,pense que iba a ser sencillo, pero no.. cuesta amoldarse, y es que tener una “praxis” ya impuesta, cuesta cambiar el chip…
    Mi empresa, vale, si quiere cosas con wpf (mas por que les parece que el cliente, le gusta a veces tanto colores y formas), pero no apuesta por el Blend (que tampoco me llega a gustar ya que tampoco me gustaba el IDE del macromedia flash), estuve esperando con ansia la salida del VS2010, no, solo por que me aporte, si no, por el IDE de WPF que tiene y que me permite una transicion de winforms a wpfforms menos traumatica.. aun asi, estoy desarrollando apliaciones silverlight (maldito y necesario WCF), con idea de dejar crear winforms normales…. espero, que algun dia el WPF de escritorio, me sea tan facil como lo que he llevado años trabajando.

Deja un comentario

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