Partager via


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 de XBAPs est également similaire au développement de client riche. Cette rubrique fournit une présentation simple et générale du développement XBAP et décrit où le développement XBAP diffère du standard de développement de clients riches.

Avertissement

Les XBAPs nécessitent des navigateurs anciens pour fonctionner, 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 Questions fréquemment posées sur les applications WPF hébergées dans un navigateur (XBAP).

Cette rubrique contient les sections suivantes :

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

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

Lorsque vous exécutez le projet XBAP, il s’ouvre dans une fenêtre de navigateur au lieu d’une fenêtre autonome. 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, consultez Sécurité et Sécurité de confiance partielle 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’un XBAP

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

Fichier Descriptif
Exécutable (.exe) Il contient le code compilé et a une extension .exe.
Manifeste d’application (.manifest) Cela contient des métadonnées associées à l’application et a une extension .manifest.
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 Configurer IIS 5.0 et IIS 6.0 pour déployer des applications WPF.

Pour préparer votre XBAP pour le déploiement, copiez les .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, qui est le fichier qui a 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 pointant vers un XBAP.

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

Vous pouvez également héberger un XBAP dans le cadre d’une page Web. Créez une page web avec un ou plusieurs cadres. Définissez la propriété source d’un cadre sur le fichier manifeste de déploiement. Si vous souhaitez utiliser le mécanisme intégré pour communiquer entre la page web d’hébergement et le XBAP, vous devez héberger l’application dans un cadre. L’exemple de code suivant montre une page HTML avec deux cadres, la source du deuxième cadre est définie sur un XBAP.

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

Effacement des XBAP mis en cache

Dans certaines situations après la reconstruction et le démarrage de votre XBAP, vous pouvez constater qu’une version antérieure du XBAP est ouverte. Par exemple, ce comportement peut se produire lorsque votre numéro de version d’assembly XBAP est statique et que vous démarrez le XBAP à partir de la ligne de commande. Dans ce cas, étant donné que le numéro de version entre la version mise en cache (version précédemment démarrée) et la nouvelle version reste identique, la nouvelle version du XBAP n’est pas téléchargée. Au lieu de cela, la version mise en cache 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 de l’application.

Mage.exe -cc

Cette commande garantit que la dernière version de votre 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 avec chaque build. Pour plus d’informations sur Mage, consultez Mage.exe (outil génération de manifeste et édition).

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 le XBAP. Pour ce faire, récupérez la HostScript propriété de BrowserInteropHelper. Cette propriété retourne un objet de script qui représente la fenêtre HTML. Vous pouvez ensuite accéder aux propriétés, méthodes et événements de l’objet fenêtre à l’aide de la syntaxe de point standard. 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 de XBAPs 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 le 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. Vérifiez que la case à cocher Accorder à l’application à son site d’origine est cochée, puis cliquez sur OK.

  4. Sous l’onglet Débogage , sélectionnez l’option Démarrer le navigateur avec l’URL et spécifiez l’URL de la page HTML qui contient le 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 Paramètres sous Sécurité, cochez la case Autoriser l’exécution du contenu actif dans les fichiers sur Mon ordinateur .

  8. Cliquez sur OK.

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

Avertissement

L’activation du contenu actif dans Internet Explorer peut mettre votre ordinateur en danger. 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é XBAP

Les XBAPs s'exécutent généralement dans un bac à sable de sécurité à confiance partielle, limité au jeu d’autorisations de 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, voir la section Sécurité.

Lorsque vous utilisez un WebBrowser contrôle dans votre application, WPF instancie en interne le contrôle ActiveX du WebBrowser natif. Lorsque votre application est un XBAP de confiance partielle s’exécutant dans Internet Explorer, le contrôle ActiveX s’exécute dans un thread dédié du processus Internet Explorer. Par conséquent, 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 contrôlées via les paramètres de sécurité d’Internet Explorer. Pour plus d’informations, voir la section Sécurité.

  • Une exception est levée lorsqu'un XBAP est chargé en inter-domaine 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é.

  • Le minutage ou l’ordre de navigation peut être différent en raison du contrôle ActiveX exécuté sur un autre thread. Par exemple, la navigation vers une page n’est pas toujours annulée en démarrant une autre demande de navigation.

  • Un contrôle ActiveX personnalisé peut rencontrer des problèmes de communication, car 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’un XBAP Full-Trust

Si votre XBAP nécessite 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. Sous l’onglet Sécurité , sélectionnez l’option Ceci est une option d’application de confiance totale .

Ce paramètre apporte les modifications suivantes :

  • Dans le fichier projet, la valeur de l’élément <TargetZone> est modifiée en 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’un Full-Trust XBAP

Lorsque vous déployez un XBAP de confiance totale qui ne suit pas le modèle de déploiement approuvé ClickOnce, le comportement lorsque l’utilisateur exécute l’application dépend de la zone de sécurité. Dans certains cas, l’utilisateur reçoit un avertissement lorsqu’il tente de l’installer. L’utilisateur 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 une confiance totale.

Zone de sécurité Comportement Obtention d’une confiance totale
Ordinateur local Confiance totale automatique Aucune action n’est nécessaire.
Sites intranet et sites de confiance Invitation à accorder une confiance totale Signez le XBAP avec un certificat afin que l’utilisateur voit la source dans l’invite.
Internet Échec avec « Confiance non accordée » Signez le XBAP avec un certificat.

Remarque

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

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

Considérations relatives aux performances du temps de démarrage XBAP

Un aspect important des performances XBAP est son heure de début. Si un XBAP est la première application WPF à charger, l’heure de démarrage à froid peut être de dix secondes ou plus. Cela est dû au fait que la page de progression est rendue par WPF et que le 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 presque immédiatement après le démarrage de l’application, car elle est affichée par le code d’hébergement natif et rendue en 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