Freigeben über


Übersicht über WPF-XAML-Browseranwendungen

XAML-Browseranwendungen (XBAPs) kombiniert Features von Webanwendungen und Rich-Client-Anwendungen. Wie Webanwendungen können XBAPs auf einem Webserver bereitgestellt und von Internet Explorer oder Firefox unter Windows gestartet werden. Wie Rich-Client-Anwendungen können XBAPs die Funktionen von WPF nutzen. Die Entwicklung von XBAPs ähnelt auch der Rich-Client-Entwicklung. Dieses Thema enthält eine einfache, allgemeine Einführung in die XBAP-Entwicklung und beschreibt, wo sich die XBAP-Entwicklung von der standardmäßigen Rich-Client-Entwicklung unterscheidet.

Warnung

XBAPs erfordern, dass ältere Browser funktionieren, z. B. Internet Explorer und alte Versionen von Firefox. Diese älteren Browser werden in der Regel unter Windows 10 und Windows 11 nicht unterstützt. Moderne Browser unterstützen die für XBAP-Apps erforderliche Technologie aufgrund von Sicherheitsrisiken nicht mehr. Plug-Ins, die XBAPs aktivieren, werden nicht mehr unterstützt. Weitere Informationen finden Sie unter Häufig gestellte Fragen zu WPF-Anwendungen, die im Browser gehostet werden (XBAP).

Dieses Thema enthält die folgenden Abschnitte:

Erstellen einer neuen XAML-Browseranwendung (XBAP)

Die einfachste Möglichkeit zum Erstellen eines neuen XBAP-Projekts ist Visual Studio. Wählen Sie beim Erstellen eines neuen Projekts die WPF-Browseranwendung aus der Liste der Vorlagen aus. Weitere Informationen finden Sie unter How to: Create a New WPF Browser Application Project.

Wenn Sie das XBAP-Projekt ausführen, wird es in einem Browserfenster anstelle eines eigenständigen Fensters geöffnet. Wenn Sie das XBAP aus Visual Studio debuggen, wird die Anwendung mit Internetzonenberechtigung ausgeführt und löst daher Sicherheits exceptions aus, wenn diese Berechtigungen überschritten werden. Weitere Informationen finden Sie unter Sicherheit und WPF Partial Trust Security.

Hinweis

Wenn Sie nicht mit Visual Studio entwickeln oder mehr über die Projektdateien erfahren möchten, lesen Sie das Erstellen einer WPF-Anwendung.

Bereitstellen eines XBAP

Wenn Sie ein XBAP erstellen, enthält die Ausgabe die folgenden drei Dateien:

Datei BESCHREIBUNG
Ausführbare Datei (.exe) Dies enthält den kompilierten Code und verfügt über eine .exe Erweiterung.
Anwendungsmanifest (.manifest) Dies enthält Metadaten, die der Anwendung zugeordnet sind und über eine MANIFEST-Erweiterung verfügen.
Bereitstellungsmanifest (XBAP) Diese Datei enthält die Informationen, die ClickOnce zum Bereitstellen der Anwendung verwendet und die XBAP-Erweiterung besitzt.

Sie stellen XBAPs auf einem Webserver bereit, wie beispielsweise Microsoft Internet Informationsdienste (IIS) 5.0 oder höher. Sie müssen .NET Framework nicht auf dem Webserver installieren, aber Sie müssen die MIME-Typen (WPF Multipurpose Internet Mail Extensions) und Dateinamenerweiterungen registrieren. Weitere Informationen finden Sie unter Konfigurieren von IIS 5.0 und IIS 6.0 zum Bereitstellen von WPF-Anwendungen.

