Delen via


Overzicht van WPF XAML-browsertoepassingen

XBAPs (XAML-browsertoepassingen) combineert functies van zowel webtoepassingen als uitgebreide clienttoepassingen. Net als webtoepassingen kunnen XBAPs worden geïmplementeerd op een webserver en worden gestart vanuit Internet Explorer of Firefox in Windows. Net als uitgebreide clienttoepassingen kunnen XBAPs profiteren van de mogelijkheden van WPF. Het ontwikkelen van XBAPs is ook vergelijkbaar met uitgebreide clientontwikkeling. In dit onderwerp vindt u een eenvoudige inleiding op hoog niveau tot XBAP-ontwikkeling en wordt beschreven waar XBAP-ontwikkeling verschilt van standaard uitgebreide clientontwikkeling.

Waarschuwing

XBAPs vereisen dat verouderde browsers werken, zoals Internet Explorer en oude versies van Firefox. Deze oudere browsers worden meestal niet ondersteund in Windows 10 en Windows 11. Moderne browsers bieden geen ondersteuning meer voor de technologie die is vereist voor XBAP-apps vanwege beveiligingsrisico's. Invoegtoepassingen die XBAPs inschakelen, worden niet meer ondersteund. Zie Veelgestelde vragen over door de WPF-browser gehoste toepassingen (XBAP)voor meer informatie.

Dit onderwerp bevat de volgende secties:

Een nieuwe XAML-browsertoepassing (XBAP) maken

De eenvoudigste manier om een nieuw XBAP-project te maken, is met Visual Studio. Wanneer u een nieuw project maakt, selecteert u WPF-browsertoepassing in de lijst met sjablonen. Zie Procedure: Een nieuw WPF-browsertoepassingsproject maken voor meer informatie.

Wanneer u het XBAP-project uitvoert, wordt het geopend in een browservenster in plaats van een zelfstandig venster. Wanneer u de XBAP vanuit Visual Studio debugt, wordt de toepassing uitgevoerd met machtigingen voor de internetzone en genereert deze daarom beveiligingsuitzonderingen indien deze machtigingen worden overschreden. Zie Beveiliging en WPF Partial Trust Security voor meer informatie.

Opmerking

Als u niet ontwikkelt met Visual Studio of meer wilt weten over de projectbestanden, raadpleegt u Het bouwen van een WPF-toepassing.

Een XBAP implementeren

Wanneer u een XBAP bouwt, bevat de uitvoer de volgende drie bestanden:

Bestand Beschrijving
Uitvoerbaar bestand (.exe) Dit bevat de gecompileerde code en heeft een .exe-extensie.
Toepassingsmanifest (.manifest) Dit bevat metagegevens die zijn gekoppeld aan de toepassing en heeft de extensie .manifest.
Implementatiemanifest (.xbap) Dit bestand bevat de informatie die ClickOnce gebruikt om de toepassing te implementeren en heeft de extensie .xbap.

U implementeert XBAPs op een webserver, bijvoorbeeld Microsoft Internet Information Services (IIS) 5.0 of nieuwere versies. U hoeft .NET Framework niet op de webserver te installeren, maar u moet wel de MIME-typen (WPF Multipurpose Internet Mail Extensions) en bestandsnaamextensies registreren. Zie IIS 5.0 en IIS 6.0 configureren voor het implementeren van WPF-toepassingen voor meer informatie.

Als u uw XBAP wilt voorbereiden voor implementatie, kopieert u de .exe en de bijbehorende manifesten naar de webserver. Maak een HTML-pagina met een hyperlink om het implementatiemanifest te openen. Dit is het bestand met de extensie .xbap. Wanneer de gebruiker op de koppeling naar het .xbap-bestand klikt, verwerkt ClickOnce automatisch de mechanica van het downloaden en starten van de toepassing. In de volgende voorbeeldcode ziet u een HTML-pagina met een hyperlink die verwijst naar een XBAP.

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

U kunt ook een XBAP hosten in het frame van een webpagina. Maak een webpagina met een of meer frames. Stel de broneigenschap van een frame in op het manifestbestand voor de implementatie. Als u het ingebouwde mechanisme wilt gebruiken om te communiceren tussen de hostingwebpagina en de XBAP, moet u de toepassing in een frame hosten. In de volgende voorbeeldcode ziet u een HTML-pagina met twee frames. De bron voor het tweede frame is ingesteld op een XBAP.

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

XBAPs uit de cache wissen

