Información general sobre las aplicaciones de explorador XAML de WPFWPF XAML Browser Applications Overview

Aplicaciones del explorador XAML (XBAPs)XAML browser applications (XBAPs) combina las características de aplicaciones Web y aplicaciones cliente enriquecidas.Aplicaciones del explorador XAML (XBAPs)XAML browser applications (XBAPs) combines features of both Web applications and rich-client applications. Al igual que las aplicaciones web, las aplicaciones XBAP se pueden implementar en un servidor web e iniciar desde Internet Explorer o Firefox.Like Web applications, XBAPs can be deployed to a Web server and started from Internet Explorer or Firefox. Al igual que las aplicaciones cliente enriquecidas, las aplicaciones XBAP pueden aprovechar las funcionalidades de WPFWPF.Like rich-client applications, XBAPs can take advantage of the capabilities of WPFWPF. El desarrollo de aplicaciones XBAP también se parece al desarrollo de clientes enriquecidos.Developing XBAPs is also similar to rich-client development. En este tema se proporciona una sencilla introducción de alto nivel al desarrollo de aplicaciones XBAP y se describe en qué se diferencia este del desarrollo estándar de clientes enriquecidos.This topic provides a simple, high-level introduction to XBAP development and describes where XBAP development differs from standard rich-client development.

Este tema contiene las siguientes secciones:This topic contains the following sections:

Creación de una aplicación de explorador XAML (XBAP)Creating a New XAML Browser Application (XBAP)

La manera más sencilla de crear un proyecto de XBAP es con 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. Al crear un proyecto, seleccione Aplicación de explorador WPF en la lista de plantillas.When creating a new project, select WPF Browser Application from the list of templates. Para más información, consulte Cómo: Crear un nuevo proyecto de aplicación de explorador de WPF.For more information, see How to: Create a New WPF Browser Application Project.

Cuando se ejecuta el proyecto de XBAP, se abre en una ventana del explorador en lugar de en una independiente.When you run the XBAP project, it opens in a browser window instead of a stand-alone window. Cuando se depura la aplicación XBAP desde Microsoft Visual StudioMicrosoft Visual Studio, la aplicación se ejecuta con permisos de zona de Internet y, por tanto, genera excepciones de seguridad si se superan esos permisos.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. Para más información, consulte Seguridad y Seguridad de confianza parcial de WPF.For more information, see Security and WPF Partial Trust Security.

Nota

Si no va a usar Microsoft Visual StudioMicrosoft Visual Studio para el desarrollo o quiere aprender más sobre los archivos de proyecto, consulte Compilar una aplicación 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.

Implementación de una aplicación XBAPDeploying an XBAP

Cuando se compila una aplicación XBAP, en la salida se incluyen los tres archivos siguientes:When you build an XBAP, the output includes the following three files:

ArchivoFile DescripciónDescription
Ejecutable (.exe)Executable (.exe) Contiene el código compilado y tiene la extensión .exe.This contains the compiled code and has an .exe extension.
Manifiesto de aplicación (.manifest)Application manifest (.manifest) Contiene metadatos asociados con la aplicación y tiene la extensión .manifest.This contains metadata associated with the application and has a .manifest extension.
Manifiesto de implementación (.xbap)Deployment manifest (.xbap) Este archivo contiene la información que ClickOnceClickOnce utiliza para implementar la aplicación y tiene la extensión .xbap.This file contains the information that ClickOnceClickOnce uses to deploy the application and has the .xbap extension.

Las aplicaciones XBAP se implementan en un servidor web, por ejemplo Microsoft Internet Information Services (IIS) 5.0Microsoft Internet Information Services (IIS) 5.0 o versiones posteriores.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. No es necesario instalar .NET Framework en el servidor Web, pero tiene que registrar el WPFWPF Extensiones multipropósito de correo Internet (MIME)Multipurpose Internet Mail Extensions (MIME) extensiones de nombre de archivo y tipos.You do not have to install the .NET Framework on the Web server, but you do have to register the WPFWPF Extensiones multipropósito de correo Internet (MIME)Multipurpose Internet Mail Extensions (MIME) types and file name extensions. Para más información, consulte Cómo: Configurar IIS 5.0 e IIS 6.0 para implementar aplicaciones WPF.For more information, see Configure IIS 5.0 and IIS 6.0 to Deploy WPF Applications.

