Panoramica delle applicazioni browser XAML di WPFWPF XAML Browser Applications Overview

applicazioni browser XAML (XBAP)XAML browser applications (XBAPs) Combina le caratteristiche di applicazioni Web e applicazioni rich client.applicazioni browser XAML (XBAP)XAML browser applications (XBAPs) combines features of both Web applications and rich-client applications. In modo analogo alle applicazioni Web, le applicazioni XBAP possono essere distribuite in un server Web e avviate da Internet Explorer o Firefox.Like Web applications, XBAPs can be deployed to a Web server and started from Internet Explorer or Firefox. Come le applicazioni rich client, le applicazioni XBAP possono trarre vantaggio dalle funzionalità di WPFWPF.Like rich-client applications, XBAPs can take advantage of the capabilities of WPFWPF. Lo sviluppo di applicazioni XBAP è simile allo sviluppo di applicazioni rich client.Developing XBAPs is also similar to rich-client development. In questo argomento viene fornita un'introduzione semplice e dettagliata allo sviluppo di applicazioni XBAP e vengono illustrate le differenze esistenti tra lo sviluppo di questo tipo di applicazioni e lo sviluppo di applicazioni rich client standard.This topic provides a simple, high-level introduction to XBAP development and describes where XBAP development differs from standard rich-client development.

Di seguito sono elencate le diverse sezioni di questo argomento:This topic contains the following sections:

Creazione di una nuova applicazione browser XAML (XBAP)Creating a New XAML Browser Application (XBAP)

Il modo più semplice per creare un nuovo progetto XBAP consiste nell'utilizzare Microsoft Visual Studio 2010Microsoft Visual Studio 2010.The simplest way to create a new XBAP project is with Microsoft Visual Studio 2010Microsoft Visual Studio 2010. Quando si crea un nuovo progetto, selezionare Applicazione browser WPF nell'elenco di modelli.When creating a new project, select WPF Browser Application from the list of templates. Per altre informazioni, vedere Procedura: creare un nuovo progetto di applicazione browser WPF.For more information, see How to: Create a New WPF Browser Application Project.

Quando viene eseguito, il progetto XBAP viene aperto in una finestra del browser anziché in una finestra autonoma.When you run the XBAP project, it opens in a browser window instead of a stand-alone window. Quando si esegue il debug del progetto XBAP in Microsoft Visual StudioMicrosoft Visual Studio, l'applicazione viene eseguita con le autorizzazioni dell'area Internet e pertanto vengono generate eccezioni di sicurezza in caso di autorizzazioni di livello superiore.When you debug the XBAP from Microsoft Visual StudioMicrosoft Visual Studio, the application runs with Internet zone permission and will therefore throw security exceptions if those permissions are exceeded. Per ulteriori informazioni, vedere Sicurezza e Sicurezza con attendibilità parziale in WPF.For more information, see Security and WPF Partial Trust Security.

Nota

Se per lo sviluppo non si utilizza Microsoft Visual StudioMicrosoft Visual Studio o se si desiderano ulteriori informazioni sui file di progetto, vedere Compilazione di un'applicazione WPF (WPF).If you are not developing with Microsoft Visual StudioMicrosoft Visual Studio or want to learn more about the project files, see Building a WPF Application.

Distribuzione di un'applicazione XBAPDeploying an XBAP

Quando si compila un'applicazione XBAP, nell'output sono inclusi i tre file seguenti:When you build an XBAP, the output includes the following three files:

FileFile DescrizioneDescription
Eseguibile (con estensione exe)Executable (.exe) Contiene il codice compilato e ha un'estensione exe.This contains the compiled code and has an .exe extension.
Manifesto dell'applicazione (con estensione manifest)Application manifest (.manifest) Contiene i metadati associati all'applicazione e ha un'estensione manifest.This contains metadata associated with the application and has a .manifest extension.
Manifesto di distribuzione (con estensione xbap)Deployment manifest (.xbap) Questo file contiene le informazioni utilizzate da ClickOnceClickOnce per distribuire l'applicazione e presenta l'estensione xbap.This file contains the information that ClickOnceClickOnce uses to deploy the application and has the .xbap extension.