In sommige situaties na het opnieuw opbouwen en starten van uw XBAP, kan het zijn dat een eerdere versie van de XBAP is geopend. Dit gedrag kan bijvoorbeeld optreden wanneer uw XBAP-assemblyversienummer statisch is en u de XBAP vanaf de opdrachtregel start. In dit geval, omdat het versienummer tussen de versie in de cache (de versie die eerder is gestart) en de nieuwe versie hetzelfde blijft, wordt de nieuwe versie van de XBAP niet gedownload. In plaats daarvan wordt de versie in de cache geladen.

In dergelijke situaties kunt u de versie in de cache verwijderen met behulp van de Mage-opdracht (geïnstalleerd met Visual Studio of de Windows SDK) bij de opdrachtprompt. Met de volgende opdracht wordt de toepassingscache gewist.

Mage.exe -cc

Met deze opdracht wordt gegarandeerd dat de nieuwste versie van uw XBAP wordt gestart. Wanneer u fouten in uw toepassing in Visual Studio opspoort, moet de nieuwste versie van uw XBAP worden gestart. Over het algemeen moet u het versienummer van de implementatie bijwerken met elke build. Zie Mage.exe (Manifest Generation and Editing Tool) voor meer informatie over Mage.

Communiceren met de hostwebpagina

Wanneer de toepassing wordt gehost in een HTML-frame, kunt u communiceren met de webpagina die de XBAP bevat. Je doet dit door de eigenschap van HostScript op te halen. Deze eigenschap retourneert een scriptobject dat het HTML-venster vertegenwoordigt. Vervolgens kunt u de eigenschappen, methoden en gebeurtenissen in het vensterobject openen met behulp van reguliere puntsyntaxis. U kunt ook toegang krijgen tot scriptmethoden en globale variabelen. In het volgende voorbeeld ziet u hoe u het scriptobject ophaalt en de browser sluit.

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

Fouten opsporen in XBAPs die HostScript gebruiken

Als uw XBAP het HostScript object gebruikt om te communiceren met het HTML-venster, zijn er twee instellingen die u moet opgeven voor het uitvoeren en opsporen van fouten in de toepassing in Visual Studio. De toepassing moet toegang hebben tot de oorspronkelijke site en u moet de toepassing starten met de HTML-pagina die de XBAP bevat. In de volgende stappen wordt beschreven hoe u deze twee instellingen controleert:

  1. Open in Visual Studio de projecteigenschappen.

  2. Klik op het tabblad Beveiliging op Geavanceerd.

    Het dialoogvenster Geavanceerde beveiligingsinstellingen wordt weergegeven.

  3. Zorg ervoor dat het selectievakje De toepassing toegang verlenen tot de site van oorsprong is ingeschakeld en klik vervolgens op OK.

  4. Selecteer op het tabblad Foutopsporing de browser Starten met de URL-optie en geef de URL op voor de HTML-pagina die de XBAP bevat.

  5. Klik in Internet Explorer op de knop Extra en selecteer Internetopties.

    Het dialoogvenster Internetopties wordt weergegeven.

  6. Klik op het tabblad Geavanceerd.

  7. Controleer in de lijst Instellingen onder Beveiliging of het selectievakje Actieve inhoud toestaan om te draaien in bestanden op Deze computer is aangevinkt.

  8. Klik op OK.

    De wijzigingen worden van kracht nadat u Internet Explorer opnieuw hebt gestart.

Waarschuwing

Als u actieve inhoud inschakelt in Internet Explorer, loopt uw computer mogelijk gevaar. Als u de beveiligingsinstellingen van Internet Explorer niet wilt wijzigen, kunt u de HTML-pagina van een server starten en het foutopsporingsprogramma van Visual Studio aan het proces koppelen.

Beveiligingsoverwegingen voor XBAP

XBAPs worden doorgaans uitgevoerd in een beveiligde sandbox met gedeeltelijk vertrouwen, die is beperkt tot de machtigingenset voor het internetgebied. Daarom moet uw implementatie de subset van WPF-elementen ondersteunen die worden ondersteund in de internetzone of moet u de machtigingen van uw toepassing verhogen. Zie Securityvoor meer informatie.

