No que respeita aos navegadores incorporados, a indústria oferece todo o tipo de soluções: gratuitas e comerciais, open-source e proprietárias. Diferem no que podem fazer, na forma de os utilizar e nos serviços adicionais que os acompanham. Neste artigo, ajudaremos a escolher o mais adequado.
No artigo anterior, utilizámos o CefSharp open-source, o comparamos com o DotNetBrowser e explicamos como escolher.
Hoje, exploramos o WebView2 proprietário e argumentamos que o DotNetBrowser é mais adequado para uso comercial. Começamos com os aspectos organizacionais e jurídicos. Em seguida, abordamos as diferenças funcionais.
Em poucas palavras
O DotNetBrowser e o WebView2 são soluções maduras de empresas comerciais com experiência considerável neste domínio. Assim, você obtém uma solução de software que funciona e não depende da comunidade open-source.
Escolha WebView2 quando:
- É necessário utilizar software gratuito.
- Pretende utilizar as vantagens da distribuição perene.
- Não se importa de partilhar os dados do utilizador final com a Microsoft.
Escolha DotNetBrowser quando:
- Precisa de uma funcionalidade personalizada.
- Pretende obter assistência na utilização do produto.
- Pretende comunicar os problemas de forma confidencial e obter a sua resolução.
- Pretende ter controle sobre a coleta de dados do usuário final.
- É necessário executar a aplicação sem a IU.
- Precisa executar em Linux e macOS.
- É necessário imprimir de forma programática.
Enviando…
Desculpe, o envio foi interrompido
Tente novamente. Se o problema persistir, contate-nos através do endereço info@teamdev.com.
A sua chave de avaliação pessoal de DotNetBrowser e o guia de início rápido chegarão à sua caixa de entrada de e-mail dentro de alguns minutos.
Diferença de abordagens
O WebView2 é um controle da Microsoft. É gratuito, mas — como é de esperar da Microsoft — é também proprietário. Substitui o WebView baseado no Trident e utiliza o Edge.
O WebView2 é um controle: um item na caixa de ferramentas do Visual Studio,
classes do arquivo Microsoft.Web.WebView2.Core.dll
. Mas não é um produto
Microsoft como o Office ou o PowerBI. Por isso, você não recebe suporte ao
cliente, apoio técnico ou assistência.
O DotNetBrowser é um produto criado e desenvolvido pela TeamDev, uma empresa especializada na incorporação de browsers. Começámos com o Internet Explorer em 2004 e continuámos com o Safari e o WebKit mais tarde, antes de nos decidirmos por Chromium em 2013.
Em 2015, introduzimos o DotNetBrowser. Trata-se de um produto comercial concebido para utilização comercial. Além do software e da documentação, a oferta inclui um especialista dedicado do Serviço de Suporte ao Cliente, suporte técnico, e serviços premium.
Diferença para as empresas
Correções, funcionalidades e assistência
Como obter ajuda se encontrar um erro ou precisar de uma funcionalidade? Vejamos em o que o WebView2 e o DotNetBrowser têm para oferecer.
O WebView2 recolhe feedback do público num repositório GitHub dedicado. Quando você tem um relatório a fazer, você cria um problema lá. Se os programadores da Microsoft considerarem o seu relatório válido, transferem-no para o seu sistema interno. Você saberá pela etiqueta “rastreado” que utilizam para este tipo de questões.
Os programadores da Microsoft reagem rapidamente a novos relatórios, mas abordam-nos muito mais lentamente. Por exemplo, quase 80% dos problemas registrados ficaram por resolver durante mais de 6 meses no momento da redação do presente artigo.
O DotNetBrowser tem um sistema de helpdesk privado onde os relatórios dos clientes permanecem confidenciais. O tempo de primeira resposta garantido, ou SLA, é de um dia útil.
O apoio técnico inclui: ajuda na utilização do produto, assistência na resolução de problemas, correção de erros e análise de pedidos de funcionalidades. Todos os seus pedidos de suporte serão processados por engenheiros de software DotNetBrowser.
Privacidade dos usuários finais
Este artigo foi escrito em Outubro de 2022 e descreve a versão do EULA nessa data.
Quando um usuário final instala o WebView2 no seu ambiente, o instalador mostra o EULA. Há duas coisas que podem preocupar você:
- A Microsoft pode recolher informações sobre os seus usuários finais.
- Você é obrigado a avisá-los.
A seção 3.a do EULA declara que o WebView2 pode recolher informações sobre você e sobre a utilização do software pelo usuário final. Esta informação pode então ser enviada para Microsoft.
O fato de a Microsoft recolher as informações do usuário final obriga-o a mostrar o aviso correspondente e a obter o seu consentimento (Secção 9 do EULA).
O DotNetBrowser não recolhe informações sobre você e os seus usuários finais. Além disso, ele impede a coleta de dados pela Google. Leia mais sobre a forma como o DotNetBrowser trata os dados e lhe dá controle sobre a privacidade em Práticas de Privacidade.
Diferenças técnicas
De um ponto de vista técnico, o DotNetBrowser e o WebView2 não são muito diferentes. Ambos têm uma arquitectura semelhante, em que o Chromium é executado num processo separado. Ambos os sites têm centenas de funcionalidades, a maioria das quais se sobrepõem.
As diferenças, no entanto, existem. E podem ser essenciais para escolher a solução mais adequada ao seu caso. Vamos então dar uma olhada.
Distribuição e implantação
Pode trazer o WebView2 Runtime com a sua aplicação ou utilizar o que está instalado no usuário final. Estes são modos de distribuição: a versão fixa e a evergreen, respetivamente.
Com o modo de versão fixa, pode controlar a versão do WebView2 na sua aplicação, o que é bom para a estabilidade. No modo permanente, você deixa a Microsoft tratar da logística e das atualizações e reduz o tamanho do seu software.
O DotNetBrowser precisa de ser empacotado com a sua aplicação. É o único modo de distribuição que vem de fábrica.
Extensões do Chrome
Tanto o DotNetBrowser como o WebView2 suportam extensões. Enquanto o WebView2 fornece uma funcionalidade muito básica, o DotNetBrowser dá aos programadores mais opções e controlo total sobre o ciclo de vida e a atividade da extensão.
No WebView2, um programador pode instalar uma extensão a partir de um ficheiro CRX descompactado, ativar/desativar a extensão e desinstalá-la.
No DotNetBrowser, um programador pode instalar uma extensão diretamente a partir do ficheiro CRX, “clicar” programaticamente no ícone da extensão, interagir com um pop-up e novos “separadores” que a extensão possa abrir.
Além disso, pode permitir que os utilizadores interajam diretamente com as extensões:
- Ativar utilizando a Chrome Web Store.
- Apresentar o ícone da extensão, com emblemas e etiquetas.
- Mostrar pop-ups e “separadores” criados pela extensão.
Leia mais no guia sobre extensões e teste-o na prática.
Execução sem IU
Para casos de utilização como a automatização ou a geração de relatórios em PDF, não é necessário ter uma interface de usuário. Em vez disso, é mais simples e mais eficiente executar headless.
O WebView2 não suporta a execução sem IU, uma vez que requer uma janela da aplicação.
No DotNetBrowser, isto funciona imediatamente. Você pode utilizá-lo na aplicação de console, no servidor Web ou mesmo como um serviço do Windows. Desse modo:
using (IEngine engine = EngineFactory.Create())
{
using (IBrowser browser = engine.CreateBrowser())
{
browser.Navigation.LoadUrl("https://teamdev.com/dotnetbrowser").Wait();
}
}
Linux e macOS
O WebView2 declarou ter planos para suportar o macOS e, mais tarde, o Linux. Mas ainda não divulgaram quaisquer estimativas.
O DotNetBrowser é uma biblioteca multiplataforma que funciona em Windows, macOS e Linux. Utilize-o com Avalonia UI ou na aplicação de servidor.
WPF e controles sobrepostos
É impossível colocar qualquer controle WPF em cima de um controle WebView2. Isto é causado pelas limitações naturais do WPF e pela forma como o WebView2 funciona.
O WPF não suporta a sobreposição de regiões apresentadas em janelas diferentes, e o WebView2 funciona precisamente através da incorporação de uma janela externa no controle WPF.
Para o DotNetBrowser, isso não é um problema. Além de utilizar a janela nativa, como o WebView2, ele pode ser apresentado diretamente na janela do WPF.
É o chamado modo de renderização fora da tela. Neste modo, os pixels renderizados são copiados para a memória do processo .NET e apresentados num widget WPF normal.
Chamando JavaScript a partir do .NET
Em ambas as soluções, é possível executar JavaScript diretamente a partir do código .NET. A diferença está no que acontece quando o resultado retorna do Chromium para o mundo .NET.
O WebView2 converte o resultado em JSON:
string result = await coreWebView2.ExecuteScriptAsync(@"'example'");
Debug.Assert(result == "\"example\"");
O DotNetBrowser converte automaticamente tipos simples. Ele substitui os tipos complexos por proxies para objetos V8 reais:
string title = await browser.MainFrame.ExecuteJavaScript<string>("document.title");
IJsObject window = await browser.MainFrame.ExecuteJavaScript<IJsObject>("window");
// Ou utilize apenas tipos dinâmicos.
dynamic document = Browser.MainFrame.ExecuteJavaScript("document").Result;
document.write("Hello world!");
Chamando o .NET a partir do JavaScript
Ambas as soluções permitem a utilização de objetos .NET a partir do JavaScript, mas com uma observação.
No WebView2, um objeto injetado deve ser visível em COM e
implementar IDispatch
. Este requisito limita a gama do que pode ser injetado e
multiplica o código com poucas ou quase nenhuma variação.
No DotNetBrowser, você pode injetar qualquer objeto: objetos .NET padrão, coleções e até controles WPF. Em JavaScript, você terá acesso aos membros públicos e às propriedades indexadas do objeto injetado.
Interceptação do tráfego
O WebView2 não possui uma API para interceptar, filtrar ou modificar pedidos HTTP.
O DotNetBrowser, por outro lado, tem uma ampla funcionalidade para gerenciar o tráfego HTTP. Com esta funcionalidade, é possível implementar o seguinte:
- Filtrar pedidos HTTP.
- Redirecionar pedidos HTTP.
- Substituir os cabeçalhos HTTP request e response.
- Fazer override da carga de dados.
- Filtrar cookies.
Você pode encontrar mais exemplos de rede no DotNetBrowser em nosso GitHub.
Impressão API
O WebView2 tem uma API de impressão limitada. Ela pode imprimir em PDF e permite você manipular uma série de definições. Infelizmente, ela é bastante limitado:
- Não é possível escolher uma impressora de sistema específica.
- Não é possível configurar intervalos de páginas.
- Não é possível controlar as caixas de diálogo de impressão apresentadas ao usuário.
O DotNetBrowser proporciona um controle total sobre o processo de impressão. Você pode:
- Selecionar uma impressora.
- Lidar com a impressão iniciada pelo código JavaScript e .NET.
- Ver as capacidades de uma impressora para evitar a utilização de funcionalidades não suportadas.
- Configurar definições de impressão, incluindo intervalos de páginas, tamanho do papel, margens, cabeçalhos, rodapés, etc.
Experimentar gratuitamente
Obtenha a sua licença gratuita e escolha um dos nossos guias de iniciação. Leva apenas 5 minutos para começar a utilizar o DotNetBrowser:
- DotNetBrowser em WPF
- DotNetBrowser em Avalonia
- DotNetBrowser no WinForms
- DotNetBrowser no console, útil para serviços Windows e aplicações de servidor.