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:

dotnetbrowser-architecture-diagram .NET Process .NET App Chromium GPU DotNetBrowser BrowserView WPF WinForms Engine Profile Browser Frame Chromium Main Engine Profile Browser Chromium Renderer Frame DOM JS Frame DOM JS DOM JS Frame DOM JS IPC Chromium IPC Chromium IPC Chromium IPC IPC IPC

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.

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:

  1. Inicia os processos Chromium Main e GPU.
  2. Inicializa o engine Chromium no processo principal do Chromium.
  3. Inicializar o perfil padrão.
  4. Estabelece a ligação IPC entre o .NET e o processo principal do Chromium.
run-engine .NET App Engine Chromium Main Engine Chromium GPU IPC Channel Chromium IPC

Se criar duas instâncias IEngine , são iniciados processos separados Chromium Main e GPU para cada uma delas. Veja o exemplo abaixo:

run-engines .NET App Engine Engine Chromium Main Engine Chromium GPU Chromium Main Engine Chromium GPU IPC Channel IPC Channel Chromium IPC Chromium IPC

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:

run-browser .NET App Engine Profile Browser Frame about:blank DOM JS Chromium Main Engine Profile Browser Chromium Renderer Frame about:blank DOM JS Chromium GPU IPC Channel IPC Channel Chromium IPC Chromium IPC

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:

run-engine .NET App Engine Chromium Main Engine Chromium GPU IPC Channel Chromium IPC

Eliminação do engine

Quando se elimina a instância IEngine, a biblioteca executa as seguintes ações:

  1. Encerramento da ligação IPC existente entre o .NET e os processos principais do Chromium.
  2. Eliminação do engine Chromium no processo Chromium Main.
  3. Terminar os processos Chromium Main e GPU.
Go Top