Wanneer u een WebBrowser besturingselement in uw toepassing gebruikt, maakt WPF intern een instantie van het WebBrowser ActiveX-besturingselement. Wanneer uw toepassing een gedeeltelijk vertrouwde XBAP is die wordt uitgevoerd in Internet Explorer, wordt het ActiveX-besturingselement uitgevoerd in een speciale thread van het Internet Explorer-proces. Daarom zijn de volgende beperkingen van toepassing:

  • Het WebBrowser bedieningselement moet gedrag bieden dat vergelijkbaar is met de hostbrowser, inclusief beveiligingsregels. Sommige van deze beveiligingsbeperkingen kunnen worden beheerd via de beveiligingsinstellingen van Internet Explorer. Zie Securityvoor meer informatie.

  • Er wordt een uitzondering gegenereerd wanneer een XBAP cross-domain in een HTML-pagina wordt geladen.

  • Invoer bevindt zich op een afzonderlijke thread van de WPF WebBrowser, zodat toetsenbordinvoer niet kan worden onderschept en de IME-status niet wordt gedeeld.

  • De timing of volgorde van de navigatie kan afwijken omdat het ActiveX-besturingselement wordt uitgevoerd op een andere thread. Het navigeren naar een pagina wordt bijvoorbeeld niet altijd geannuleerd door een andere navigatieaanvraag te starten.

  • Een aangepast ActiveX-besturingselement kan problemen hebben met communicatie omdat de WPF-toepassing wordt uitgevoerd in een afzonderlijke thread.

  • MessageHook wordt niet gegenereerd omdat HwndHost een venster dat in een andere thread of proces draait, niet kan subclassen.

Een Full-Trust XBAP maken

Als uw XBAP volledig vertrouwen vereist, kunt u uw project wijzigen om deze machtiging in te schakelen. In de volgende stappen wordt beschreven hoe u volledig vertrouwen inschakelt:

  1. Open in Visual Studio de projecteigenschappen.

  2. Selecteer op het tabblad Beveiliging de optie Dit is een toepassing voor volledig vertrouwen .

Met deze instelling worden de volgende wijzigingen aangebracht:

  • In het projectbestand wordt de <TargetZone> elementwaarde gewijzigd in Custom.

  • In het toepassingsmanifest (app.manifest) wordt een Unrestricted="true" kenmerk toegevoegd aan het element 'PermissionSet .

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

Een Full-Trust XBAP implementeren

Wanneer u een volledig vertrouwde XBAP implementeert die niet voldoet aan het ClickOnce Trusted Deployment-model, is het gedrag wanneer de gebruiker de toepassing uitvoert, afhankelijk van de beveiligingszone. In sommige gevallen ontvangt de gebruiker een waarschuwing wanneer hij deze probeert te installeren. De gebruiker kan ervoor kiezen om de installatie voort te zetten of te annuleren. In de volgende tabel wordt het gedrag van de toepassing voor elke beveiligingszone beschreven en wat u moet doen voor de toepassing om volledig vertrouwen te krijgen.

Beveiligingszone Gedrag Volledig vertrouwen krijgen
Lokale computer Automatisch volledig vertrouwen Er is geen actie nodig.
Intranet en vertrouwde sites Vragen om volledig vertrouwen Onderteken de XBAP met een certificaat, zodat de gebruiker de bron in de prompt ziet.
Internet Mislukt met 'Vertrouwen niet verleend' Onderteken de XBAP met een certificaat.

Opmerking

Het gedrag dat in de vorige tabel wordt beschreven, is bedoeld voor XBAPs met volledige vertrouwensrelatie die niet voldoen aan het ClickOnce Trusted Deployment-model.

Het wordt aanbevolen het ClickOnce Trusted Deployment-model te gebruiken voor het implementeren van een volledig vertrouwde XBAP. Met dit model kan uw XBAP automatisch volledig vertrouwen krijgen, ongeacht de beveiligingszone, zodat de gebruiker niet wordt gevraagd. Als onderdeel van dit model moet u uw toepassing ondertekenen met een certificaat van een vertrouwde uitgever. Zie Overzicht van de implementatie van vertrouwde toepassingen en inleiding tot ondertekening van programmacode voor meer informatie.

Prestatieoverwegingen voor XBAP-begintijd

Een belangrijk aspect van XBAP-prestaties is de begintijd. Als een XBAP de eerste WPF-toepassing is die moet worden geladen, kan de koude begintijd tien seconden of langer zijn. Dit komt doordat de voortgangspagina wordt weergegeven door WPF, en zowel de CLR als WPF moet koud zijn gestart om de toepassing weer te geven.

Vanaf .NET Framework 3.5 SP1 wordt de koude starttijd van XBAP beperkt door een onbeheerde voortgangspagina vroeg in de implementatiecyclus weer te geven. De voortgangspagina wordt bijna direct weergegeven nadat de toepassing is gestart, omdat deze wordt weergegeven door systeemeigen hostingcode en wordt weergegeven in HTML.

Bovendien verbetert de gelijktijdigheid van de ClickOnce-downloadreeks de starttijd met maximaal tien procent. Nadat ClickOnce manifesten heeft gedownload en gevalideerd, wordt het downloaden van de toepassing gestart en wordt de voortgangsbalk bijgewerkt.

Zie ook