O que é CEF? CEF é uma abreviação de Chromium Embedded Framework, que é um controle de navegador web de código aberto baseado no projeto Google Chromium, suportando plataformas Windows, Linux e Max. Além de fornecer interfaces C/C++, também existem portas para outras linguagens.
Por ser baseado no Chromium, o CEF suporta os recursos HTML5 implementados no Webkit e Chrome, e está relativamente próximo do Chrome em termos de desempenho.
O CEF também oferece os seguintes recursos: plugins personalizados, protocolos customizados, objetos e extensões Javascrip personalizados; Carregamento de recursos controlável, navegação, menus de contexto, etc.
Quem está usando o CEF Vamos usar alguns exemplos práticos para ilustrar o que todos fizeram com a CEF:
Diversos navegadores
Os primeiros navegadores dual-core (IE + Webkit), alguns usavam CEF como controle de navegador do kernel Webkit.
No entanto, para navegadores, estender diretamente no Chrome é realmente o rei, e todo mundo está fazendo isso agora (vários navegadores rápidos).
Cliente Evernote (no Windows)
O Evernote permite que os usuários colem páginas web em notas e também oferece plugins para salvar páginas web como anotações.
Essa deve ser a necessidade de renderizar a página corretamente no cliente, e essa tarefa fica para o CEF.
Cliente GitHub (no Windows)
O GitHub também libcef.dll que, do ponto de vista do desempenho, a página do ReadMe usada para exibir o projeto deve ser CEF, e a interface em outros lugares também pode ser parcialmente implementada com páginas.
QQ
O QQ implementou algumas funções e interfaces ao incorporar o IE há muito tempo. Desde o ano passado, a QQ introduziu o CEF, substituindo alguns lugares que usavam IE anteriormente, permitindo que alguns novos recursos baseados no Webkit possam ser usados e, ao mesmo tempo, ganhou vantagens em velocidade, estabilidade e compatibilidade.
Adobe Edge Animate & Adobe Edge Reflow
A Adobe lançou um conjunto completo de páginas web modernas (ou HTML5?) Edge.
O Adobe Edge Animate, para animação, pode realizar animações complexas editando a linha do tempo e criando originais (chamados de símbolos no Edge Animate).
Edge Reflow é o Design da Web responsiva. Algumas pessoas traduzem como responsivo, que na verdade é adaptativo.
Os dois softwares acima são basicamente orientados para o navegador do kernel Webkit, então é necessário incorporar um kernel Webkit para fornecer uma interface de pré-visualização e edição WYSIWYG. Todos usaram CEF. (A diferença entre CEF e Webkit puro será apresentada posteriormente)
P+
Sob o conceito de Web App, o Q+ fornece um ambiente de execução para páginas web (simplificando: uma caixa do cliente e algumas APIs disponíveis), e suporta kernels IE e Webkit.
Para estudantes de desenvolvimento web, o kernel Webkit (na verdade CEF) que introduzimos não precisa considerar os problemas de compatibilidade de versões do IE, o que não só melhora a eficiência do desenvolvimento, como também nos permite aproveitar alguns novos recursos do HTML5. Naquela época, o mercado de aplicações do Q+, o centro de mensagens, papéis de parede, widgets de música e outros aplicativos eram todos desenvolvidos com base no kernel Webkit.
Pode-se dizer que o projeto Q+ fez mais tentativas de CEF, tais como:
O widget de música desenvolvido usa a tag de áudio HTML5;
Alguns aplicativos usam a funcionalidade offline do HTML5 (ou seja, com um arquivo manifesto), mas claro que há algumas reviravoltas, e eu ganhei muita experiência.
Ferramentas de desenvolvimento de Webkits Embaladas.
Protocolos personalizados: Por exemplo, o acesso a qplus:// protocolos pode ser redirecionado para uma pasta especial.
Renderização fora da tela (OSR): Usando renderização fora da tela + Windows Layered Window, uma janela de página web irregular é criada (qual é a forma da área opaca da página, qual é o formato da janela)
Por que incorporar o CEF para clientes? Com tantos exemplos, essa pergunta é muito mais fácil de dizer:
É usado para exibir páginas web e utilizar diversos serviços web;
Use páginas web para fazer UI;
Use recursos HTML5, como áudio, canvas, etc., incluindo recursos do CSS3.
Renderização fora da tela (OSR):
O chamado OSR é renderizar toda a página em um bitmap sem criar uma janela real. Claro, não só renderização, mas também uma série de APIs para lidar com mouse, eventos de teclado, eventos de métodos de entrada, etc.
Esse recurso é especialmente útil quando janelas reais não podem ser usadas, como em Janelas em Camadas, ou quando renderizadas em texturas em jogos.
Usando recursos OSR, alguns efeitos interessantes podem ser feitos, como:
A AlloyTeam fez o Webtop, que usa OSR para criar um navegador, player, etc.
Existe um projeto Awesomium que também suporta OSR, e já existem projetos de jogos que usam Awesomium para renderizar páginas web em jogos. (Olhando para o arquivo de saída do Awesomium, ele deveria ser semelhante à implementação do CEF, tudo é um pacote do Chromium, e o CEF que o Awesomium pode fazer também deveria ser feito)
No meu tempo livre, fiz uma demo e usei CEF para renderizar páginas web no OpenGL Texture, o que pode ser considerado uma pequena tentativa de aplicar CEF ao jogo, como mostrado na figura:
Demo no navegador do jogo
Por que CEF? Ou seja,
O IE tem sido um controle embutido do navegador há muito tempo e, para ser preciso, agora temos muitas alternativas ao IE.
CEF vs IE:
Compatibilidade:
Ou seja: O kernel varia de 6 a 10 versões dependendo do sistema operacional, e a carga de trabalho do desenvolvimento web para ser compatível com essas versões não pode ser subestimada.
CEF: Ele usa o kernel Webkit e, do ponto de vista das características, uma versão CEF pode corresponder a um número de versão do Chrome, de modo que o desenvolvimento web tenha um conjunto claro de recursos, eliminando a carga de trabalho de considerar compatibilidade.
Padrão HTML5 e Novos Recursos:
IE: Claro, versões mais antigas do IE não suportam os recursos e padrões HTML mais recentes.
CEF: Não há dúvida de que Webkit e Chrome estão na vanguarda do suporte a novos recursos.
Código Aberto & Multiplataforma:
Ou seja: Não é open source, limitado à plataforma Windows
CEF: Open source, o Webkit e o Chromium usados são todos open source, open source significa mais possibilidades personalizáveis; E abrange Windows, Mac e Linux.
Renderização Fora de Tela (OSR):
Exemplo: Você pode conseguir renderização fora da tela com alguns hacks, mas a carga de trabalho não é pequena e não é oficialmente suportada.
CEF: Há um modo dedicado de renderização fora da tela e a API correspondente.
Penetração:
IE: Todos os usuários do Windows têm IE, que é a vantagem do IE (mas alguns usuários têm configurações de IE incorretas, o que pode levar à inusabilidade, como jscrip{filtering}t.dll não registrado, resultando na impossibilidade de usar Javascrip{filter}t)
CEF: Você tem que instalar e empacotar você mesmo
Webkit
Por que comparar deliberadamente CEF e Webkit?
Recentemente li um bom artigo sobre o que é o Webkit, o que não é e por que existem tantas adaptações para Webkit: "O que os desenvolvedores precisam saber sobre o WebKit"
Aqui está um resumo aproximado:
Webkit é o motor de análise e arranjo para páginas web, compartilhado por todos os navegadores baseados em Webkit. A versão padrão do Webkit é o Safari, que é a versão baixada da compilação do código-fonte do Webkit. Existem outras portas para Webkit, incluindo Chromium, QtWebkit, etc., que têm implementações diferentes em gráficos 2D, aceleração de GPU, motor Javascrip, decodificação de áudio/vídeo, etc.
CEF vs webkit (na verdade Chromium vs Webkit)
Motor V8, renderização 2D da skia, implementação acelerada por GPU da Chromium, etc., com a ajuda da excelente implementação da Chromium, o CEF também se tornou uma excelente porta para Webkit.
Desvantagens do CEF: Seja gentil, a CEF também tem suas próprias limitações e limitações, e você não pode apenas mencionar as vantagens; aqui vou apresentar as desvantagens e desvantagens da CEF:
Volume:
Na versão mais recente do CEF, a soma de todas as DLLs deve ser próxima de 40M, e estima-se que será 10M+ após compressão. Se seu projeto em si não for grande e não puder recebê-lo, então o CEF não é para você.
Claro, para jogos que agora são calculados por G, esse volume ainda deve ser aceitável.
Para projetos comuns de clientes, depende se o próprio projeto precisa usar os recursos implementados pelo CEF e se vale a pena aumentar tanto o pacote de instalação do produto. Claro, também há algumas concessões de implementação aqui, como baixar após a instalação (pessoalmente, não acho que isso seja significativo, afinal, usuários que instalam pacotes também podem optar por baixar softwares para acelerar)
Cache:
O cache do Chrome foi projetado para ter apenas um processo de leitura e gravação, e o mesmo vale para o CEF.
Para clientes que precisam ser abertos várias vezes, apenas uma pasta de cache diferente pode ser especificada para cada instância de processo. No entanto, isso sem dúvida aumenta o uso do disco rígido e também faz com que alguns arquivos que originalmente foram armazenados em cache sejam baixados várias vezes (por exemplo, o processo A armazena em cache jQuery.js, o processo B precisa solicitar e armazenar em cache uma vez porque armazena diretórios diferentes jQueyr.js
OSR:
Atualmente, o OSR não é como o modo janela real, que pode ser acelerado pela GPU, e o OSR só pode ser renderizado por software, o que significa que alguns efeitos CSS 3D não podem ser suportados.
No entanto, as características do OSR ainda estão sendo aprimoradas, e pessoalmente acho que ainda vale a pena esperar por isso.
O que compartilhar depois Depois de escrever tanto, pode ser considerado uma introdução ao CEF, e escreverei alguns artigos secos no futuro, ou seja, como usar o CEF, incluindo:
Aquisição de código CEF, compilação, incorporação, processamento de chamadas de API de páginas e clientes, renderização OSR fora da tela, cache, protocolos personalizados, CEF1 & CEF3, etc.
Bem, é só isso por hoje.
|