Ao seleccionar o componente do browser para aplicações WPF ou WinForms, DotNetBrowser e CefSharp estão entre as escolhas óbvias.

Neste artigo, explicamos a diferença entre o DotNetBrowser e o CefSharp e como escolher entre eles.

Em poucas palavras 

Escolha o CefSharp open-source quando:

  • É necessário utilizar software grátis.

Escolha o DotNetBrowser comercial 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.
  • Precisa executar em Linux e macOS.
  • É necessário incorporar um navegador nas aplicações do Office.
  • Tem requisitos para a segurança do software.
Spinner

Enviando…

Desculpe, o envio foi interrompido

Tente novamente. Se o problema persistir, contate-nos através do endereço info@teamdev.com.

Leia e aceite os termos para continuar.

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.

Suporte e atualizações 

O CefSharp é um projecto open-source. Se encontrar um erro ou necessitar de uma funcionalidade, pode apresentar um relatório ou contribuir. Em 2022, o projeto teve 33 versões principais e secundárias.

O DotNetBrowser é um produto comercial concebido e criado para empresas comerciais.

Dispomos de 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 suporte técnico inclui:

  • Ajuda na utilização do produto.
  • Correções oportunas de erros.
  • Assistência na resolução de problemas.
  • Consideração em pedidos de funcionalidades.

Todos os seus pedidos de suporte serão processados por engenheiros de software DotNetBrowser.

Quase todos os meses é lançada uma nova versão do DotNetBrowser. Atualizamos o Chromium para a versão estável mais recente (com os patches de segurança mais recentes e as vulnerabilidades corrigidas) no prazo de 3-4 semanas após o seu lançamento oficial.

Linux e macOS 

O DotNetBrowser é executado nativamente no Linux e no macOS, nas plataformas x86-64 e ARM.

No momento, é possível usar o DotNetBrowser em uma aplicação headless, mas o DotNetBrowser também suportará o Avalonia UI muito em breve.

se deseja experimentar o DotNetBrowser com Avalonia UI agora.

Arquitetura 

O CefSharp é um wrapper .NET em torno do Chromium Embedded Framework ou CEF. O envolvimento é efetuado através de C++/CLI.

O DotNetBrowser não usa CEF ou C++/CLI sob o capô. Em vez disso, traz a sua própria abordagem para se integrar diretamente com o Chromium.

Em processo vs. fora de processo 

O CefSharp inicia o Chromium Engine dentro do processo .NET. A biblioteca requer que o engine seja iniciado e encerrado na thread principal da aplicação e apenas uma vez durante o tempo de vida do processo.

O DotNetBrowser inicia o engine Chromium como um processo separado. Não há necessidade de fazer isso no thread principal da interface do usuário - até mesmo o thread de trabalho serve. Pode iniciar e encerrar o Chromium em qualquer altura. Pode utilizar vários engines Chromium ao mesmo tempo.

Arquitetura do DotNetBrowser

Arquitetura do DotNetBrowser

Arquitetura do CefSharp

Arquitetura CefSharp

Estabilidade e segurança 

O modelo CefSharp permite-lhe iniciar a aplicação mais rapidamente, mas tem grandes inconvenientes:

  • O CefSharp não é compatível com a sandbox integrada do Chromium.
  • O CefSharp consome a memória e a CPU do processo .NET.
  • Se o CefSharp falhar, toda a aplicação falhará também.
  • O processo .NET torna-se susceptível a vulnerabilidades de segurança no Chromium, uma vez que utilizam o mesmo espaço de endereço.

No DotNetBrowser, um erro no Chromium não leva a uma falha na sua aplicação .NET. Em vez disso, pode detectar e tratar o acidente de forma adequada:

engine.Disposed += (s, e) => 
{
    long exitCode = e.ExitCode;
    // Se o código de saída for não-zero, o engine parou de funcionar.
});

Distribuição e implantação 

O CefSharp requer que o Microsoft Visual C++ Runtime seja instalado no ambiente.

O DotNetBrowser vem com todos os binários e DLLs do Chromium necessários já empacotados. Não é necessário pré-instalar o Microsoft Visual C++ Runtime para trabalhar com o DotNetBrowser.

Incorporação no Office 

O DotNetBrowser funciona em AppDomains não predefinidos e, por isso, pode ser incorporado em aplicações do Office utilizando suplementos VSTO ou Excel-DNA.

O CefSharp funciona apenas no AppDomain predefinido.

H.264, AAC 

Os códigos proprietários funcionam no DotNetBrowser de forma imediata. Estão desativados por padrão, mas pode ativá-los no código:

IEngine engine = EngineFactory.Create(new EngineOptions.Builder
{
    ProprietaryFeatures = ProprietaryFeatures.H264 | ProprietaryFeatures.Aac
}.Build());

O CefSharp é distribuído sem suportes de codecs proprietários.

DPI elevado 

No CefSharp, o reconhecimento de DPI padrão para o subprocesso do navegador é Per-Monitor. Para tal, é necessário que toda a aplicação tenha em conta o DPI, o que pode ser um problema para um software mais antigo.

O DotNetBrowser detecta automaticamente o conhecimento de DPI do processo .NET e cumpre-o.

Acesso ao DOM 

No CefSharp, a única forma de acessar o DOM é utilizar o JavaScript. O DotNetBrowser fornece uma API para manipular o DOM diretamente no seu código:

IDocument document = browser.MainFrame.Document;
document.GetElementById("button").Click();

PointInspection inspection = browser.MainFrame.Inspect(new Point(100, 150));
INode nodeAtPoint = inspection.Node;

Extensões do Chrome 

O suporte para extensões do Chrome é um pedido popular entre os usuários do DotNetBrowser e do CefSharp.

No DotNetBrowser, o suporte de extensões está em desenvolvimento ativo. Estamos quase lá: polimos a parte C++ e concebemos a parte .NET.

se pretende experimentar as extensões do Chrome no DotNetBrowser.

Experimentar gratuitamente 

Obtenha a sua licença gratuita e escolha um dos nossos guias de iniciação. São necessários 5 minutos para começar a utilizar o DotNetBrowser: