Vue d’ensemble des applications du navigateur XAML WPF

Les applications de navigateur XAML (XBAPs) combinent les fonctionnalités des applications web et des applications clientes enrichies. Comme les applications web, les XBAPs peuvent être déployés sur un serveur Web et démarrés à partir d’Internet Explorer ou firefox sur Windows. Comme les applications clientes riches, les XBAPs peuvent tirer parti des fonctionnalités de WPF. Le développement d’applications XBAP est également semblable au développement d’applications clientes complètes. Cette rubrique fournit une présentation simple et détaillée du développement XBAP et décrit les différences de développement entre les applications XBAP et les applications clientes complètes standard.

Avertissement

Les XBAPs nécessitent que les navigateurs hérités fonctionnent, tels qu’Internet Explorer et les anciennes versions de Firefox. Ces navigateurs plus anciens ne sont généralement pas pris en charge sur Windows 10 et Windows 11. Les navigateurs modernes ne prennent plus en charge la technologie requise pour les applications XBAP en raison des risques de sécurité. Les plug-ins qui activent les XBAPs ne sont plus pris en charge. Pour plus d’informations, consultez forum aux questions sur les applications hébergées par un navigateur WPF (XBAP) .

Cette rubrique contient les sections suivantes :

Création d’une nouvelle application de navigateur XAML (XBAP)

La façon la plus simple de créer un projet XBAP est avec Visual Studio. Lorsque vous créez un nouveau projet, sélectionnez Application de navigateur WPF dans la liste des modèles. Pour plus d’informations, consultez l’article Comment : créer un projet d’application de navigateur WPF.

Lorsque vous exécutez le projet XBAP, celui-ci s’ouvre dans une fenêtre de navigateur et non dans une fenêtre indépendante. Lorsque vous déboguez le XBAP à partir de Visual Studio, l’application s’exécute avec l’autorisation de zone Internet et lève donc des exceptions de sécurité si ces autorisations sont dépassées. Pour plus d’informations, voir Sécurité et Sécurité de confiance partielle de WPF.

Remarque

Si vous ne développez pas avec Visual Studio ou que vous souhaitez en savoir plus sur les fichiers projet, consultez Génération d’une application WPF.

Déploiement d’une application XBAP

Lorsque vous générez une application XBAP, la sortie inclut les trois fichiers suivants :

Fichier Description
Fichier exécutable (.exe) Ce fichier contient le code compilé et porte l’extension .exe.
Fichier manifeste d’application (.manifest) Ce fichier contient les métadonnées associées à l’application et porte l’extension .manifest.
Fichier manifeste de déploiement (.xbap) Ce fichier contient les informations que ClickOnce utilise pour déployer l’application et a l’extension .xbap.

Vous déployez des XBAPs sur un serveur web, par exemple Microsoft Internet Information Services (IIS) 5.0 ou versions ultérieures. Vous n’avez pas besoin d’installer .NET Framework sur le serveur Web, mais vous devez inscrire les types MIME (Multipurpose Internet Mail Extensions) WPF et les extensions de nom de fichier. Pour plus d’informations, consultez l’article Configurer IIS 5.0 et IIS 6.0 pour déployer des applications WPF.

Pour préparer votre application XBAP au déploiement, copiez le fichier .exe et les manifestes associés sur le serveur web. Créez une page HTML qui contient un lien hypertexte pour ouvrir le manifeste de déploiement, c’est-à-dire le fichier qui porte l’extension .xbap. Lorsque l’utilisateur clique sur le lien vers le fichier .xbap, ClickOnce gère automatiquement les mécanismes de téléchargement et de démarrage de l’application. L’exemple de code suivant montre une page HTML qui contient un lien hypertexte vers une application XBAP.

<html>
    <head></head>
    <body>
        <a href="XbapEx.xbap">Click this link to launch the application</a>
    </body>
</html>

Vous pouvez également héberger une application XBAP dans le cadre d’une page web. Créez une page web contenant un ou plusieurs cadres. Définissez le fichier manifeste de déploiement comme propriété source d’un cadre. Si vous souhaitez utiliser le mécanisme intégré pour la communication entre la page web hôte et l’application XBAP, vous devez héberger l’application dans un cadre. L’exemple de code suivant montre une page HTML contenant deux cadres et pour laquelle une application XBAP est définie comme source du second cadre.

<html>
    <head>
        <title>A page with frames</title>
    </head>
    <frameset cols="50%,50%">
        <frame src="introduction.htm">
        <frame src="XbapEx.xbap">
    </frameset>
</html>

Suppression des applications XBAP mises en cache