Um Ihre XBAP für die Bereitstellung vorzubereiten, kopieren Sie die .exe und die zugehörigen Manifeste auf den Webserver. Erstellen Sie eine HTML-Seite, die einen Link enthält, um das Bereitstellungsmanifest zu öffnen, bei dem es sich um die Datei mit der Erweiterung XBAP handelt. Wenn der Benutzer auf den Link zur XBAP-Datei klickt, verarbeitet ClickOnce automatisch die Mechanik des Herunterladens und Startens der Anwendung. Der folgende Beispielcode zeigt eine HTML-Seite, die einen Link enthält, der auf ein XBAP verweist.

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

Sie können auch ein XBAP im Rahmen einer Webseite hosten. Erstellen Sie eine Webseite mit einem oder mehreren Frames. Legen Sie die Quelleigenschaft eines Frames auf die Bereitstellungsmanifestdatei fest. Wenn Sie den integrierten Mechanismus verwenden möchten, um zwischen der Hostingwebseite und dem XBAP zu kommunizieren, müssen Sie die Anwendung in einem Frame hosten. Der folgende Beispielcode zeigt eine HTML-Seite mit zwei Frames, die Quelle für den zweiten Frame wird auf ein XBAP festgelegt.

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

Löschen zwischengespeicherter XBAPs

In einigen Fällen nach der Neuerstellung und dem Starten Ihres XBAP stellen Sie möglicherweise fest, dass eine frühere Version der XBAP geöffnet wird. Dieses Verhalten kann beispielsweise auftreten, wenn Ihre XBAP-Assemblyversionsnummer statisch ist und Sie die XBAP über die Befehlszeile starten. Da in diesem Fall die Versionsnummer zwischen der zwischengespeicherten Version (die version, die zuvor gestartet wurde) und die neue Version unverändert bleibt, wird die neue Version der XBAP nicht heruntergeladen. Stattdessen wird die zwischengespeicherte Version geladen.

In diesen Situationen können Sie die zwischengespeicherte Version mithilfe des Mage-Befehls (installiert mit Visual Studio oder dem Windows SDK) an der Eingabeaufforderung entfernen. Mit dem folgenden Befehl wird der Anwendungscache gelöscht.

Mage.exe -cc

Dieser Befehl garantiert, dass die neueste Version Ihres XBAP gestartet wird. Wenn Sie Ihre Anwendung in Visual Studio debuggen, sollte die neueste Version Ihres XBAP gestartet werden. Im Allgemeinen sollten Sie Ihre Bereitstellungsversionsnummer mit jedem Build aktualisieren. Weitere Informationen zu Mage finden Sie unterMage.exe (Manifestgenerierung und Bearbeitungstool).

Kommunikation mit der Hostwebseite

Wenn die Anwendung in einem HTML-Frame gehostet wird, können Sie mit der Webseite kommunizieren, die den XBAP enthält. Dazu rufen Sie die HostScript-Eigenschaft von BrowserInteropHelper ab. Diese Eigenschaft gibt ein Skriptobjekt zurück, das das HTML-Fenster darstellt. Anschließend können Sie mithilfe der regulären Punktsyntax auf die Eigenschaften, Methoden und Ereignisse des Fensterobjekts zugreifen. Sie können auch auf Skriptmethoden und globale Variablen zugreifen. Das folgende Beispiel zeigt, wie das Skriptobjekt abgerufen und der Browser geschlossen wird.

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

Debuggen von XBAPs, die HostScript verwenden

