Visão geral sobre WPF XAML Browser Applications

XAML browser applications (XBAPs) combines features of both Web applications and rich-client applications. Como aplicativos da Web, os XBAPs podem ser implantados em um servidor Web e iniciados a partir do Internet Explorer ou Firefox. Como aplicativos de cliente rico, XBAPs podem aproveitar os recursos do WPF. Developing XBAPs is also similar to rich-client development. Este tópico fornece uma introdução simple e de alto nível para o desenvolvimento de XBAP e descreve onde o desenvolvimento de XBAP difere de desenvolvimento padrão de rich-client.

This topic contains the following sections:

  • Criando um novo aplicativo de navegador XAML (XBAP)

  • Implantando um XBAP

  • Comunicação com a página da Web do Host

  • Considerações de segurança do XBAP

  • Considerações de desempenho de tempo de início XBAP

Criando um novo aplicativo de navegador XAML (XBAP)

A maneira mais simples de criar um novo projeto XBAP é com Microsoft Visual Studio 2010. Ao criar um novo projeto, selecione Aplicativo WPF de navegador da lista de modelos. For more information, see Como: Criar um novo projeto de aplicativo do navegador WPF.

Quando você executar o projeto XBAP, ele abre em uma janela do navegador em vez de uma janela autônoma. Quando você depurar XBAP de Microsoft Visual Studio, o aplicativo é executado com permissões da zona de Internet e, portanto, lançarão exceções de segurança, se essas permissões são excedidas. Para obter mais informações, consulte Segurança (WPF) e WPF Partial Trust Security.

Observação

Se você não estiver desenvolvendo com Microsoft Visual Studio ou deseja saber mais sobre os arquivos de projeto, consulte Building a WPF Application (WPF).

Implantando um XBAP

Quando você cria um XBAP, a saída inclui três arquivos a seguir:

File

Description

Executável (. exe)

This contains the compiled code and has an .exe extension.

Manifesto de aplicativo (. manifest)

This contains metadata associated with the application and has a .manifest extension.

Manifesto de implantação (XBAP)

Este arquivo contém as informações que ClickOnce usa para implantar o aplicativo e tem a extensão de XBAP.

Implantar XBAPs para um servidor Web, por exemplo Microsoft Internet Information Services (IIS) 5.0 ou versões posteriores. Não é necessário instalar o .NET Framework na Web server, mas você precisa registrar o WPF Multipurpose Internet Mail Extensions (MIME) tipos e extensões de nome de arquivo. For more information, see Como: Configurar o IIS 5.0 e IIS 6.0 para implantar aplicativos WPF.

Para preparar seu XBAP para implantação, copie. exe e os manifestos associados ao servidor Web. Crie uma página HTML que contém um hiperlink para abrir o manifesto de implantação, o arquivo que possui a extensão de XBAP. Quando o usuário clica no link para o arquivo de XBAP ClickOnce automaticamente manipula a mecânica de baixar e iniciar o aplicativo. O exemplo de código a seguir mostra uma página HTML que contém um hiperlink que aponta para um XBAP.

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

Você também pode hospedar um XBAP no quadro de uma página da Web. Crie uma página da Web com um ou mais quadros. Defina a propriedade de origem de um quadro para o arquivo de manifesto de implantação. Se você quiser usar o mecanismo interno para a comunicação entre a página da Web de hospedagem e XBAP, você deve hospedar o aplicativo em um quadro. O exemplo de código a seguir mostra uma página HTML com dois quadros, que a fonte para o segundo quadro é definida como um XBAP.

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

Clearing Cached XBAPs

Em algumas situações, após a reconstrução e iniciando seu XBAP, você pode achar que uma versão anterior do XBAP é aberta. Por exemplo, esse comportamento pode ocorrer quando seu número de versão do assembly XBAP é estático e iniciar o XBAP da linha de comando. Nesse caso, porque o número de versão entre a versão em cache (a versão que foi iniciada anteriormente) e a nova versão permanece o mesmo, a nova versão do XBAP não é descarregada. Em vez disso, a versão em cache é carregada.