Le applicazioni XBAP vengono distribuite in un server Web, ad esempio Microsoft Microsoft Internet Information Services (IIS) 5.0Microsoft Internet Information Services (IIS) 5.0 o versioni successive.You deploy XBAPs to a Web server, for example Microsoft Internet Information Services (IIS) 5.0Microsoft Internet Information Services (IIS) 5.0 or later versions. Non è necessario installare .NET Framework nel server Web, ma è necessario registrare il WPFWPF Multipurpose Internet Mail Extensions (MIME)Multipurpose Internet Mail Extensions (MIME) estensioni dei nomi di tipi e file.You do not have to install the .NET Framework on the Web server, but you do have to register the WPFWPF Multipurpose Internet Mail Extensions (MIME)Multipurpose Internet Mail Extensions (MIME) types and file name extensions. Per ulteriori informazioni, vedere Configurare IIS 5.0 e IIS 6.0 per distribuire applicazioni WPF.For more information, see Configure IIS 5.0 and IIS 6.0 to Deploy WPF Applications.

Per preparare l'applicazione XBAP per la distribuzione, copiare il file con estensione exe e i file manifesto associati nel server Web.To prepare your XBAP for deployment, copy the .exe and the associated manifests to the Web server. Creare una pagina HTML contenente un collegamento ipertestuale per aprire il manifesto di distribuzione, ovvero il file con estensione xbap.Create an HTML page that contains a hyperlink to open the deployment manifest, which is the file that has the .xbap extension. Quando l'utente fa clic sul collegamento del file con estensione xbap, in ClickOnceClickOnce vengono gestite automaticamente le operazioni di download e di avvio dell'applicazione.When the user clicks the link to the .xbap file, ClickOnceClickOnce automatically handles the mechanics of downloading and starting the application. Nel codice di esempio seguente viene illustrata una pagina HTML contenente un collegamento ipertestuale che punta a un'applicazione XBAP.The following example code shows an HTML page that contains a hyperlink that points to an XBAP.

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

È inoltre possibile ospitare un'applicazione XBAP nel frame di una pagina Web.You can also host an XBAP in the frame of a Web page. Creare una pagina Web con uno o più frame.Create a Web page with one or more frames. Impostare la proprietà di origine di un frame sul file manifesto di distribuzione.Set the source property of a frame to the deployment manifest file. Se per la comunicazione tra la pagina Web di hosting e l'applicazione XBAP si desidera utilizzare il meccanismo incorporato, sarà necessario ospitare l'applicazione in un frame.If you want to use the built-in mechanism to communicate between the hosting Web page and the XBAP, you must host the application in a frame. Nel codice di esempio seguente viene illustrata una pagina HTML con due frame in cui l'origine per il secondo frame viene impostata su un'applicazione XBAP.The following example code shows an HTML page with two frames, the source for the second frame is set to an XBAP.

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

Cancellazione di applicazioni XBAP memorizzate nella cacheClearing Cached XBAPs

In alcuni casi, dopo aver ricompilato e avviato l'applicazione XBAP, è possibile che ci accorga che è aperta una versione precedente dell'applicazione XBAP.In some situations after rebuilding and starting your XBAP, you may find that an earlier version of the XBAP is opened. Questa situazione può ad esempio verificarsi quando il numero di versione dell'assembly XBAP è statico e l'applicazione XBAP viene avviata dalla riga di comando.For example, this behavior may occur when your XBAP assembly version number is static and you start the XBAP from the command line. In questo caso, poiché il numero della versione memorizzata nella cache (quella avviata in precedenza) e quello della nuova versione coincidono, la nuova versione dell'applicazione XBAP non viene scaricata.In this case, because the version number between the cached version (the version that was previously started) and the new version remains the same, the new version of the XBAP is not downloaded. Al contrario, viene caricata la versione memorizzata nella cache.Instead, the cached version is loaded.

In questi casi, è possibile rimuovere la versione memorizzata nella cache utilizzando il comando Mage (installato con Visual Studio o Windows SDKWindows SDK) dal prompt dei comandi.In these situations, you can remove the cached version by using the Mage command (installed with Visual Studio or the Windows SDKWindows SDK) at the command prompt. L'esecuzione del comando seguente determina la cancellazione della cache dell'applicazione.The following command clears the application cache.

Mage.exe -cc

L'esecuzione di questo comando garantisce che venga avviata la versione più recente dell'applicazione XBAP.This command guarantees that the latest version of your XBAP is started. Quando si esegue il debug dell'applicazione in Visual StudioVisual Studio, deve essere avviata la versione più recente dell'applicazione XBAP.When you debug your application in Visual StudioVisual Studio, the latest version of your XBAP should be started. In generale, è necessario aggiornare il numero di versione della distribuzione a ogni compilazione.In general, you should update your deployment version number with each build. Per ulteriori informazioni sul comando Mage, vedere Mage.exe (Strumento per la generazione e la modifica di manifesti).For more information about Mage, see Mage.exe (Manifest Generation and Editing Tool).

