O controle WPF WebBrowser baseado no Internet Explorer sofre de alguns problemas de teclado e foco e problemas de vazamento de memória . Como uma solução alternativa para esses problemas, estamos considerando as opções disponíveis para hospedar o Chromium em vez do controle WebBrowser em nosso projeto WPF / C # baseado na edição de HTML. Perguntas semelhantes foram feitas aqui anteriormente. Li as respostas e fiz minha própria pesquisa, mas espero obter mais comentários de pessoas que realmente usaram uma das seguintes opções em projetos de qualidade de produção :
Parece muito apropriado, mas não gosto do fato de o projeto não ser de código aberto e o código completo não estar facilmente disponível. Além disso, pode ser um exagero para o nosso projeto, pois a renderização fora da tela não é algo em que realmente dependemos.
Ligações Chromium Embedded Framework (CEF) e .NET para CEF
Esta é provavelmente a melhor opção atualmente disponível. O projeto parece estar ativo e ativo, estando atualmente sincronizado com o Chrome v27. O CEF3 usa a arquitetura de múltiplos processos do Chrome. Também parece que a Adobe está dando algum apoio .
Embora o objetivo original fosse ser um plug-in HTML5 para IE e Firefox, ele também funciona como controle ActiveX autônomo também, para que eu pudesse envolvê-lo para uso com o WPF. Ele expõe uma API suficiente para interação com a página da web interna ( onmessage, addEventListener/removeEventListener, postMessage
). Estou ciente de que o Google deve interromper o Chrome Frame, mas presumo que as fontes permanecerão no repositório do Chromium. Não deve ser difícil atualizá-lo com o código Chromium mais recente, e teríamos controle total sobre isso.
Não é exatamente baseado em cromo e não usa o mecanismo V8, por isso não é realmente uma opção.
Existe alguma outra opção que eu possa ter esquecido?
Eu gostaria muito que alguém compartilhasse sua experiência com alguma das opções acima para um projeto WPF com qualidade de produção e vida real. Você teve implicações de integração, licenciamento ou implantação? Obrigado.
[EDITADO] Também gostaria de agradecer à artlung por dar um impulso a esta pergunta, oferecendo uma oferta generosa de recompensa.
fonte
Tivemos exatamente o mesmo desafio há algum tempo. Queríamos ir com a biblioteca de código aberto CEF3, que é baseada em WPF e suporta .NET 3.5.
Em primeiro lugar, o autor da CEF se listados ligação para diferentes idiomas aqui .
Em segundo lugar, seguimos em frente com a ligação de código aberto .NET CEF3, chamada Xilium.CefGlue, e tivemos um bom sucesso. Nos casos em que algo não está funcionando como o esperado, o autor geralmente responde muito bem aos problemas abertos no rastreador de bitbucket incorporado
Até agora, isso nos serviu bem. O autor atualiza sua biblioteca para oferecer suporte às versões mais recentes do CEF3 e correções de bugs regularmente.
fonte
Aqui está outro:
http://www.essentialobjects.com/Products/WebBrowser/Default.aspx
Este também é baseado no mais recente mecanismo Chrome, mas é muito mais fácil de usar que o CEF. É uma única DLL do .NET que você pode simplesmente referenciar e usar.
fonte
Dê uma olhada na biblioteca DotNetBrowser desenvolvida pela equipe a que pertenço. Ele fornece controles de navegador WPF e WinForms baseados em Chromium, fáceis de incorporar ao aplicativo .NET. Ele suporta todos os padrões modernos da web, incluindo HTML5, CSS3 e JavaScript. A página renderizada é exatamente igual ao Google Chrome.
A biblioteca herda a arquitetura de processos múltiplos do Chromium - cada página da web é renderizada em um processo separado do Chromium, e o aplicativo continua funcionando mesmo após a falha do plug-in ou qualquer outro erro inesperado na página da web.
Aqui estão alguns outros recursos úteis, fornecidos pelo DotNetBrowser: é possível ouvir eventos de carregamento, gerenciar atividades de rede, configurar proxy, simular ações do usuário, trabalhar com cookies, acessar e modificar DOM, ouvir eventos DOM, ouvir eventos DOM, chamar JavaScript do .NET e vice-versa, use câmera e microfone na página, configure a comunicação baseada no WebRTC e muito mais .
Confira a Referência da API para obter mais detalhes.
O snippet de código abaixo demonstra como criar um BrowserView, incorporá-lo em um formulário e carregar um URL:
Depois de executar o exemplo acima, você obterá a seguinte saída:
A biblioteca é comercial. As licenças comerciais incluem pacotes de suporte para diferentes tamanhos de equipe. Também é possível comprar o código fonte da biblioteca.
Além de sua própria página do componente está disponível como pacote NuGet e como pacote VSIX no Visual Studio de mercado.
fonte
Eu usei o Awesomium.NET. Embora eu não goste do fato de não ser de código aberto e também de usar um mecanismo de renderização Webkit bastante antigo, é realmente fácil de usar. Esse é o único endosso que posso dar.
fonte
ATUALIZAÇÃO 2018 DE MAIO:
Como alternativa, você pode incorporar o navegador Edge, mas segmentando apenas o Windows 10.
Aqui está a solução.
fonte
Eu tive o mesmo problema com o meu leitor de RSS WPF; originalmente eu fui com o Awesomium (acho que a versão 1.6) O Awesomium é ótimo. Você tem muito controle sobre armazenamento em cache (imagens e conteúdo HTML), execução de JavaScript, interceptação de downloads e assim por diante. Também é super rápido. O isolamento do processo significa que, quando o navegador trava, ele não trava o aplicativo.
Mas também é pesado, até a compilação de lançamentos adiciona cerca de 10 a 15 mb (não me lembro o número exato) e, portanto, uma pequena penalidade de inicialização. Então percebi que o único problema que tinha com o controle do navegador IE era que ele lançava os erros de JavaScript de vez em quando. Mas isso foi corrigido com o seguinte trecho.
Eu mal usei meu aplicativo no XP ou Vista, mas no Win 7 e acima nunca travou (pelo menos não porque usei o controle do navegador IE)
fonte
IWebBrowser2
interface interna .A Microsoft está lançando o controle WPF " Microsoft Edge WebView2 " que nos proporcionará uma ótima opção gratuita para incorporar o Chromium no Windows 10, Windows 8.1 ou Windows 7. Ele está disponível via Nuget como pacote
Microsoft.Web.WebView2
.fonte