Il peut arriver qu’après avoir régénéré et démarré votre application XBAP, une version antérieure de l’application XBAP soit restée ouverte. Cela peut par exemple se produire lorsque votre numéro de version d’assembly XBAP est statique et que vous démarrez l’application XBAP à partir de la ligne de commande. Dans ce cas, étant donné que la version mise en cache (version de l’application démarrée précédemment) et la nouvelle version portent le même numéro de version, la nouvelle version de l’application XBAP n’est pas téléchargée. C’est donc la version mise en cache qui est chargée.

Dans ces situations, vous pouvez supprimer la version mise en cache à l’aide de la commande Mage (installée avec Visual Studio ou le Kit de développement logiciel (SDK) Windows à l’invite de commandes. La commande suivante efface le cache d’application.

Mage.exe -cc

Cette commande permet de s’assurer que la dernière version de votre application XBAP est démarrée. Lorsque vous déboguez votre application dans Visual Studio, la dernière version de votre XBAP doit être démarrée. En général, vous devez mettre à jour votre numéro de version de déploiement à chaque version. Pour plus d’informations sur Mage, consultez l’article Mage.exe (outil Manifest Generation and Editing).

Communication avec la page web hôte

Lorsque l’application est hébergée dans un cadre HTML, vous pouvez communiquer avec la page web qui contient l’application XBAP. Pour ce faire, récupérez la HostScript propriété de BrowserInteropHelper. Cette propriété renvoie un objet de script qui représente la fenêtre HTML. Vous pouvez consulter les propriétés, méthodes et événements sur l’objet de fenêtre en utilisant la syntaxe de point normale. Vous pouvez également accéder aux méthodes de script et aux variables globales. L’exemple suivant montre comment récupérer l’objet de script et fermer le navigateur.

private void Button_Click(object sender, RoutedEventArgs e)
{
    // Retrieve the script object. The XBAP must be hosted in a frame or
    // the HostScript object will be null.
    var scriptObject = BrowserInteropHelper.HostScript;

    // Call close to close the browser window.
    scriptObject.Close();
}
Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    ' Retrieve the script object  The XBAP must be hosted in a frame or
    ' the HostScript object will be null.
    Dim scriptObject = BrowserInteropHelper.HostScript

    ' Call close to close the browser window.
    scriptObject.Close()
End Sub

Débogage des applications XBAP qui utilisent HostScript

Si votre XBAP utilise l’objet HostScript pour communiquer avec la fenêtre HTML, il existe deux paramètres que vous devez spécifier pour exécuter et déboguer l’application dans Visual Studio. L’application doit avoir accès à son site d’origine et vous devez démarrer l’application avec la page HTML qui contient l’application XBAP. Les étapes suivantes décrivent comment vérifier ces deux paramètres :

  1. Dans Visual Studio, ouvrez les propriétés du projet.

  2. Sous l’onglet Sécurité, cliquez sur Avancé.

    La boîte de dialogue Paramètres de sécurité avancés s'affiche.

  3. Assurez-vous que la case Autoriser l’application à accéder à son site d’origine est cochée, puis cliquez sur OK.

  4. Dans l’onglet Déboguer, sélectionnez l’option Démarrer le navigateur avec l’URL et spécifiez l’URL de la page HTML qui contient l’application XBAP.

  5. Dans Internet Explorer, cliquez sur le bouton Outils, puis sélectionnez Options Internet.

    La boîte de dialogue Options Internet s’affiche.

  6. Cliquez sur l’onglet Avancé.

  7. Dans la liste des paramètres sous Sécurité, cochez la case Autoriser l’exécution du contenu actif dans les fichiers de mon ordinateur.

  8. Cliquez sur OK.

    Les modifications prendront effet après le redémarrage d’Internet Explorer.

Attention

Activer le contenu actif dans Internet Explorer peut représenter un risque pour votre ordinateur. Si vous ne souhaitez pas modifier vos paramètres de sécurité Internet Explorer, vous pouvez lancer la page HTML à partir d’un serveur et attacher le débogueur Visual Studio au processus.

Considérations relatives à la sécurité des applications XBAP

Les applications XBAP s’exécutent généralement dans un sandbox de sécurité de confiance partielle qui est limité au jeu d’autorisations de la zone Internet. Par conséquent, votre implémentation doit prendre en charge le sous-ensemble d’éléments WPF pris en charge dans la zone Internet ou vous devez élever les autorisations de votre application. Pour plus d’informations, consultez Sécurité.

Lorsque vous utilisez un WebBrowser contrôle dans votre application, WPF instancie en interne le contrôle ActiveX WebBrowser natif. Lorsque votre application est exécutée en tant qu’application XBAP de confiance partielle dans Internet Explorer, le contrôle ActiveX s’exécute dans un thread dédié du processus Internet Explorer. Cela signifie que les limitations suivantes s’appliquent :

  • Le WebBrowser contrôle doit fournir un comportement similaire au navigateur hôte, y compris les restrictions de sécurité. Certaines de ces restrictions de sécurité peuvent être gérées via les paramètres de sécurité d’Internet Explorer. Pour plus d’informations, consultez Sécurité.

  • Une exception est générée lorsqu’une application XBAP est chargée sur plusieurs domaines dans une page HTML.

  • L’entrée se trouve sur un thread distinct de WPF WebBrowser. L’entrée du clavier ne peut donc pas être interceptée et l’état IME n’est pas partagé.

  • Comme le contrôle ActiveX est en cours d’exécution sur un autre thread, le temps ou l’ordre de navigation peut différer. Par exemple, la navigation vers une page n’est pas toujours annulée lors du démarrage d’une autre requête de navigation.

  • La communication avec un contrôle ActiveX personnalisé peut être difficile puisque l’application WPF s’exécute dans un thread distinct.

  • MessageHook n’est pas déclenché, car HwndHost ne peut pas sous-classer une fenêtre s’exécutant dans un autre thread ou processus.

Création d’une application XBAP de confiance totale

Si votre application XBAP requiert une confiance totale, vous pouvez modifier votre projet pour activer cette autorisation. Les étapes suivantes décrivent comment activer la confiance totale :

  1. Dans Visual Studio, ouvrez les propriétés du projet.

  2. Dans l’onglet Sécurité, sélectionnez l’option This is a full trust application (Ceci est une application de confiance totale).

Ce paramètre apporte les modifications suivantes :

  • Dans le fichier projet, la valeur de l’élément <TargetZone> devient Custom.

  • Dans le manifeste de l’application (app.manifest), un Unrestricted="true" attribut est ajouté à l’élément 'PermissionSet .

    <PermissionSet class="System.Security.PermissionSet"
                   version="1"
                   ID="Custom"
                   SameSite="site"
                   Unrestricted="true" />
    

Déploiement d’une application XBAP de confiance totale

Lorsque vous déployez une application XBAP de confiance totale qui ne suit pas le modèle de déploiement approuvé ClickOnce, le comportement fourni lorsque l’utilisateur exécute l’application dépend de la zone de sécurité. Dans certains cas, l’utilisateur reçoit un avertissement quand il tente de l’installer. Il peut choisir de continuer ou d’annuler l’installation. Le tableau suivant décrit le comportement de l’application pour chaque zone de sécurité et ce que vous devez faire pour que l’application reçoive la confiance totale.

Zone de sécurité Comportement Obtention de la confiance totale
Ordinateur local Confiance totale automatique Aucune action n'est nécessaire.
Intranet et sites de confiance Invite pour la confiance totale Signez l’application XBAP avec un certificat afin que l’utilisateur consulte la source dans l’invite.
Internet Échec avec "Confiance non accordée" Signez l’application XBAP avec un certificat.

Remarque

Le comportement décrit dans le tableau précédent concerne les applications XBAP de confiance totale qui ne suivent pas le modèle de déploiement approuvé ClickOnce.

Il est recommandé d’utiliser le modèle de déploiement approuvé ClickOnce pour déployer une application XBAP de confiance totale. Ce modèle permet d’accorder automatiquement une confiance totale à votre application XBAP, quelle que soit la zone de sécurité, afin que l’utilisateur ne reçoive aucune invite. Dans le cadre de ce modèle, vous devez signer votre application avec un certificat d’un éditeur approuvé. Pour plus d’informations, consultez les articles Vue d’ensemble du déploiement d’applications approuvées et Présentation de la signature de code.

Considérations relatives au temps de démarrage des applications XPAB

Un facteur important de performance d’une application XBAP est son temps de démarrage. Si une application XBAP est la première application WPF à être chargée, le démarrage à froid prend au moins dix secondes. Cela s’explique par le fait que la page de progression est affichée par WPF, et que CLR et WPF doivent être démarrés à froid pour afficher l’application.

À compter de .NET Framework 3.5 SP1, le temps de démarrage à froid XBAP est atténué en affichant une page de progression non managée au début du cycle de déploiement. La page de progression s’affiche quasiment immédiatement après le démarrage de l’application, car elle apparaît via le code d’hébergement natif au format HTML.

En outre, l’accès concurrentiel amélioré de la séquence de téléchargement ClickOnce améliore le temps de démarrage de jusqu’à dix pour cent. Une fois ClickOnce téléchargé et validé les manifestes, le téléchargement de l’application démarre et la barre de progression commence à être mise à jour.

Voir aussi