Comunicazione con la pagina Web hostCommunicating with the Host Web Page

Quando l'applicazione è ospitata in un frame HTML, è possibile comunicare con la pagina Web che contiene l'applicazione XBAP.When the application is hosted in an HTML frame, you can communicate with the Web page that contains the XBAP. A tale scopo, il recupero di HostScript proprietà BrowserInteropHelper.You do this by retrieving the HostScript property of BrowserInteropHelper. Questa proprietà restituisce un oggetto script che rappresenta la finestra HTML.This property returns a script object that represents the HTML window. È quindi possibile accedere alle proprietà, ai metodi e agli eventi nell'oggetto finestra utilizzando la normale sintassi del punto.You can then access the properties, methods, and events on the window object by using regular dot syntax. È inoltre possibile accedere a metodi di script e variabili globali.You can also access script methods and global variables. Nell'esempio seguente viene illustrato come recuperare l'oggetto script e chiudere il browser.The following example shows how to retrieve the script object and close the browser.

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

Debug di applicazioni XBAP che utilizzano HostScriptDebugging XBAPs that Use HostScript

Se l'applicazione XBAP utilizza il HostScript oggetto per comunicare con la finestra HTML, sono disponibili due impostazioni che è necessario specificare per eseguire e il debug dell'applicazione in Visual StudioVisual Studio.If your XBAP uses the HostScript object to communicate with the HTML window, there are two settings that you must specify to run and debug the application in Visual StudioVisual Studio. L'applicazione deve disporre dell'accesso al sito di origine ed è necessario avviare l'applicazione con la pagina HTML che contiene l'applicazione XBAP.The application must have access to its site of origin and you must start the application with the HTML page that contains the XBAP. Nei passaggi seguenti viene descritto come controllare queste due impostazioni:The following steps describe how to check these two settings:

  1. In Visual Studio aprire le proprietà del progetto.In Visual Studio, open the project properties.

  2. Nella scheda Sicurezza fare clic su Avanzate.On the Security tab, click Advanced.

    Verrà visualizzata la finestra di dialogo Impostazioni di sicurezza avanzate.The Advanced Security Settings dialog box appears.

  3. Verificare che la casella di controllo Concedi all'applicazione accesso al proprio sito di origine sia selezionata, quindi fare clic su OK.Make sure that the Grant the application access to its site of origin check box is checked and then click OK.

  4. Nella scheda Debug selezionare l'opzione Avvia il browser con URL e specificare l'URL della pagina HTML che contiene l'applicazione XBAP.On the Debug tab, select the Start browser with URL option and specify the URL for the HTML page that contains the XBAP.

  5. In Internet Explorer fare clic su Strumenti, quindi selezionare Opzioni Internet.In Internet Explorer, click the Tools button and then select Internet Options.

    Viene visualizzata la finestra di dialogo Opzioni Internet.The Internet Options dialog box appears.

  6. Fare clic sulla scheda Avanzate.Click the Advanced tab.

  7. Nell'elenco Impostazioni in Sicurezza selezionare la casella di controllo Consenti l'esecuzione di contenuto attivo in file in Risorse del computer.In the Settings list under Security, check the Allow active content to run in files on My Computer check box.

  8. Fare clic su OK.Click OK.

    Le modifiche avranno effetto dopo il riavvio di Internet Explorer.The changes will take effect after you restart Internet Explorer.

Attenzione

L'abilitazione di contenuto attivo in Internet Explorer può esporre il computer a rischi.Enabling active content in Internet Explorer may put your computer at risk. Per ulteriori informazioni, vedere la pagina Funzionalità per la sicurezza e la privacy in Internet Explorer.For more information, see Security and privacy features in Internet Explorer. Se non si desidera modificare le impostazioni di sicurezza di Internet Explorer, è possibile avviare la pagina HTML da un server e collegare il debugger di Visual StudioVisual Studio al processo.If you do not want to change your Internet Explorer security settings, you can launch the HTML page from a server and attach the Visual StudioVisual Studio debugger to the process.

Considerazioni sulla sicurezza delle applicazioni XBAPXBAP Security Considerations