Wenn Ihr XBAP das Objekt für die HostScript Kommunikation mit dem HTML-Fenster verwendet, gibt es zwei Einstellungen, die Sie angeben müssen, um die Anwendung in Visual Studio auszuführen und zu debuggen. Die Anwendung muss Zugriff auf ihre Ursprungswebsite haben, und Sie müssen die Anwendung mit der HTML-Seite starten, die den XBAP enthält. In den folgenden Schritten wird beschrieben, wie Sie diese beiden Einstellungen überprüfen:

  1. Öffnen Sie in Visual Studio die Projekteigenschaften.

  2. Klicken Sie auf der Registerkarte Sicherheit auf Erweitert.

    Das Dialogfeld "Erweiterte Sicherheitseinstellungen" wird angezeigt.

  3. Stellen Sie sicher, dass das Kontrollkästchen " Zugriff der Anwendung auf ihre Ursprungswebsite gewähren " aktiviert ist, und klicken Sie dann auf "OK".

  4. Wählen Sie auf der Registerkarte " Debuggen " den Startbrowser mit URL-Option aus, und geben Sie die URL für die HTML-Seite an, die den XBAP enthält.

  5. Klicken Sie in Internet Explorer auf die Schaltfläche "Extras ", und wählen Sie dann "Internetoptionen" aus.

    Das Dialogfeld "Internetoptionen" wird angezeigt.

  6. Klicken Sie auf die Registerkarte Erweitert.

  7. Aktivieren Sie in der Liste "Einstellungen" unter "Sicherheit" das Kontrollkästchen "Aktive Inhalte in Dateien auf meinem Computer zulassen ".

  8. Klicke auf OK.

    Die Änderungen werden nach dem Neustart von Internet Explorer wirksam.

Vorsicht

Das Aktivieren aktiver Inhalte in Internet Explorer kann Ihren Computer gefährden. Wenn Sie Ihre Internet Explorer-Sicherheitseinstellungen nicht ändern möchten, können Sie die HTML-Seite von einem Server starten und den Visual Studio-Debugger an den Prozess anfügen.

Überlegungen zur XBAP-Sicherheit

XBAPs werden in der Regel in einer teilweise vertrauenswürdigen Sicherheits-Sandbox ausgeführt, die auf den Berechtigungssatz für die Internetzone beschränkt ist. Daher muss Ihre Implementierung die Teilmenge der WPF-Elemente unterstützen, die in der Internetzone unterstützt werden, oder Sie müssen die Berechtigungen Ihrer Anwendung erhöhen. Weitere Informationen finden Sie unter Sicherheit.

Wenn Sie ein WebBrowser Steuerelement in Ihrer Anwendung verwenden, instanziiert WPF intern das systemeigene WebBrowser ActiveX-Steuerelement. Wenn Ihre Anwendung ein teilweise vertrauenswürdiges XBAP ist, das in Internet Explorer ausgeführt wird, wird das ActiveX-Steuerelement in einem dedizierten Thread des Internet Explorer-Prozesses ausgeführt. Daher gelten die folgenden Einschränkungen:

  • Das WebBrowser Steuerelement sollte ein ähnliches Verhalten wie der Hostbrowser bereitstellen, einschließlich Sicherheitseinschränkungen. Einige dieser Sicherheitseinschränkungen können über die Sicherheitseinstellungen von Internet Explorer gesteuert werden. Weitere Informationen finden Sie unter Sicherheit.

  • Eine Ausnahme wird ausgelöst, wenn ein XBAP domänenübergreifend auf einer HTML-Seite geladen wird.

  • Die Eingabe befindet sich in einem separaten Thread vom WPF WebBrowser, sodass Tastatureingaben nicht abgefangen werden können und der IME-Zustand nicht geteilt wird.

  • Der Zeitpunkt oder die Reihenfolge der Navigation kann aufgrund des ActiveX-Steuerelements abweichen, das auf einem anderen Thread ausgeführt wird. Beispielsweise wird das Navigieren zu einer Seite nicht immer abgebrochen, indem eine andere Navigationsanforderung gestartet wird.

  • Ein benutzerdefiniertes ActiveX-Steuerelement kann Probleme mit der Kommunikation haben, da die WPF-Anwendung in einem separaten Thread ausgeführt wird.

  • MessageHook wird nicht ausgelöst, da HwndHost ein Fenster, das in einem anderen Thread oder Prozess ausgeführt wird, nicht unterklassifiziert werden kann.

Erstellen eines Full-Trust XBAP

