Con la versión 3.0
de .NET se introdujo WPF. Las herramientas
tradicionales
funcionan muy bien si únicamente deseamos construir
aplicaciones que
usan una forma con varios controles, pero que no
proveen
funcionalidades extra al usuario. Si queremos construir una
interfaz de usuario
avanzada, con muchos elementos interactivos, es
necesario recurrir
a diferentes tecnologías, como GDI+ y DirectX. El
problema reside en
que estas no se encuentran
directamente
relacionadas entre sí, lo que complica
el desarrollo de la
interfaz.
Microsoft estaba
consciente de las limitaciones
del modelo anterior
para la creación de interfaces
y de la
problemática para poder crear el tipo de
interfaz que
requieren las nuevas aplicaciones. Por
esta razón, decidió
crear WPF, sigla de Windows
Presentation Foundation. Se trata del
framework
que Microsoft está
recomendando para las nuevas
aplicaciones tanto
de escritorio, Silverlight o para
dispositivos
móviles. Con WPF, todo lo que necesitamos para construir
interfaces de
usuario avanzadas queda unifi cado dentro de un solo
framework. Con él
mismo podemos trabajar con controles, gráfi cas 2D y
3D, video, etc. Una
de las ventajas que ofrece WPF es el uso de estilos y
templates en los
controles, con lo cual podemos cambiar el aspecto de la
aplicación de modo muy
rápido y sencillo.
En WPF se busca
llevar a cabo una separación entre la forma en que
luce la aplicación
y la lógica empleada para controlar dicha aplicación.
Para lograrlo, se
hace uso de XAML. XAML nos permite
defi nir la interfaz
de usuario; los
programadores que trabajan con aplicaciones web lo
encontrarán muy
fácil de utilizar. La interfaz defi nida con XAML es,
entonces,
controlada con el framework de WPF mediante cualquiera de
los lenguajes .NET;
en nuestro caso, C#.
XAML está basado en
XML y es un lenguaje declarativo. Con él
podemos defi nir y
especifi car características para clases con una
sintaxis basada en
XML. Este nos permite hacer cosas como declarar
variables o defi
nir propiedades. No es posible defi nir la lógica del
programa con XAML,
pero al poder establecer las características
de las clases, lo usamos
para defi nir la interfaz de usuario y los
elementos gráfi cos
de nuestra aplicación. La lógica se colocará en C#,
y esto es lo que se
conoce como code behind.
WPF puede utilizarse
para crear diferentes tipos de aplicaciones.
La forma más usual
es la creación de aplicaciones para escritorio.
Todas las
aplicaciones para desktop que hemos creado con las
herramientas
habituales pueden hacerse con WPF, adicionando las
grandes capacidades
interactivas de este.
Otro tipo de
aplicación es la conocida como XBAP, que corre en
un navegador de
Internet. Cuando damos el URI de la aplicación, esta
se descarga en la
máquina y se instala. Estas aplicaciones son mucho
más robustas y con
mejores interfaces que las páginas tradicionales
de Internet. El
navegador funciona, simplemente, como un contenedor,
y lo que se ejecuta
es una aplicación WPF dentro de él. El sistema de
navegación del
navegador es adoptado por la aplicación.
También es posible
crear aplicaciones que se conocen como basadas
en navegación. Son
similares a las de desktop, pero corren dentro de
un navegador web y
toman sus funcionalidades de navegación. En ellas
creamos varias
páginas, dentro de cada una de las cuales tenemos una
sección de la
interfaz de la aplicación. Aunque estas aplicaciones lucen
similares a las de la
Web, se ejecutan en forma local.
Arquitectura de WPF
Debemos saber que
la arquitectura que corresponde a WPF
es sencilla, ya que
está constituida por diferentes assemblies.
Estos assemblies
pueden ser clasifi cados en tres grupos: la capa
administrada, la
capa no administrada y las APIs centrales.
La función de la
capa administrada es dar sustento al framework de
WPF y llevar a cabo
la comunicación con la capa no administrada. El
assembly más
importante de esta capa es PresentationFramework.dll, cuya
función es crear
los elementos de alto nivel que usaremos para defi nir
la interfaz de
usuario. Estos elementos son los paneles, los controles,
las ventanas, etc.
Otro assembly importante es PresentationCore.dll, que
contiene los tipos
base más importantes a partir de los cuales se crean
los controles y las
fi guras en PresentationFramework.dll; uno de estos tipos
es UIElement. Un tercer assembly que
debemos conocer es WindowsBase.
dll, que también contiene
elementos importantes, cuya característica es
poder ser utilizados por
afuera del ambiente de WPF.
La capa no administrada también es conocida como milcore,
acrónimo para Media
Integration Library code. Esta capa se
encuentra,
principalmente, en el assembly milcore.dll.
WPF utiliza Direct3D para llevar
a cabo todas las funciones de dibujo. Esto lo hace mucho más rápido y
efi ciente en el
dibujo de las interfaces que la metodología tradicional.
La capa no
administrada se dedica a traducir los objetos de alto nivel
a objetos que puede
utilizar directamente. Es el lugar donde se realiza
todo el proceso de
renderizado de la interfaz. WindowsCodecs.dll
contiene
diversos códecs que
son empleados en la parte gráfica ca, especialmente,
aquellos
relacionados con gráfica cas vectoriales.
En las APIs
centrales tenemos una colección que provee a WPF de
las funcionalidades
necesarias para efectuar su trabajo. WPF se apoya
en estas APIs, y
eso nos facilita el trabajo. Dentro de ellas tenemos a
Direct3D, usado
para la parte baja y de renderizado en WPF; también
es aprovechado
gracias a la aceleración por hardware que ofrece. Para
la parte de
administración de memoria y de los diversos procesos que
componen la aplicación,
se usa User32..