Le applicazioni XBAP vengono in genere eseguite in una sandbox di sicurezza con attendibilità parziale limitata al set di autorizzazioni dell'area Internet.XBAPs typically execute in a partial-trust security sandbox that is restricted to the Internet zone permission set. Di conseguenza, l'implementazione deve supportare il sottoinsieme di elementi WPFWPF supportati nell'area Internet oppure è necessario elevare le autorizzazioni dell'applicazione.Consequently, your implementation must support the subset of WPFWPF elements that are supported in the Internet zone or you must elevate the permissions of your application. Per ulteriori informazioni, vedere Sicurezza.For more information, see Security.

Quando si utilizza un WebBrowser controllo nell'applicazione WPF crea internamente un'istanza del controllo WebBrowser ActiveX nativo.When you use a WebBrowser control in your application, WPF internally instantiates the native WebBrowser ActiveX control. Quando l'applicazione è un'applicazione XBAP con attendibilità parziale in esecuzione in Internet Explorer, il controllo ActiveX viene eseguito in un thread dedicato del processo Internet Explorer.When your application is a partial-trust XBAP running in Internet Explorer, the ActiveX control runs in a dedicated thread of the Internet Explorer process. Vengono pertanto applicate le limitazioni seguenti:Therefore, the following limitations apply:

  • Il WebBrowser controllo deve fornire un comportamento simile per il browser di host, incluse le restrizioni di sicurezza.The WebBrowser control should provide behavior similar to the host browser, including security restrictions. È possibile controllare alcune di queste restrizioni di sicurezza tramite le impostazioni di sicurezza di Internet Explorer.Some of these security restrictions can be controlled through the Internet Explorer security settings. Per ulteriori informazioni, vedere Sicurezza.For more information, see Security.

  • Viene generata un'eccezione quando un'applicazione XBAP viene caricata tra domini in una pagina HTML.An exception is thrown when an XBAP is loaded cross-domain in an HTML page.

  • Input è in un thread separato da WPF WebBrowser, pertanto non è possibile intercettare l'input da tastiera e lo stato IME non condiviso.Input is on a separate thread from the WPF WebBrowser, so keyboard input cannot be intercepted and the IME state is not shared.

  • È possibile che la temporizzazione o l'ordine di navigazione risulti diverso a causa del controllo ActiveX in esecuzione in un altro thread.The timing or order of navigation may be different due to the ActiveX control running on another thread. Ad esempio, la navigazione a una pagina non viene sempre annullata dall'avvio di un'altra richiesta di navigazione.For example, navigating to a page is not always cancelled by starting another navigation request.

  • Un controllo ActiveX personalizzato può causare problemi alla comunicazione dal momento che l'applicazione WPF è in esecuzione in un thread separato.A custom ActiveX control may have trouble with communication since the WPF application is running in a separate thread.

  • MessageHook non viene generato perché HwndHost non sottoclasse una finestra in esecuzione in un altro thread o processo.MessageHook does not get raised because HwndHost cannot subclass a window running in another thread or process.

Creazione di un'applicazione XBAP con attendibilità totaleCreating a Full-Trust XBAP

Se per l'applicazione XBAP è richiesta l'attendibilità totale, è possibile modificare il progetto per abilitare questa autorizzazione.If your XBAP requires full trust, you can change your project to enable this permission. Nei passaggi seguenti viene descritto come abilitare l'attendibilità totale:The following steps describe how to enable full trust:

  1. In Visual Studio aprire le proprietà del progetto.In Visual Studio, open the project properties.

  2. Nella scheda Sicurezza selezionare l'opzione È un'applicazione completamente attendibile.On the Security tab, select the This is a full trust application option.

Questa impostazione determina le modifiche seguenti:This setting makes the following changes:

  • Nel file di progetto il valore dell'elemento <TargetZone> viene impostato su Custom.In the project file, the <TargetZone> element value is changed to Custom.

  • Nel manifesto dell'applicazione (app.manifest) un attributo Unrestricted="true" viene aggiunto all'elemento PermissionSet.In the application manifest (app.manifest), an Unrestricted="true" attribute is added to the PermissionSet element.

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

Distribuzione di un'applicazione XBAP con attendibilità totaleDeploying a Full-Trust XBAP

Quando si distribuisce un'applicazione XBAP con attendibilità totale che non segue il modello di distribuzione attendibile di ClickOnce, il comportamento che si ottiene quando l'utente esegue l'applicazione dipenderà dall'area di sicurezza.When you deploy a full-trust XBAP that does not follow the ClickOnce Trusted Deployment model, the behavior when the user runs the application will depend on the security zone. In alcuni casi, l'utente riceverà un avviso quando tenta di installare il codice.In some cases, the user will receive a warning when they attempt to install it. L'utente potrà scegliere se continuare o annullare l'installazione.The user can choose to continue or cancel the installation. La tabella seguente descrive il comportamento dell'applicazione per ogni area di sicurezza e le azioni necessarie relative all'applicazione per acquisire attendibilità totale.The following table describes the behavior of the application for each security zone and what you have to do for the application to receive full trust.

