Introdução
Instalação
Guias
- Engine
- Perfil
- Navegador
- BrowserView
- Navegação
- Conteúdo
- Menu de contexto
- DOM
- JavaScript
- Pop-ups
- Diálogos
- Downloads
- Extensões do Chrome
- Rede
- Cache
- Cookies
- Proxy
- Autenticação
- Permissões
- Plugins
- Impressão
- Senhas
- Perfis de dados do usuário
- Cartões de crédito
- Mídia
- Zoom
- Corretor ortográfico
- Implantação
- Chromium
Resolução de problemas
- Registro
- Exceções comuns
- A aplicação não termina
- O vídeo não é reproduzido
- Não é possível iniciar sessão na conta Google
- Os dados do usuário não são armazenados
- Esquema de cores
- Falha no início
- Início lento no Windows
- Aplicação .NET que não responde
- Encerramento inesperado do processo Chromium
- Comportamento inesperado
- Fim do suporte do Windows 7/8/8.1
Migração
Arquitetura
Esta é uma visão geral da arquitetura do DotNetBrowser.
Visão geral
A arquitetura da biblioteca DotNetBrowser consiste em vários processos, como a aplicação .NET e diferentes processos Chromium:
As seções seguintes fornecem os detalhes de cada um dos processos, os principais componentes da biblioteca e descrevem o seu funcionamento.
Processos
Processo .NET
Este é um processo .NET padrão onde a sua aplicação .NET é executada.
Processo principal do Chromium
Este é o processo principal do engine Chromium. Ele é iniciado pelo DotNetBrowser quando você cria uma instância IEngine
.
Para cada instância do IEngine
, um processo Chromium Main separado é utilizado.
Processo do renderizador Chromium
Este processo contém as instâncias IFrame
que gerem o DOM e o JavaScript da página Web carregada. O processo é iniciado pelo engine Chromium quando você navega o IBrowser
para uma página Web com um domínio diferente.
Processo GPU do Chromium
Este processo renderiza o conteúdo das páginas Web carregadas em diferentes processos do Chromium Renderer utilizando a GPU.
Comunicação entre processos
A comunicação entre diferentes processos é efetuada utilizando a comunicação inter-processos (IPC). O IPC transfere dados entre dois processos numa máquina local.
Para transferir dados entre os processos .NET e Chromium, o DotNetBrowser utiliza a sua própria implementação IPC baseada em sockets e memória compartilhada. A comunicação entre os processos Chromium é efetuada utilizando a implementação Chromium IPC.
Principais componentes
IEngine
A instância IEngine
gere o ciclo de vida do processo principal do Chromium e fornece acesso à funcionalidade principal do Chromium, como o zoom, o proxy, o cache, os cookies, os plugins, os downloads, etc., associados ao Profile
padrão.
Todas as operações com o engine são efetuadas através da interface IEngine
. O Engine é um objeto de nível superior na hierarquia de objetos da biblioteca. Todas as ações com a biblioteca começam com a criação de uma instância do IEngine
.
Para obter instruções detalhadas sobre a criação e utilização da instância IEngine
, consulte o guia Engine.
Perfil
Representa um perfil do Chromium. Ele permite salvar separadamente todos os dados do navegador, como o histórico, os cookies, a cache, as definições de proxy, as configurações do corretor ortográfico, etc. Cada IEngine
tem um perfil predefinido que é criado automaticamente durante a inicialização do Engine
. O perfil padrão não pode ser eliminado.
Você pode criar novos perfis e eliminá-los se não forem necessários, utilizando o serviço Profiles
.
Os arquivos do perfil para histórico, cookies, cache, etc. são armazenados na pasta de dados do usuário. Se você configurar o IEngine
com a pasta de dados do usuário e criar um perfil, este será armazenado na pasta de dados do usuário e será restaurado após o reinício da aplicação.
Leia mais sobre perfis no guia Profile.
Navegador
Trata-se de um navegador Web, que pode ser utilizado para realizar uma série de ações, tais como:
- carregar páginas Web ou arquivos HTML locais;
- encontrar texto na página web carregada;
- modificar o nível de zoom;
- ativar ou silenciar o áudio;
- receber notificações sobre o progresso do carregamento;
- envio de eventos de teclado e mouse.
Todas as operações com o navegador são efetuadas através da interface IBrowser
. Cada instância IBrowser
está ligada ao Profile
. A instância IBrowser
é eliminada automaticamente quando o seu Profile
é eliminado ou quando a instância IEngine
principal falha ou é eliminada pela aplicação.
Para obter detalhes sobre como criar e usar a instância IBrowser
, consulte o guia Browser.
Frame
Qualquer página Web carregada na instância IBrowser
tem uma instância principal IFrame
. Esta IFrame
pode ter frames secundárias. Você pode utilizar as instâncias IFrame
para acessar e trabalhar com DOM e JavaScript. Quando uma página Web é descarregada, a sua instância principal IFrame
e todas as frames secundárias são eliminadas automaticamente.
Como funciona
Criando um engine
Quando você cria uma instância do IEngine
, a biblioteca executa as seguintes ações:
- Inicia os processos Chromium Main e GPU.
- Inicializa o engine Chromium no processo principal do Chromium.
- Inicializar o perfil padrão.
- Estabelece a ligação IPC entre o .NET e o processo principal do Chromium.
Se criar duas instâncias IEngine
, são iniciados processos separados Chromium Main e GPU para cada uma delas. Veja o exemplo abaixo:
Criando um navegador
Quando você cria uma instância do IBrowser
, a biblioteca carrega automaticamente uma página Web about:blank
. Como resultado, o processo Chromium Renderer é iniciado para tratar todo o DOM e JavaScript na página Web:
Se você navegar na instância IBrowser
para uma página web, a página é carregada neste processo Chromium Renderer. Se você navegar mais tarde para uma página Web de um domínio diferente, esta é carregada numa instância de processo Chromium Renderer diferente que é iniciada automaticamente. Note que o processo Chromium Renderer que manipulou o conteúdo da página web anterior será terminado.
Descarte do navegador
Quando liberta a instância IBrowser
, o processo correspondente Chromium Renderer é terminado automaticamente. Como consequência, todas as instâncias do IFrame
em execução no processo terminado também serão automaticamente eliminadas:
Eliminação do engine
Quando se elimina a instância IEngine
, a biblioteca executa as seguintes ações:
- Encerramento da ligação IPC existente entre o .NET e os processos principais do Chromium.
- Eliminação do engine Chromium no processo Chromium Main.
- Terminar os processos Chromium Main e GPU.