Janela vs. Alojamento visual do WebView2
Existem três opções para alojar o controlo Microsoft Edge WebView2 na sua aplicação:
- O modo de alojamento em janela.
- O modo de alojamento Janela para Elemento Visual.
- O modo de alojamento visual.
Não precisa de ler este artigo se utilizar o Alojamento em janelas na maioria dos cenários. O alojamento em janelas é um bom ponto de partida para a maioria das aplicações. Leia este artigo:
- Se estiver a utilizar o alojamento em Janelas em cenários invulgares e estiver a ter problemas persistentes com o DPI e o dimensionamento. Neste caso, considere Alojamento janela para elemento visual.
- Se quiser proporcionar uma experiência de utilizador mais personalizada (UX). Neste caso, considere Alojamento visual.
As diferentes abordagens para alojar o controlo WebView2 na sua aplicação são semelhantes na funcionalidade, mas adequam-se a diferentes necessidades consoante os requisitos da aplicação, da seguinte forma:
Abordagem | Descrição | Otimizado para |
---|---|---|
Alojamento em janelas | O controlo WebView2 recebe entradas do sistema operativo (SO). O SO envia a entrada para o WebView2. | Apresentar conteúdo Web de forma rápida e fácil, sem ter de incluir funcionalidades para entradas, saídas e acessibilidade. |
Janela para Alojamento visual | Uma combinação de Alojamento em Janelas e Elementos Visuais. Semelhante ao Alojamento em Janelas, exceto que o conteúdo webView2 é exportado para um Elemento visual alojado numa janela, em vez de ter o conteúdo a ser exportado diretamente para a janela. | Uma experiência de programador é quase idêntica ao alojamento em Janelas, mas com um processamento de PPP/dimensionamento melhorado e a ressalva de que a experiência de Escrita Manual do Windows Shell não é suportada. |
Alojamento visual | A aplicação anfitriã recebe entradas espaciais (como entrada de rato ou toque) do utilizador. A sua aplicação envia esta entrada para o controlo WebView2. | Controlo mais granular sobre a composição do controlo. A aplicação tem de processar especificamente as APIs de composição e gestão de janelas. |
Estas abordagens têm diferentes requisitos, restrições e benefícios.
- O alojamento em janelas é mais simples de implementar do que o Alojamento visual.
- O alojamento visual requer todas as chamadas à API necessárias para o alojamento em Janelas e tem requisitos adicionais para que seja composto corretamente.
As listas de API suportadas estão ligadas nas secções abaixo:
- APIs para alojamento em Janelas
- APIs para Alojamento de Janelas para Elementos Visuais
- APIs para alojamento visual
Alojamento em janelas: para apresentar conteúdo de forma rápida e fácil
O alojamento em janelas significa que, na sua aplicação, o conteúdo webView2 está alojado diretamente numa janela; ou seja, um HWND. O WebView2 HWND herda muitas propriedades predefinidas do sistema operativo (SO). O controlo WebView2 recebe entradas do SO e o SO envia a entrada para o controlo WebView2. Pode ter vários HWNDs na sua aplicação que serão utilizados como um componente WebView2 para aceder a conteúdos Web.
A vantagem disto é que alguns dos comandos Entrada/Saída são processados por si pelo SO ou pela arquitetura. No entanto, ainda terá de lidar com alguns aspetos da gestão de janelas.
Para obter informações gerais sobre a gestão e HWND
funcionalidade do Windows, consulte Acerca do Windows.
Vantagens
O alojamento em janelas permite uma solução que apresenta rapidamente conteúdo Web sem ter de implementar funcionalidades para entradas, saídas e acessibilidade.
As janelas próprias e subordinadas (como menus e menus de contexto) são dimensionadas automaticamente para corresponder ao dimensionamento principal
HWND
da aplicação.O alojamento em janelas processa a forma como o controlo WebView2 gere a concentração e a tabulação por si só quando premir a Tecla de Tabulação chega ao elemento final.
Se não quiser, não tem de gerir os vários controlos de composição baseados em composição (como Entradas, Saídas e Controlos de acessibilidade).
Desvantagens
O modo de alojamento em janelas pode deparar-se com problemas de DPI em alguns cenários, como ao partilhar uma pasta de dados de utilizador (e, assim, para partilhar um processo do browser) em diferentes aplicações com deteção de PPP diferente.
APIs para alojamento em Janelas
Para obter uma lista de APIs que podem ser utilizadas ao configurar o WebView2 para alojamento em Janelas (ou para Alojamento de Janelas para Elementos Visuais), veja Rendering WebView2 in non-framework apps in Overview of WebView2 features and APIs (Composição de WebView2 em aplicações não estruturais) em Overview of WebView2 features and APIs (Descrição geral das funcionalidades e APIs do WebView2).
Janela para Alojamento visual: para uma experiência semelhante a Alojamento em janelas, com benefícios adicionais e desvantagem
O alojamento De Janela para Elemento Visual significa que o conteúdo do WebView2 é exportado para um Elemento Visual alojado num HWND, em vez de exportar conteúdo diretamente para uma janela ou para um Elemento Visual diretamente. Ao alojar conteúdos num HWND, é fácil utilizar o alojamento da Janela para o Elemento Visual, da mesma forma que o alojamento em Janelas. No entanto, ao apresentar conteúdo através de um alojamento Visual, Janela para Elemento Visual evita alguns problemas de DPI e de entrada que podem resultar na utilização do alojamento em Janelas.
A Janela para o Alojamento visual não requer que utilize as APIs de alojamento de Elementos Visuais webView2.
Para ativar o alojamento do Windows para Visual, a variável COREWEBVIEW2_FORCED_HOSTING_MODE
de ambiente tem de ser definida como o valor COREWEBVIEW2_HOSTING_MODE_WINDOW_TO_VISUAL
antes de inicializar o WebView2.
No alojamento De Janela para Elemento Visual e alojamento visual, um Elemento visual é uma unidade gráfica básica que pode ser utilizada para compor experiências gráficas no Windows. As APIs gráficas do Windows que expõem esta funcionalidade e são relevantes para o WebView2 são DirectComposition
e Windows.UI.Composition
. O "Visual" no "Alojamento visual" pode ser qualquer um dos elementos IDCompositionTarget
visuais que são expostos através das IDCompositionVisual
DirectComposition
APIs e Windows.UI.Composition
.Windows.UI.Composition.Visual
(O alojamento janela para elemento visual utiliza IDCompositionVisual
especificamente.) Veja:
- Conceitos básicos nos documentos do DirectComposition de Desenvolvimento > de Aplicações do Windows.
- Elemento visual de composição nos documentos da UWP de Desenvolvimento > de Aplicações do Windows.
Vantagens
As diferentes aplicações que partilham uma pasta de dados de utilizador do WebView2 podem ter uma deteção de PPP diferente.
As diferentes aplicações que partilham uma pasta de dados de utilizador webView2 podem ter níveis de integridade diferentes.
As diferentes aplicações que partilham uma pasta de dados de utilizador webView2 não farão com que entrem em bloqueio devido a filas de entrada de janelas anexadas.
Ao alojar um WebView2 num Suplemento VSTO, alterar a escala do monitor não fará com que a aplicação fique bloqueada. Veja VsTO Add-ins in Office solutions development overview (VSTO) (Descrição geral do desenvolvimento de soluções do VSTO [VSTO]).
Desvantagens
Ativar o modo de alojamento Janela para Elemento Visual remove o suporte para Escrita Manual da Shell do Windows no WebView2.
Veja também:
- Entrada de tinta digital – Interação do Utilizador de Desenvolvimento > de Aplicações do Windows.
- shellhandwriting.h header - API Win32.
APIs para Alojamento de Janelas para Elementos Visuais
Para obter uma lista de APIs que podem ser utilizadas ao configurar a Janela WebView2 para o Alojamento visual (ou para alojamento em janelas), veja Rendering WebView2 in non-framework apps in Overview of WebView2 features and APIs (Composição de WebView2 em aplicações não estruturais) em Overview of WebView2 features and APIs (Descrição geral das funcionalidades e APIs do WebView2).
Alojamento visual: para um controlo mais granular sobre o esquema
Ao utilizar o Alojamento visual, a aplicação anfitriã recebe entradas espaciais (como entrada de rato ou toque) do utilizador e reencaminha esta entrada para o controlo WebView2. O alojamento visual requer que a aplicação faça a mesma gestão de janelas que o Alojamento em janelas, mas tem requisitos de gestão de janelas adicionais em relação a:
- Dimensionar os conteúdos.
- Encaminhar entradas espaciais (como rato, toque ou caneta).
Requisitos para dimensionar os conteúdos
Por composição baseada em composição, um controlo WebView2 faz parte de uma árvore Visual, por isso, por predefinição, é composto numa escala baseada nas escalas de todos os elementos visuais predecessoras. Por exemplo, se um Elemento Visual predecessor do WebView2 for dimensionado (ampliado) 2x, os conteúdos do WebView2 também são compostos à escala 2x. Se o Elemento Visual principal do WebView2 for dimensionado 2x e o elemento principal do Visual também for dimensionado 2x, o WebView2 será dimensionado 4x. No entanto, como o WebView2 não está a dimensionar os seus próprios conteúdos, estão desfocados.
Para resolve isto, a aplicação pode anular o Dimensionamento visual predefinido do WebView2 e, em vez disso, utilizar as APIs de Escala de Rasterização para aplicar o dimensionamento visual pretendido. Isto resulta na composição do conteúdo do WebView2 na escala correta. Veja Escala de rasterização na Descrição geral das funcionalidades e APIs do WebView2.
Requisitos para encaminhar entradas espaciais (rato, toque ou caneta)
Se a aplicação WebView2 utilizar o Alojamento visual, não são enviadas entradas espaciais (como rato, toque ou caneta) para o controlo WebView2, a menos que a aplicação faça a gestão dessas entradas. A entrada é enviada para a aplicação HWND
e a aplicação é responsável por reencaminhar esta entrada espacial para o WebView2, se a posição da entrada estiver sobre o WebView2.
A aplicação também é responsável por qualquer transformação necessária de posições de entrada no espaço de coordenadas do WebView2.
Veja também:
- Utilizar a camada Visual em aplicações de ambiente de trabalho em documentos de desenvolvimento de Aplicações do Windows > .
Vantagens e desvantagens
O alojamento visual permite (e requer) um controlo mais granular do esquema. Ao utilizar esta abordagem, a aplicação precisa de um processamento específico das APIs de composição e gestão de janelas.
Por exemplo, se uma ação de utilizador fizer com que a árvore Visual do WebView2 seja dimensionada, a aplicação tem de ajustar a escala do WebView2 para compor corretamente em relação aos elementos visuais principais.
APIs para alojamento visual
Para obter uma lista de APIs que podem ser utilizadas ao configurar o WebView2 num ambiente de alojamento visual, veja Rendering WebView2 using Composition in Overview of WebView2 features and APIs (Composição webView2 com Composição em Descrição Geral das funcionalidades e APIs do WebView2).
Compatibilidade e restrições
As principais limitações de compatibilidade incluem o sistema operativo e a composição em aplicações de arquitetura e não arquitetura.
Sistemas operacionais
Todos os modos de alojamento são suportados onde quer que o WebView2 seja suportado; ou seja, Windows 10 e posterior e determinadas versões do Windows Server. O Windows 7, 8 e 8.1 já não são suportados; O Windows 7 e o Windows 8 só suportam o alojamento em Janelas e não o Alojamento visual.
Veja também:
- Windows 7 e 8 em Introdução ao Microsoft Edge WebView2.
Restrições de arquitetura
CreateCoreWebView2CompositionController
não suporta elementos visuais do WinAppSDK; ou seja, objetos visuais no Microsoft.UI.Composition
espaço de nomes, descritos em Melhorar IU com a camada Visual (SDK do Aplicativo Windows/WinUI 3).
Confira também
- Descrição geral das funcionalidades e APIs do WebView2
- Windows 7 e 8 em Introdução ao Microsoft Edge WebView2.
Externo:
-
Acerca do Windows – Funcionalidade e
HWND
gestão de janelas. - Utilizar a camada Visual em aplicações de ambiente de trabalho – Desenvolvimento de Aplicações do Windows.
- Conceitos básicos – DirectComposition de Desenvolvimento > de Aplicações do Windows.
- Elemento visual de composição – UWP de Desenvolvimento > de Aplicações do Windows.
- Entrada de tinta digital – Interação do Utilizador de Desenvolvimento > de Aplicações do Windows.
- shellhandwriting.h header - API Win32.