Area di sicurezzaSecurity Zone ComportamentoBehavior Ottenere l'attendibilità totaleGetting Full Trust
Computer localeLocal computer Attendibilità totale automaticaAutomatic full trust Nessuna azione necessaria.No action is needed.
Intranet e siti attendibiliIntranet and trusted sites Richiesta di attendibilità totalePrompt for full trust Firma dell'applicazione XBAP con un certificato in modo che l'utente veda l'origine nel prompt.Sign the XBAP with a certificate so that the user sees the source in the prompt.
InternetInternet Esito negativo con "Attendibilità non concessa"Fails with "Trust Not Granted" Firma dell'applicazione XBAP con un certificato.Sign the XBAP with a certificate.

Nota

Il comportamento descritto nella tabella precedente è relativo alle applicazioni XBAP con attendibilità totale che non seguono il modello di distribuzione attendibile di ClickOnce.The behavior described in the previous table is for full-trust XBAPs that do not follow the ClickOnce Trusted Deployment model.

Per la distribuzione di un'applicazione XBAP con attendibilità totale, si consiglia di utilizzare il modello di distribuzione attendibile di ClickOnce.It is recommended that you use the ClickOnce Trusted Deployment model for deploying a full-trust XBAP. Quando si utilizza questo modello, all'applicazione XBAP viene concessa automaticamente l'attendibilità totale indipendentemente dall'area di sicurezza e all'utente non viene visualizzata alcuna richiesta.This model allows your XBAP to be granted full trust automatically, regardless of the security zone, so that the user is not prompted. Come parte di questo modello, è necessario firmare l'applicazione con un certificato di un editore attendibile.As part of this model, you must sign your application with a certificate from a trusted publisher. Per altre informazioni, vedere Cenni preliminari sulla distribuzione di applicazioni attendibili e Introduzione alla firma del codice.For more information, see Trusted Application Deployment Overview and Introduction to Code Signing.

Considerazioni sulle prestazioni dei tempi di avvio delle applicazioni XBAPXBAP Start Time Performance Considerations

Un aspetto importante delle prestazioni di applicazioni XBAP riguarda i tempi di avvio.An important aspect of XBAP performance is its start time. Se un'applicazione XBAP è la prima applicazione WPF da caricare, i tempi di avvio a freddo possono essere pari a dieci o più secondi.If an XBAP is the first WPF application to load, the cold start time can be ten seconds or more. Questa situazione si verifica perché il rendering della pagina di avanzamento viene eseguito da WPF e per visualizzare l'applicazione, CLR e WPF devono essere avviati a freddo.This is because the progress page is rendered by WPF, and both the CLR and WPF must be cold-started to display the application.

Quando l'avvio viene eseguito in .NET Framework 3.5 SP1.NET Framework 3.5 SP1, i tempi di avvio a freddo delle applicazioni XBAP vengono ridotti mediante la visualizzazione di una pagina di avanzamento non gestita all'inizio del ciclo di distribuzione.Starting in .NET Framework 3.5 SP1.NET Framework 3.5 SP1, XBAP cold-start time is mitigated by displaying an unmanaged progress page early in the deployment cycle. La pagina di avanzamento viene visualizzata subito dopo l'avvio dell'applicazione, in quanto viene visualizzata da codice ospitato in maniera nativa ed eseguendone il rendering in HTML.The progress page appears almost immediately after the application is started, because it is displayed by native hosting code and rendered in HTML.

La concorrenza migliorata della sequenza di download di ClickOnceClickOnce migliora inoltre i tempi di avvio del 10%.In addition, improved concurrency of the ClickOnceClickOnce download sequence improves the start time by up to ten percent. Dopo il download di ClickOnceClickOnce e la convalida dei manifesti, vengono avviati il download dell'applicazione e l'aggiornamento dell'indicatore di stato.After ClickOnceClickOnce downloads and validates manifests, the application download starts, and the progress bar starts to update.

Vedere ancheSee Also

Configurare Visual Studio per eseguire il debug di un'applicazione browser XAML in grado di chiamare un servizio WebConfigure Visual Studio to Debug a XAML Browser Application to Call a Web Service
Distribuzione di un'applicazione WPFDeploying a WPF Application