Melhores práticas de desenvolvimento para aplicações WebView2

Recomendamos as seguintes melhores práticas para desenvolver aplicações WebView2 de produção.

Utilizar o Runtime Do Evergreen WebView2

Recomendamos que utilize o Evergreen WebView2 Runtime para a maioria das aplicações WebView2, em vez de utilizar o runtime de Versão Fixa.

O runtime do Evergreen é atualizado automaticamente no cliente, para que as funcionalidades e patches de segurança mais recentes estejam disponíveis para a sua aplicação WebView2. O runtime do Evergreen também requer menos espaço de armazenamento no disco do que o runtime da Versão Fixa. A distribuição do runtime de Versão Fixa só é recomendada para aplicações que tenham requisitos de compatibilidade rigorosos.

Para obter mais informações sobre as vantagens do Evergreen Runtime, consulte Detalhes sobre o modo de distribuição Do Evergreen Runtime em Distribuir a sua aplicação e o Runtime webView2.

Para ajudar a garantir que a sua aplicação WebView2 funciona bem com o Runtime Do Evergreen WebView2, utilize as práticas recomendadas nas subsecções abaixo:

Verifique se o WebView2 Runtime está instalado

Ao utilizar o Evergreen WebView2 Runtime, antes de a aplicação utilizar o controlo WebView2, verifique programaticamente para se certificar de que o Evergreen WebView2 Runtime está instalado no cliente.

Veja Detetar se um Runtime webView2 já está instalado em Distribuir a sua aplicação e no WebView2 Runtime.

Processar atualizações do Runtime webView2

Ao utilizar o Runtime Do Evergreen WebView2, processe as atualizações do Runtime do Evergreen WebView2. As atualizações do Evergreen WebView2 Runtime são transferidas automaticamente, mas uma aplicação WebView2 em execução continuará a utilizar a versão atual do Runtime webView2, potencialmente em falta de atualizações de segurança. Para adotar a nova versão, uma aplicação tem de lançar todas as referências a objetos WebView2 anteriores ou reiniciar. A implementação de um NewBrowserVersionAvailable processador de eventos pode pedir aos utilizadores que reiniciem a aplicação para atualizações, com uma recomendação para guardar o estado do utilizador antes de sair para uma transição totalmente integrada.

Veja Processar atualizações do Runtime do Evergreen WebView2 em Distribuir a sua aplicação e o WebView2 Runtime.

Efetuar testes de compatibilidade com o edge com canais de pré-visualização do Edge

Ao utilizar o Evergreen WebView2 Runtime, execute testes de compatibilidade de reencaminhamento com os canais de pré-visualização do Microsoft Edge (Beta, Dev ou Canary).

Uma vez que o Evergreen Runtime é atualizado automaticamente, deve executar regularmente testes de compatibilidade para garantir que a sua aplicação WebView2 continuará a funcionar conforme esperado na nova versão do Runtime. Isto pode ser feito ao testar o conteúdo Web no controlo WebView2 em relação aos canais de pré-visualização do Microsoft Edge.

Siga as orientações em Pré-lançamento de testes com canais de pré-visualização e Autoalojamento ao implementar canais de pré-visualização.

Utilizar a deteção de funcionalidades para APIs mais recentes

Ao utilizar o Runtime Do Evergreen WebView2, utilize a deteção de funcionalidades para testar se o Runtime instalado suporta APIs adicionadas recentemente. Para executar uma aplicação WebView2 desenvolvida com uma versão específica do SDK Webview2, o cliente tem de ter uma versão compatível do WebView2 Runtime instalada.

Ao utilizar o Evergreen WebView2 Runtime, existem alguns cenários em que o runtime num cliente não foi atualizado automaticamente para a versão mais recente. Além disso, algumas políticas de grupo interrompem a atualização do runtime. Como resultado, quando envia uma atualização para a sua aplicação WebView2, a aplicação poderá não funcionar se tentar chamar APIs mais recentes que não estão disponíveis no runtime instalado do cliente. Por conseguinte, deve utilizar a deteção de funcionalidades para garantir que as APIs mais recentes que são utilizadas pela sua aplicação WebView2 são suportadas pelo WebView2 Runtime instalado no cliente.

Veja Deteção de funcionalidades para testar se o Runtime instalado suporta APIs adicionadas recentemente em SDKs de Pré-lançamento e Versão para WebView2.

Atualizar regularmente se utilizar o Runtime de Versão Fixa

Se utilizar o Runtime WebView2 de Versão Fixa, certifique-se de que atualiza regularmente o WebView2 Runtime que está empacotado com a sua aplicação para reduzir os riscos de segurança. Para determinar com que frequência deve atualizar o Runtime de Versão Fixa, deve considerar o modelo de ameaças da sua aplicação. Por exemplo, ao utilizar conteúdos de terceiros em aplicações Webview2, considere sempre que o conteúdo não é fidedigno.

Veja Detalhes sobre o modo de distribuição do runtime de Versão Fixa em Distribuir a aplicação e o Runtime webView2.

Gerir a duração da pasta de dados do utilizador

As aplicações WebView2 criam uma pasta de dados de utilizador para armazenar dados como cookies, credenciais e permissões. Depois de criar a pasta de dados do utilizador, a sua aplicação é responsável por gerir a duração da pasta de dados do utilizador. Por exemplo, a aplicação tem de limpar quando a aplicação é desinstalada.

Veja Gerir pastas de dados de utilizador para obter mais orientações sobre a gestão da pasta de dados do utilizador.

Processar falhas ou saídas do processo de runtime

As aplicações WebView2 são suportadas por uma coleção de processos de runtime que são executados juntamente com o processo da aplicação. Estes processos de runtime de suporte podem falhar por vários motivos, como ficar sem memória ou ser terminados pelo utilizador. A sua aplicação WebView2 deve processar estes eventos relacionados com o processo, para garantir que a aplicação pode recuperar de falhas e continuar a ser executada sem problemas.

Veja Handling process-related events in WebView2 (Processar eventos relacionados com processos no WebView2 ) para obter mais informações sobre como lidar com eventos relacionados com processos em aplicações WebView2.

Processadores de eventos no objeto de ambiente

Se algum dos processadores de eventos da sua aplicação no objeto de ambiente tiver uma referência ao objeto de ambiente e a aplicação simplesmente lançar a referência ao ambiente e aos processadores de eventos sem remover os processadores de eventos, poderá existir uma referência circular entre o objeto de ambiente e os objetos do processador, o que irá libertar memória.

Para evitar essa fuga de memória:

  • Para qualquer processador de eventos adicionado, remova o processador de eventos antes de libertar o objeto de ambiente.

  • Evite manter uma referência ao objeto de ambiente num processador de eventos. Em vez disso, o processador de eventos pode aceder ao objeto de ambiente a sender partir do argumento da chamada de retorno "evento concluído".

  • Se quiser que a aplicação mantenha uma referência a um objeto WebView2, utilize uma referência fraca sempre que possível.

Siga as melhores práticas de segurança

O WebView2 permite-lhe alojar conteúdo Web nas suas aplicações nativas, proporcionando vantagens como a utilização da IU baseada na Web, o acesso às funcionalidades da plataforma Web e a partilha de código entre plataformas.

No entanto, o alojamento de conteúdos Web também pode introduzir vulnerabilidades. Para evitar vulnerabilidades que possam surgir do alojamento de conteúdos Web numa aplicação nativa, certifique-se de que cria a sua aplicação WebView2 para monitorizar de perto as interações entre o conteúdo Web e a aplicação anfitriã.

Siga as orientações em Desenvolver aplicações WebView2 seguras.