Para preparar la aplicación XBAP para la implementación, copie el archivo .exe y los manifiestos asociados al servidor web.To prepare your XBAP for deployment, copy the .exe and the associated manifests to the Web server. Cree una página HTML que contenga un hipervínculo para abrir el manifiesto de implementación, que es el archivo con la extensión .xbap.Create an HTML page that contains a hyperlink to open the deployment manifest, which is the file that has the .xbap extension. Cuando el usuario hace clic en el vínculo al archivo .xbap, ClickOnceClickOnce controla automáticamente el mecanismo de descarga e inicio de la aplicación.When the user clicks the link to the .xbap file, ClickOnceClickOnce automatically handles the mechanics of downloading and starting the application. En el ejemplo de código siguiente, se muestra una página HTML que contiene un hipervínculo que apunta a una aplicación 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>  

También puede hospedar una aplicación XBAP en el marco de una página web.You can also host an XBAP in the frame of a Web page. Cree una página web con uno o varios marcos.Create a Web page with one or more frames. Establezca la propiedad de origen de un marco en el archivo de manifiesto de implementación.Set the source property of a frame to the deployment manifest file. Si desea usar el mecanismo integrado para la comunicación entre la página web que hospeda y la aplicación XBAP, debe hospedar la aplicación en un marco.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. En el ejemplo de código siguiente, se muestra una página HTML con dos marcos, donde el origen del segundo marco está establecido en una aplicación 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>  

Borrado de las aplicaciones XBAP en cachéClearing Cached XBAPs

En algunas situaciones, después de volver a compilar e iniciar la aplicación XBAP, es posible que se abra una versión anterior de ella.In some situations after rebuilding and starting your XBAP, you may find that an earlier version of the XBAP is opened. Por ejemplo, este comportamiento puede producirse cuando el número de versión del ensamblado XBAP es estático y se inicia la aplicación XBAP desde la línea de comandos.For example, this behavior may occur when your XBAP assembly version number is static and you start the XBAP from the command line. En este caso, como no ha cambiado el número de versión entre la versión almacenada en caché (la que se inició previamente) y la nueva versión, no se descarga la nueva versión de la aplicación XBAP.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. En su lugar, se carga la versión almacenada en caché.Instead, the cached version is loaded.

En estas situaciones, puede quitar la versión almacenada en caché mediante el comando Mage (instalado con Visual Studio o Windows SDKWindows SDK) en el símbolo del sistema.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. Con el siguiente comando se borra la memoria caché de la aplicación.The following command clears the application cache.

Mage.exe -cc

Este comando garantiza que se inicie la versión más reciente de la aplicación XBAP.This command guarantees that the latest version of your XBAP is started. Al depurar la aplicación en Visual StudioVisual Studio, se debería iniciar la versión más reciente de la aplicación XBAP.When you debug your application in Visual StudioVisual Studio, the latest version of your XBAP should be started. Por lo general, debería actualizar el número de versión de implementación con cada compilación.In general, you should update your deployment version number with each build. Para más información sobre Mage, consulte Mage.exe (Herramienta de generación y edición de manifiestos).For more information about Mage, see Mage.exe (Manifest Generation and Editing Tool).

Comunicación con la página web hostCommunicating with the Host Web Page

Cuando la aplicación se hospeda en un marco HTML, se puede comunicar con la página web que contiene la aplicación XBAP.When the application is hosted in an HTML frame, you can communicate with the Web page that contains the XBAP. Para ello, recuperar el HostScript propiedad de BrowserInteropHelper.You do this by retrieving the HostScript property of BrowserInteropHelper. Esta propiedad devuelve un objeto de script que representa la ventana HTML.This property returns a script object that represents the HTML window. Después, puede acceder a las propiedades, los métodos y los eventos en el objeto window mediante la sintaxis con punto normal.You can then access the properties, methods, and events on the window object by using regular dot syntax. También puede acceder a los métodos de script y a las variables globales.You can also access script methods and global variables. En el ejemplo siguiente se muestra cómo recuperar el objeto de script y cerrar el explorador.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

Depuración de aplicaciones XBAP que usan HostScriptDebugging XBAPs that Use HostScript