Nessas situações, você pode remover a versão em cache usando o Mage comando (instalado com Visual Studio ou Windows SDK) no prompt de comando. O comando a seguir limpa o cache de aplicativo.

Mage.exe -cc

Esse comando garante que a versão mais recente do seu XBAP é iniciada. Quando você depurar seu aplicativo em Visual Studio, a versão mais recente do seu XBAP deve ser iniciada. Em geral, você deve atualizar a sua versão de implantação número com cada compilação. Para obter mais informações sobre a imagem, consulte Mage (geração de manifesto e ferramenta de edição).

Comunicação com a página da Web do Host

Quando o aplicativo está hospedado em um quadro de HTML, você pode se comunicar com a página da Web que contém um XBAP. Para fazer isso, recuperando o HostScript propriedade de BrowserInteropHelper. Essa propriedade retorna um objeto de script que representa a janela HTML. Você pode acessar as propriedades, métodos e eventos sobre o o objeto de janela usando a sintaxe de pontos regular. Você também pode acessar os métodos de script e variáveis globais. O exemplo a seguir mostra como recuperar o objeto de script e feche o navegador.

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
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();
}

Depuração XBAPs usam HostScript

Se seu XBAP usa a HostScript o objeto para se comunicar com a janela HTML, há duas configurações, você deve especificar para executar e depurar o aplicativo em Visual Studio. O aplicativo deve ter acesso ao seu site de origem e você deve iniciar o aplicativo com a página HTML que contém um XBAP. As etapas a seguir descrevem como verificar essas duas configurações:

  1. No Visual Studio, abra as propriedades do projeto.

  2. Sobre o Security , clique em Advanced.

    Aparece a caixa de diálogo Configurações avançadas de segurança.

  3. Certifique-se de que o conceder o acesso do aplicativo para o seu site de origem seleção está marcada e clique OK.

  4. Sobre o Depurar guia, selecione o Iniciar navegador com URL opção e especificar a URL para a página HTML que contém um XBAP.

  5. No Internet Explorer, clique na Ferramentas botão e, em seguida, selecione Opções da Internet.

    Aparece a caixa de diálogo Opções da Internet.

  6. Click the Advanced tab.

  7. No configurações lista em segurança, verifique o Permitir conteúdo ativo para executar de Meu computador caixa de seleção.

  8. Click OK.

    As alterações terão efeito depois que você reiniciar o Internet Explorer.

Observação de cuidadoCuidado

Ativar o conteúdo ativo no Internet Explorer pode colocar seu computador em risco.Para obter mais informações, consulte recursos de segurança e privacidade no Internet Explorer.Se você não desejar alterar as configurações de segurança do Internet Explorer, você pode abrir a página HTML de um servidor e conectar o Visual Studio o depurador ao processo.

Considerações de segurança do XBAP

XBAPs normalmente é executado em uma proteção de segurança de confiança parcial, é restrita ao conjunto de permissões da zona de Internet. Conseqüentemente, a sua implementação deve suportar o subconjunto de WPF elementos que são suportados na zona da Internet, ou você devem elevar as permissões do seu aplicativo. For more information, see Segurança (WPF).