Wenn Ihr XBAP voll vertrauenswürdig ist, können Sie Ihr Projekt ändern, um diese Berechtigung zu aktivieren. In den folgenden Schritten wird beschrieben, wie Voll vertrauenswürdig aktiviert wird:

  1. Öffnen Sie in Visual Studio die Projekteigenschaften.

  2. Wählen Sie auf der Registerkarte "Sicherheit " die Option "Dies ist eine voll vertrauenswürdige Anwendung " aus.

Diese Einstellung nimmt die folgenden Änderungen vor:

  • In der Projektdatei wird der Wert des <TargetZone>-Elements zu Custom geändert.

  • Im Anwendungsmanifest (app.manifest) wird demUnrestricted="true" Element ein PermissionSet Attribut hinzugefügt.

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

Bereitstellen eines Full-Trust XBAP

Wenn Sie ein voll vertrauenswürdiges XBAP bereitstellen, das nicht dem ClickOnce Trusted Deployment-Modell folgt, hängt das Verhalten beim Ausführen der Anwendung von der Sicherheitszone ab. In einigen Fällen erhält der Benutzer eine Warnung, wenn er versucht, ihn zu installieren. Der Benutzer kann die Installation fortsetzen oder abbrechen. In der folgenden Tabelle wird das Verhalten der Anwendung für jede Sicherheitszone und die Aktionen beschrieben, die sie für die Anwendung ausführen müssen, um volle Vertrauenswürdigkeit zu erhalten.

Sicherheitszone Verhalten Volles Vertrauen gewinnen
Lokaler Computer Automatisches Volles Vertrauen Es ist keine Aktion erforderlich.
Intranet und vertrauenswürdige Websites Aufforderung zur uneingeschränkten Vertrauenswürdigkeit Signieren Sie die XBAP mit einem Zertifikat, damit der Benutzer die Quelle in der Eingabeaufforderung sieht.
Internet Schlägt mit "Vertrauensstellung nicht gewährt" fehl. Signieren Sie die XBAP mit einem Zertifikat.

Hinweis

Das in der vorherigen Tabelle beschriebene Verhalten gilt für voll vertrauenswürdige XBAPs, die nicht dem ClickOnce Trusted Deployment-Modell folgen.

Es wird empfohlen, das ClickOnce Trusted Deployment-Modell für die Bereitstellung eines voll vertrauenswürdigen XBAP zu verwenden. Mit diesem Modell kann Ihrem XBAP automatisch vollständiges Vertrauen gewährt werden, unabhängig von der Sicherheitszone, damit der Benutzer nicht um Erlaubnis gefragt wird. Im Rahmen dieses Modells müssen Sie Ihre Anwendung mit einem Zertifikat von einem vertrauenswürdigen Anbieter signieren. Weitere Informationen finden Sie unter Übersicht über die Bereitstellung vertrauenswürdiger Anwendungen und Einführung in das Codesignieren.

Überlegungen zur Startzeit-Leistung von XBAP

Ein wichtiger Aspekt der XBAP-Leistung ist die Startzeit. Wenn eine XBAP die erste WPF-Anwendung ist, die geladen werden soll, kann die Kaltstartzeit zehn Sekunden oder mehr betragen. Dies liegt daran, dass die Statusseite von WPF gerendert wird, und sowohl der CLR als auch der WPF müssen kalt gestartet werden, um die Anwendung anzuzeigen.

Ab .NET Framework 3.5 SP1 wird die XBAP-Kaltstartzeit verringert, indem eine nicht verwaltete Statusseite frühzeitig im Bereitstellungszyklus angezeigt wird. Die Statusseite wird fast unmittelbar nach dem Starten der Anwendung angezeigt, da sie von systemeigenem Hostingcode angezeigt und in HTML gerendert wird.

Darüber hinaus verbessert die Parallelität der ClickOnce-Downloadsequenz die Startzeit um bis zu zehn Prozent. Nachdem ClickOnce Manifeste heruntergeladen und überprüft hat, wird der Anwendungsdownload gestartet, und die Statusleiste beginnt mit der Aktualisierung.

Siehe auch