Si la aplicación XBAP usa el HostScript objeto para comunicarse con la ventana HTML, hay dos opciones de configuración que debe especificar para ejecutar y depurar la aplicación en 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. La aplicación debe tener acceso a su sitio de origen y se debe iniciar la aplicación con la página HTML que contiene la aplicación 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. En los pasos siguientes se describe cómo comprobar estas dos configuraciones:The following steps describe how to check these two settings:

  1. En Visual Studio, abra las propiedades del proyecto.In Visual Studio, open the project properties.

  2. En la pestaña Seguridad, haga clic en Opciones avanzadas.On the Security tab, click Advanced.

    Se abre el cuadro de diálogo Configuración de seguridad avanzada.The Advanced Security Settings dialog box appears.

  3. Asegúrese de que la casilla Conceder a la aplicación acceso al sitio de origen esté activada y haga clic en Aceptar.Make sure that the Grant the application access to its site of origin check box is checked and then click OK.

  4. En la pestaña Depurar, seleccione la opción Iniciar explorador con la dirección URL y especifique la dirección URL de la página HTML que contiene la aplicación 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. En Internet Explorer, haga clic en el botón Herramientas y seleccione Opciones de Internet.In Internet Explorer, click the Tools button and then select Internet Options.

    Aparecerá el cuadro de diálogo Opciones de Internet.The Internet Options dialog box appears.

  6. Haga clic en la pestaña Opciones avanzadas.Click the Advanced tab.

  7. En la lista Configuración, bajo Seguridad, active la casilla Permitir que el contenido activo se ejecute en los archivos de mi equipo.In the Settings list under Security, check the Allow active content to run in files on My Computer check box.

  8. Haga clic en Aceptar.Click OK.

    Los cambios surtirán efecto una vez que reinicie Internet Explorer.The changes will take effect after you restart Internet Explorer.

Precaución

La habilitación del contenido activo en Internet Explorer puede poner en peligro su equipo.Enabling active content in Internet Explorer may put your computer at risk. Para más información, consulte las características de seguridad y privacidad en Internet Explorer.For more information, see Security and privacy features in Internet Explorer. Si no desea cambiar la configuración de seguridad de Internet Explorer, puede iniciar la página HTML desde un servidor y conectar el depurador de Visual StudioVisual Studio al proceso.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.

Consideraciones de seguridad para XBAPXBAP Security Considerations

Las aplicaciones XBAP suelen ejecutarse en un espacio aislado con seguridad de confianza parcial que se restringe al conjunto de permisos de zona de Internet.XBAPs typically execute in a partial-trust security sandbox that is restricted to the Internet zone permission set. Por consiguiente, la implementación debe ser compatible con el subconjunto de elementos WPFWPF que se admiten en la zona de Internet o debe elevar los permisos de la aplicación.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. Para más información, consulte Seguridad.For more information, see Security.

Cuando se usa un WebBrowser control en la aplicación, WPF crea internamente instancias del control WebBrowser ActiveX nativo.When you use a WebBrowser control in your application, WPF internally instantiates the native WebBrowser ActiveX control. Cuando se trata de una aplicación XBAP de confianza parcial que se ejecuta en Internet Explorer, el control ActiveX se ejecuta en un subproceso dedicado del proceso de 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. Por tanto, se aplican las siguientes limitaciones:Therefore, the following limitations apply:

  • El WebBrowser control debe proporcionar un comportamiento similar del explorador del host, incluidas las restricciones de seguridad.The WebBrowser control should provide behavior similar to the host browser, including security restrictions. Algunas de estas restricciones de seguridad se pueden controlar mediante la configuración de seguridad de Internet Explorer.Some of these security restrictions can be controlled through the Internet Explorer security settings. Para más información, consulte Seguridad.For more information, see Security.

  • Se genera una excepción cuando se carga una aplicación XBAP entre dominios en una página HTML.An exception is thrown when an XBAP is loaded cross-domain in an HTML page.

  • La entrada está en un subproceso independiente de WPF WebBrowser, por lo que no se puede interceptar la entrada de teclado y no se comparte el estado IME.Input is on a separate thread from the WPF WebBrowser, so keyboard input cannot be intercepted and the IME state is not shared.

  • La sincronización o el orden de navegación pueden variar como consecuencia del control ActiveX que se ejecuta en otro subproceso.The timing or order of navigation may be different due to the ActiveX control running on another thread. Por ejemplo, no siempre se cancela la navegación a una página cuando se inicia otra solicitud de navegación.For example, navigating to a page is not always cancelled by starting another navigation request.

  • Es posible que un control ActiveX personalizado experimente problemas de comunicación porque la aplicación WPF se esté ejecutando en un subproceso independiente.A custom ActiveX control may have trouble with communication since the WPF application is running in a separate thread.

  • MessageHook no se produzca porque HwndHost no puede crear subclases de una ventana que se ejecuta en otro proceso o subproceso.MessageHook does not get raised because HwndHost cannot subclass a window running in another thread or process.

Creación de una aplicación XBAP de plena confianzaCreating a Full-Trust XBAP

Si la aplicación XBAP necesita plena confianza, puede cambiar el proyecto para habilitar este permiso.If your XBAP requires full trust, you can change your project to enable this permission. En los pasos siguientes se describe cómo habilitar la plena confianza:The following steps describe how to enable full trust:

  1. En Visual Studio, abra las propiedades del proyecto.In Visual Studio, open the project properties.

  2. En la pestaña Seguridad, seleccione la opción Aplicación de plena confianza.On the Security tab, select the This is a full trust application option.

Esta configuración realiza los cambios siguientes:This setting makes the following changes:

  • En el archivo de proyecto, el valor del elemento <TargetZone> se cambia a Custom.In the project file, the <TargetZone> element value is changed to Custom.

  • En el manifiesto de aplicación (app.manifest), se agrega un atributo Unrestricted="true" al 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" />  
    

Implementación de una aplicación XBAP de plena confianzaDeploying a Full-Trust XBAP

Al implementar una aplicación XBAP de plena confianza que no sigue el modelo de implementación de confianza de ClickOnce, el comportamiento cuando el usuario ejecute la aplicación dependerá de la zona de seguridad.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. En algunos casos, el usuario recibirá una advertencia al intentar instalarla.In some cases, the user will receive a warning when they attempt to install it. El usuario puede elegir continuar o cancelar la instalación.The user can choose to continue or cancel the installation. En la tabla siguiente se describe el comportamiento de la aplicación para cada zona de seguridad y qué se debe hacer para que la aplicación reciba plena confianza.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.

Zona de seguridadSecurity Zone ComportamientoBehavior Obtener plena confianzaGetting Full Trust
Equipo localLocal computer Plena confianza automáticaAutomatic full trust No es necesario realizar ninguna acción.No action is needed.
Intranet y sitios de confianzaIntranet and trusted sites Pedir plena confianzaPrompt for full trust Firme la aplicación XBAP con un certificado para que el usuario vea el origen en la petición.Sign the XBAP with a certificate so that the user sees the source in the prompt.
InternetInternet Error: "Confianza no concedida"Fails with "Trust Not Granted" Firme la aplicación XBAP con un certificado.Sign the XBAP with a certificate.

Nota

El comportamiento descrito en la tabla anterior es para las aplicaciones XBAP de plena confianza que no sigan el modelo de implementación de confianza de ClickOnce.The behavior described in the previous table is for full-trust XBAPs that do not follow the ClickOnce Trusted Deployment model.

Se recomienda que utilice el modelo de implementación de confianza de ClickOnce para implementar una aplicación XBAP de plena confianza.It is recommended that you use the ClickOnce Trusted Deployment model for deploying a full-trust XBAP. Este modelo permite que se conceda a la aplicación XBAP plena confianza automáticamente, independientemente de la zona de seguridad, por lo que no hay que pedirla al usuario.This model allows your XBAP to be granted full trust automatically, regardless of the security zone, so that the user is not prompted. Como parte de este modelo, debe firmar la aplicación con un certificado de un editor de confianza.As part of this model, you must sign your application with a certificate from a trusted publisher. Para más información, consulte Información general sobre la implementación de aplicaciones de confianza y Seguridad.For more information, see Trusted Application Deployment Overview and Introduction to Code Signing.

Consideraciones sobre el rendimiento de tiempo de inicio de XBAPXBAP Start Time Performance Considerations

Un aspecto importante del rendimiento de la aplicación XBAP es el tiempo de inicio.An important aspect of XBAP performance is its start time. Si una aplicación XBAP es la primera aplicación WPF en cargarse, el tiempo de inicio en frío puede ser de diez segundos o más.If an XBAP is the first WPF application to load, the cold start time can be ten seconds or more. Esto se debe a que WPF representa la página de progreso, y tanto CLR como WPF se deben iniciar en frío para mostrar la aplicación.This is because the progress page is rendered by WPF, and both the CLR and WPF must be cold-started to display the application.

A partir de .NET Framework 3.5 SP1.NET Framework 3.5 SP1, se reduce el tiempo de inicio en frío de XBAP al mostrar una página de progreso no administrada en una fase temprana del ciclo de implementación.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 página de progreso aparece casi inmediatamente después de iniciarse la aplicación, porque se muestra con código hospedado de forma nativa y se representa en HTML.The progress page appears almost immediately after the application is started, because it is displayed by native hosting code and rendered in HTML.

Además, la mejora en la simultaneidad de la secuencia de descarga de ClickOnceClickOnce reduce el tiempo de inicio en un 10 %.In addition, improved concurrency of the ClickOnceClickOnce download sequence improves the start time by up to ten percent. Una que ClickOnceClickOnce se descarga y valida los manifiestos, comienza la descarga de la aplicación y la barra de progreso se empieza a actualizar.After ClickOnceClickOnce downloads and validates manifests, the application download starts, and the progress bar starts to update.

Vea tambiénSee Also

Configurar Visual Studio para depurar una aplicación de explorador XAML y llamar a un servicio webConfigure Visual Studio to Debug a XAML Browser Application to Call a Web Service
Implementar una aplicación WPFDeploying a WPF Application