Visão geral dos aplicativos de navegador WPF XAML
Aplicativos de navegador XAML (XBAPs) combinam recursos de aplicações Web e aplicações cliente avançado. Como os aplicativos Web, os XBAPs podem ser implantados em um servidor Web e iniciados a partir do Internet Explorer ou Firefox no Windows. Como os aplicativos rich-client, os XBAPs podem tirar proveito dos recursos do WPF. O desenvolvimento de XBAPs também é semelhante ao desenvolvimento de rich client. Este tópico fornece uma introdução simples e de alto nível ao desenvolvimento XBAP e descreve onde o desenvolvimento XBAP difere do desenvolvimento rich-client padrão.
Advertência
Os XBAPs requerem navegadores herdados para funcionar, como o Internet Explorer e versões antigas do Firefox. Esses navegadores mais antigos geralmente não são suportados no Windows 10 e no Windows 11. Os navegadores modernos não suportam mais a tecnologia necessária para aplicativos XBAP devido a riscos de segurança. Plug-ins que habilitam XBAPs não são mais suportados. Para obter mais informações, consulte Perguntas freqüentes sobre aplicativos hospedados no navegador WPF (XBAP).
Este tópico contém as seguintes seções:
Implantando um XBAP
Criando um novo aplicativo de navegador XAML (XBAP)
A maneira mais simples de criar um novo projeto XBAP é com o Visual Studio. Ao criar um novo projeto, selecione WPF Browser Application na lista de modelos. Para obter mais informações, consulte Como criar um novo projeto de aplicativo de navegador WPF.
Quando você executa o projeto XBAP, ele é aberto em uma janela do navegador em vez de uma janela autônoma. Ao depurar o XBAP no Visual Studio, a aplicação é executada com permissão de área da Internet e, portanto, lançará exceções de segurança se essas permissões forem excedidas. Para obter mais informações, consulte Security e WPF Partial Trust Security.
Observação
Se você não estiver desenvolvendo com o Visual Studio ou quiser saber mais sobre os arquivos de projeto, consulte Criando um aplicativo WPF.
Implantando um XBAP
Quando você cria um XBAP, a saída inclui os três arquivos a seguir:
Ficheiro | Descrição |
---|---|
Executável (.exe) | Este contém o código compilado e tem uma extensão .exe. |
Manifesto de aplicação (.manifest) | Isso contém metadados associados ao aplicativo e tem uma extensão .manifest. |
Manifesto de implantação (.xbap) | Este arquivo contém as informações que ClickOnce usa para implantar o aplicativo e tem a extensão .xbap. |
Implanta XBAPs num servidor Web, por exemplo, Microsoft Internet Information Services (IIS) 5.0 ou versões posteriores. Não é necessário instalar o .NET Framework no servidor Web, mas você precisa registrar os tipos WPF Multipurpose Internet Mail Extensions (MIME) e extensões de nome de arquivo. Para obter mais informações, consulte Configurar o IIS 5.0 e o IIS 6.0 para implantar aplicativos WPF.
Para preparar seu XBAP para implantação, copie o .exe e os manifestos associados para o servidor Web. Crie uma página HTML que contenha um hiperlink para abrir o manifesto de implantação, que é o arquivo que tem a extensão .xbap. Quando o usuário clica no link para o arquivo .xbap, ClickOnce lida automaticamente com a mecânica de baixar e iniciar o aplicativo. O código de exemplo 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 origem de um quadro para o ficheiro de manifesto de implantação. Se você quiser usar o mecanismo interno para se comunicar entre a página da Web de hospedagem e o XBAP, você deve hospedar o aplicativo em um quadro. O código de exemplo a seguir mostra uma página HTML com dois quadros, a origem do segundo quadro é definida como um XBAP.
<html>
<head>
<title>A page with frames</title>
</head>
<frameset cols="50%,50%">
<frame src="introduction.htm">
<frame src="XbapEx.xbap">
</frameset>
</html>
Limpeza de XBAPs em cache
Em algumas situações, depois de reconstruir e iniciar o XBAP, pode acontecer que uma versão anterior do XBAP seja aberta. Por exemplo, esse comportamento pode ocorrer quando o número de versão do assembly XBAP é estático e você inicia o XBAP a partir da linha de comando. Nesse caso, como 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 é baixada. Em vez disso, a versão em cache é carregada.
Nessas situações, você pode remover a versão em cache usando o comando Mage (instalado com o Visual Studio ou o SDK do Windows) no prompt de comando. O comando a seguir limpa o cache do aplicativo.
Mage.exe -cc
Este comando garante que a versão mais recente do seu XBAP seja iniciada. Quando você depurar seu aplicativo no Visual Studio, a versão mais recente do seu XBAP deve ser iniciada. Em geral, você deve atualizar o número da versão de implantação com cada compilação. Para obter mais informações sobre Mage, veja Mage.exe (Ferramenta de Geração e Edição de Manifesto).
Comunicando-se com a página da Web do hospedeiro
Quando o aplicativo é hospedado em um quadro HTML, você pode se comunicar com a página da Web que contém o XBAP. Você faz isso recuperando a propriedade HostScript de BrowserInteropHelper. Esta propriedade retorna um objeto de script que representa a janela HTML. Em seguida, pode-se aceder às propriedades, métodos e eventos do objeto da janela no usando a sintaxe de ponto regular. Você também pode acessar métodos de script e variáveis globais. O exemplo a seguir mostra como recuperar o objeto de script e fechar o navegador.
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
Depuração de XBAPs que usam HostScript
Se seu XBAP usa o objeto HostScript para se comunicar com a janela HTML, há duas configurações que você deve especificar para executar e depurar o aplicativo no 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 o XBAP. As etapas a seguir descrevem como verificar essas duas configurações:
No Visual Studio, abra as propriedades do projeto.
Na guia Segurança
, clique em Avançado . A caixa de diálogo Configurações avançadas de segurança é exibida.
Verifique se a caixa de seleção Conceder ao aplicativo acesso ao seu site de origem está marcada e clique em OK.
Na guia Debug, selecione a opção Iniciar navegador com URL e especifique a URL para a página HTML que contém o XBAP.
No Internet Explorer, clique no botão Ferramentas e, em seguida, selecione Opções da Internet.
A caixa de diálogo Opções da Internet é exibida.
Clique na guia Avançado.
Na lista Configurações, em de Segurança, marque a caixa de seleção Permitir a execução de conteúdo ativo em ficheiros no Meu Computador.
Clique OK.
As alterações entrarão em vigor depois de reiniciar o Internet Explorer.
Atenção
Habilitar conteúdo ativo no Internet Explorer pode colocar seu computador em risco. Se você não quiser alterar suas configurações de segurança do Internet Explorer, você pode iniciar a página HTML de um servidor e anexar o depurador do Visual Studio ao processo.
Considerações de segurança XBAP
Os XBAPs normalmente são executados em uma área de segurança com confiança parcial, restrita ao conjunto de permissões da zona da Internet. Consequentemente, sua implementação deve suportar o subconjunto de elementos WPF que são suportados na zona da Internet ou você deve elevar as permissões do seu aplicativo. Para obter mais informações, consulte Security.
Quando você usa um controle WebBrowser em seu aplicativo, WPF internamente instancia o controle ActiveX WebBrowser nativo. Quando seu aplicativo é um XBAP de confiança parcial em execução no Internet Explorer, o controle ActiveX é executado em um thread dedicado do processo do Internet Explorer. Por conseguinte, aplicam-se as seguintes limitações:
O controle WebBrowser deve fornecer um comportamento semelhante ao navegador host, incluindo restrições de segurança. Algumas destas restrições de segurança podem ser controladas através das definições de segurança do Internet Explorer. Para obter mais informações, consulte Security.
Uma exceção é lançada quando um XBAP é carregado entre domínios numa página HTML.
A entrada está em um thread separado do WPF WebBrowser, portanto, a entrada do teclado não pode ser intercetada e o estado do IME não é compartilhado.
O tempo ou a ordem de navegação podem ser diferentes devido ao controle ActiveX em execução em outro thread. Por exemplo, a navegação para uma página nem sempre é cancelada ao iniciar outra solicitação de navegação.
Um controle ActiveX personalizado pode ter problemas com a comunicação, uma vez que o aplicativo WPF está sendo executado em um thread separado.
MessageHook não é gerado porque HwndHost não pode subclassificar uma janela em execução em outro thread ou processo.
Criando um XBAP Full-Trust
Se o XBAP exigir confiança total, você pode alterar seu projeto para habilitar essa permissão. As etapas a seguir descrevem como habilitar a confiança total:
No Visual Studio, abra as propriedades do projeto.
Na guia Segurança, selecione a opção Esta é uma aplicação de confiança total.
Essa configuração faz as seguintes alterações:
No arquivo de projeto, o valor do elemento
<TargetZone>
é alterado paraCustom
.No manifesto do aplicativo (app.manifest), um atributo
Unrestricted="true"
é adicionado ao elemento 'PermissionSet.<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
Implementando um XBAP Full-Trust
Quando você implanta um XBAP de confiança total que não segue o modelo de implantação confiável 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 tentar 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 que o aplicativo receba confiança total.
Zona de Segurança | Comportamento | Obter confiança total |
---|---|---|
Computador local | Confiança total automática | Nenhuma ação é necessária. |
Intranet e sites confiáveis | Solicitar confiança total | Assine o XBAP com um certificado para que o usuário veja a origem no prompt. |
Internet | Falha com "Confiança não concedida" | Assine o XBAP com um certificado. |
Observação
O comportamento descrito na tabela anterior é para XBAPs de confiança total que não seguem o modelo de implantação confiável ClickOnce.
É recomendável que você use o modelo de implantação confiável ClickOnce para implantar um XBAP de confiança total. Este modelo permite que seu XBAP receba confiança total automaticamente, independentemente da zona de segurança, para que o usuário não seja 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 da Implantação de Aplicações Confiáveis e Introdução à Assinatura de Código .
Considerações sobre o desempenho do tempo de início do XBAP
Um aspeto importante do desempenho do XBAP é a sua hora de início. Se um XBAP for o primeiro aplicativo WPF a ser carregado, o tempo de de inicialização a frio
A partir do .NET Framework 3.5 SP1, o tempo de início a frio do XBAP é mitigado ao exibir uma página de progresso não gerida na fase inicial do ciclo de implementação. A página de progresso aparece quase imediatamente após o aplicativo ser iniciado, porque é exibida pelo código de hospedagem nativo e renderizada em HTML.
Além disso, a simultaneidade melhorada da sequência de download do ClickOnce melhora o tempo de início em até dez por cento. Depois que o ClickOnce baixa e valida manifestos, o download do aplicativo é iniciado e a barra de progresso começa a ser atualizada.
Ver também
.NET Desktop feedback