Quando você usa um WebBrowser controle em seu aplicativo, o WPF internamente instancia o controle WebBrowser ActiveX nativo. Quando seu aplicativo é um XBAP de confiança parcial, executado no Internet Explorer, o controle de ActiveX é executado em um thread dedicado do processo do Internet Explorer. Portanto, as seguintes limitações se aplicam:

  • O WebBrowser controle deve fornecer um comportamento semelhante para o navegador de host, incluindo restrições de segurança. Algumas dessas restrições de segurança podem ser controladas através das configurações de segurança do Internet Explorer. For more information, see Segurança (WPF).

  • Uma exceção é lançada quando um XBAP é carregado entre domínios em uma página HTML.

  • A entrada é em um thread separado a partir do WPF WebBrowser, portanto, não pode ser interceptada a entrada do teclado e o estado do IME não é compartilhado.

  • O intervalo ou a ordem de navegação a pode ser diferente devido ao controle de ActiveX que executar em outro segmento. Por exemplo, navegar para uma página não foi sempre cancelado iniciando outra solicitação de navegação.

  • Um controle personalizado de ActiveX pode ter problemas com a comunicação, desde que o aplicativo do WPF é executado em um segmento separado.

  • MessageHooknão gerado porque HwndHost não subclasse de uma janela em execução em outro thread ou processo.

Criando um XBAP confiança total

Se seu XBAP requer confiança total, você pode alterar o seu projeto para habilitar essa permissão. As etapas a seguir descrevem como habilitar a confiança total:

  1. No Visual Studio, abra as propriedades do projeto.

  2. Sobre o segurança guia, selecione o é um aplicativo de confiança total opção.

Essa configuração faz as seguintes alterações:

  • No arquivo de projeto, o <TargetZone> o valor do elemento é alterado para Custom.

  • No manifesto do aplicativo (App. manifest), um Unrestricted="true" atributo é adicionado a PermissionSet elemento.

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

Implantando um XBAP confiança total

Quando você implanta um XBAP de confiança total não segue o modelo de implantação confiável de ClickOnce, o comportamento quando o usuário executa o aplicativo dependerá da zona de segurança. Em alguns casos, o usuário receberá um aviso quando eles tentam instalá-lo. O usuário pode optar por continuar ou cancelar a instalação. A tabela a seguir descreve o comportamento do aplicativo para cada zona de segurança e o que você precisa fazer para o aplicativo receber confiança total.

Zona de segurança

Behavior

Obtendo a confiança total

Computador local

Confiança total automática

Nenhuma ação é necessária.

Intranet e sites confiáveis

Prompt para confiança total

Assine XBAP com um certificado para que o usuário vê a fonte no prompt.

Internet

Falha com "Confiança não concedida"

Assine um XBAP com um certificado.

Observação

O comportamento descrito na tabela anterior é XBAPs confiança total que não seguem o modelo de implantação confiável de ClickOnce.

É recomendável que você use o modelo de implantação confiável de ClickOnce para implantar um XBAP confiança total. Esse modelo permite sua XBAP receber confiança total automaticamente, independentemente da zona de segurança, para que o usuário não será solicitado. Como parte desse modelo, você deve assinar seu aplicativo com um certificado de um editor confiável. Para obter mais informações, consulte Visão geral sobre implantação de aplicativos confiáveis e Introdução à assinatura de código.

Considerações de desempenho de tempo de início XBAP

Um aspecto importante de desempenho de XBAP é o horário de início. Se um XBAP é o primeiro aplicativo do WPF para carregar, o de partida a frio tempo pode ser dez segundos ou mais. Isso ocorre porque a página de progresso é processada pelo WPF e o CLR e o WPF devem ser cold-iniciado para exibir o aplicativo.

A partir de .NET Framework 3.5 SP1, a hora de início de cold XBAP é atenuada exibindo uma página de progresso não gerenciado cedo no ciclo de implantação. A página de progresso aparece quase imediatamente depois que o aplicativo é iniciado, pois ele será exibido pelo código nativo de hospedagem e processado em HTML. 

Além disso, melhorou a simultaneidade da ClickOnce seqüência de download melhora o tempo de início por até dez por cento. Depois de ClickOnce downloads e valida manifestos, o download de aplicativo é iniciado e o barra de progresso é iniciado para atualização.

Consulte também

Conceitos

Como: Configure Visual Studio to Debug a XAML Browser Application to Call a Web Service

Implantar um aplicativo WPF (WPF)