WPF: Windows Client VS XBAP

Cuando desarrollemos aplicaciones con WPF deberemos tener en cuenta cual será el despliegue que usará, por lo que deberemos decidir entre un despliegue Web mediante XBAP o crear una aplicación de escritorio, y por lo tanto tener en cuenta cuales son los requisitos que debe cumplir, ya que aunque casi toda la funcionalidad de WPF está presente en las aplicaciones XBAP, no toda ella está descrita.

Estas implicaciones deben tenerse en cuenta en la fase de definición de la aplicación, en la que deberemos decidir dicho despliegue y aquellos elementos de los que podremos hacer uso.

Para poder tener una noción clara de cuales son estas diferencias, aquí os dejo una comparativa entre aplicaciones de escritorio y aplicaciones XBAP:

  • Aplicaciones de escritorio
    • Se instala en la máquina local
    • Aparece en el menú Inicio y en Añadir/Quitar programas
    • Se instala con un MSI o con ClickOnce
    • Code Access Security
      • Se ejecuta en confiabilidad total (Full Trust)
      • Capacidades inherentes:
        • Puede mostrar ventanas hijas
        • Uso de WCF
        • Acceso al registro
        • Acceso a Escitura y lectura en el sistema de ficheros
        • Otras tareas heredadas de Full Trust…
      • Se ejecuta en una ventana independiente
      • Versiones actualizadas de la aplicación a elección del ususario
        • Automatizado por ClickOnce
        • A elecciónd el usuario
    • Uso desconectado de la Aplicación
  • Aplicaciones XBAP
    • No se instala en la máquina local
    • No aparece en el menú Inicio y en Añadir/Quitar programas
    • Se despliega automáticamente con ClickOnce
      • xxxx.xbap es en realidad un manifiesto de ClickOnce
    • Code Access Security
      • Se ejecuta en la Zona Internet
      • Excepciones de seguridad en accesos a recursos no autorizados
      • Capacidades inherentes a la zona de seguridad
        • Almacenamiento protegido
        • No se puede llamar a servicios WCF 
        • Solo se puede hacer uso de tareas disponibles en la Zona Internet
    • Seguridad adicional 
      • WPF elimina los privilegios de los drivers de dispositivo en el proceso del explorador
    • Alojado en el proceso del explorador de internet
    • Solo disponible para Internet Explorer en entornos Windows
    • Restricciones de WPF
      • No se soporta el objeto Window, se hace uso de Page
      • No se admiten ventanas modales
      • No hay soporte para BitmapEffects
      • No hay soporte para aceleración gráfica por Hardware
    • Siempre se ejecuta la última versión
    • Escenario de uso conectado
    • El usuario debe tener acceso al servidor de despliegue

6 comentarios en “WPF: Windows Client VS XBAP”

  1. Las aplicaciones XBAP actuales, con el framework 3.0 sólo permiten usar Web Services básicos( asmx ) y sólo contra el servidor de origen( donde se encuentra el xbap ). Salvo imágenes y alguna otra cosa así, claro.

    Con el framework 3.5 o como lo quieran llamar wcf ya será compatible con aplicaciones sin full trust.

    PD: En mi experiencia con una pequeña aplicación, xbap es muy práctico para demos y poca ventaja ofrece en una aplicación frente a una aplicación ClickOnce.

  2. Hola, en efecto, por ahora no tenemos disponible la comunicación con WCF, pero pronto la tendremos con 3.5.
    En cuanto a la potencia de XBAP, yo creo que puedes construir aplicaciones geniales con XBAP, solo depende del escenario de la aplicación, para RIA o aplicaciones de linea de negocio siempre concetadas puede dar mucho de sí.

  3. Actualmente en la versión 3.5 se pueden agregar a un proyecto de aplicación de escritorio, un elemento PAGE y si lo pongo en el uri inicial en app.xaml, esta se ejecuta en una ventana independiente, pero si en este proyecto lo hago inicial un elemento WINDOW y quiero hacer referencia a un PAGE o incorporarlo dentro de un WINDOW, cómo lo hago?

  4. Hola Fernando, Si lo que quieres es usar un modelo MDI, decirte que no está contemplado, un modo de crearlo es mediante User Controls en lugar de Pages, sin embargo si lo que quieres es implementar un modelo de navegación puedes hacerlo mediante un objeto Frame que navegue a Pages dentro de tu MainWindow.
    Un saludo,

    Cristian

Deja un comentario

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