2. Windows Presentation Foundation es el subsistema
de Windows (librerías integradas en el sistema
operativo), orientado a unificar los mecanismos de
creación y gestión de interfaces de usuario. -
Si bien la respuesta a nuestra pregunta inicial, es al
menos en apariencia sencilla, vamos a tratar de
profundizar en Windows Presentation Foundation (en
adelanteWPF) para ver las implicaciones reales que
conllevan la aparición de éste nuevo subsistema.
3. Como ya se ha anticipado en su definición, WPF nace con
el propósito de unificar, y es que cuando hablamos de
interfaces de usuario nos vienen a la cabeza tres
escenarios o entornos muy concretos:
Aplicaciones de escritorio.
Aplicaciones Web.
Aplicaciones para dispositivos móviles.
4. ¿Es lo mismo plantearse una interfaz de usuario para correr en
un escritorio Windowsque para correr bajo un navegador Web?
Es evidente que hace falta muy poca experiencia en la materia
para poder contestar a esta pregunta, que por supuesto tiene
como respuesta un rotundo NO, al menos hasta hace poco… La
nueva filosofía que se nos plantea con herramientas
como WPF radica en definir los elementos esenciales que deben
componer la interfaz de usuario, delegando a un segundo paso la
definición del aspecto de los mismos. Tanto los elementos como
el aspecto se adaptará de la mejor forma posible al entorno en
que se ejecute la aplicación, pero lo importante es que la
definición usada será siempre la misma independientemente del
escenario empleado.
5. Ejemplo 1:
Pongamos que tenemos que desarrollar una aplicación para
mostrar las facturas de un determinado mes. Para ello decido
que el elemento de una interfaz de usuario que se adapta mejor a
mis necesidades es una tabla (grid). Defino la tabla en la
aplicación y le asigno una apariencia visual con unos degradados
muy resultones.
Ejecuto la aplicación en un entorno de escritorio. La tabla luce de
maravilla mostrando sus magníficos degradados. Además por lo
que parece he usado una tabla estupenda, por que sin escribir
una sola línea de código puedo ordenar su contenido por una
determinada columna haciendo un simple clic sobre la cabecera
de una de ellas. Pero no sólo eso, si juego con la tecla “shift”
puedo hacer ordenaciones compuestas, o puedo variar el orden
de las columnas arrastrando las mismas con el ratón. Fantástico
¿no?.
6. Voy a ver ahora que tal corriendo la aplicación bajo un
navegador Web: Pues la verdad es que muy bien también; Es
fantástico. El aspecto es muy similar, aunque a simple vista puedo
detectar algunos cambios como en la profundidad visual de las
celdas, pero no hay duda que me ha conservado esos degradados
tan estupendos que he seleccionado. Hago clic sobre una columna
y me ordena el contenido de la tabla por dicha columna, ¡esto es
perfecto! Aunque… ¡Vaya! No puedo hacer ordenaciones múltiples
con la ayuda de la tecla “shift”, y ¿por qué no puedo arrastrar
columnas? Vaya, no es oro todo lo que reluce…
Vale, pese a todo la cosa no va mal, vamos a ver que tal se
muestra la aplicación bajo un dispositivo móvil: Efectivamente la
tabla sigue estando, ¿pero que se ha hecho de esos degradados
tan bonitos? ¿Por qué no puedo ordenar la tabla? En definitiva
me doy cuenta de que la interfaz se ha empobrecido
enormemente.
7. NOTA: Evidentemente se trata de un ejemplo orientativo
que no pretende profundizar en lo que realmente se puede
obtener de un determinado entorno (AJAX, etc.)
¿Qué trata de plasmar el ejemplo 1? Pues aparte de algo
evidente como que el entorno de escritorio hasta la fecha
es sin duda el que nos permitirá crear interfaces más ricas
y complejas, es que debemos tratar de realizar interfaces
usando las mismas herramientas independientemente del
entorno o entornos donde pretendamos ejecutar nuestra
aplicación. En el ejemplo anterior, mientras que diseñaría
un formularioWindows con una tecnología muy concreta
como puede ser Windows Forms para la aplicación de
escritorio, para ejecutar bajo el navegador Web, voy a
tener que redefinir por completo la interfaz, usando otra
tecnología como puede ser ASP.NET. En resumen, doble
trabajo, doble necesidad de conocimientos.