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.
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.
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.
O DotNetBrowser suporta a estrutura Avalonia UI e pode ser utilizado em aplicações Blazor Hybrid.
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.
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 DotNetBrowser suporta extensões do Chrome. Os programadores podem instalar extensões a partir de arquivos CRX ou permitir que os seus usuários utilizem a Chrome Web Store.
O DotNetBrowser fornece controle total sobre os pop-ups abertos por extensões, e te permite utilizar ações de extensão.
Leia mais no guia sobre extensões e teste-o na prática.
O CefSharp tem um suporte muito limitado para extensões.
Experimentar gratuitamente
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.
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: