¿Qué es la CEF? CEF es una abreviatura de Chromium Embedded Framework, que es un control de navegador web de código abierto basado en el proyecto Google Chromium, compatible con las plataformas Windows, Linux y Max. Además de proporcionar interfaces C/C++, también existen puertos para otros lenguajes.
Debido a que está basado en Chromium, CEF soporta las funciones HTML5 implementadas en Webkit y Chrome, y está relativamente cerca de Chrome en cuanto a rendimiento.
CEF también ofrece las siguientes características: plugins personalizados, protocolos personalizados, objetos y extensiones Javascrip personalizados; Carga de recursos controlables, navegación, menús contextuales, etc.
¿Quién está usando CEF? Utilicemos algunos ejemplos prácticos para ilustrar lo que todos han hecho con la CEF:
Diversos navegadores
Los primeros navegadores de doble núcleo (IE + Webkit), algunos usaban CEF como control del navegador del núcleo Webkit.
Sin embargo, en los navegadores, extenderse directamente en Chrome es realmente lo más importante, y ahora todo el mundo lo hace (varios navegadores rápidos).
Cliente Evernote (en Windows)
Evernote permite a los usuarios pegar páginas web en notas y también ofrece complementos para guardar páginas web como notas.
Eso debe ser la necesidad de renderizar la página correctamente en el cliente, y esta tarea queda en manos de CEF.
Cliente GitHub (en Windows)
GitHub también ha empaquetado libcef.dll, desde el punto de vista del rendimiento, la página de ReadMe utilizada para mostrar el proyecto debe ser CEF, y la interfaz de usuario en otros lugares también puede implementarse parcialmente con páginas.
QQ
QQ implementó algunas funciones e interfaces integrando IE hace mucho tiempo. Desde el año pasado, QQ ha introducido CEF, reemplazando algunos lugares que antes usaban IE, de modo que se pueden utilizar nuevas funciones basadas en Webkit y, al mismo tiempo, ha ganado ventajas en velocidad, estabilidad y compatibilidad.
Adobe Edge Animate y Adobe Edge Reflow
Adobe ha lanzado un conjunto completo de páginas web modernas (¿o HTML5?) Edge.
Adobe Edge Animate, para animación, puede lograr animaciones complejas editando la línea de tiempo y creando originales (llamados símbolos en Edge Animate).
Edge Reflow es el diseño de la web responsiva. Algunas personas lo interpretan como responsivo, que en realidad es adaptativo.
Los dos programas anteriores están básicamente orientados al navegador del núcleo Webkit, por lo que es necesario incrustar un núcleo Webkit para proporcionar una interfaz de vista previa y edición WYSIWYG. Todos usaban CEF. (La diferencia entre CEF y Webkit puro se introducirá más adelante)
P+
Bajo el concepto de Web App, Q+ proporciona un entorno de ejecución para páginas web (en pocas palabras: una caja del cliente y algunas APIs disponibles), y soporta núcleos IE y Webkit.
Para los estudiantes de desarrollo web, el núcleo Webkit (en realidad CEF) que introdujimos no necesita tener en cuenta los problemas de compatibilidad de versiones de IE, lo que no solo mejora la eficiencia del desarrollo, sino que también nos permite aprovechar algunas nuevas funciones de HTML5. En ese momento, el mercado de aplicaciones de Q+, el centro de mensajes, los fondos de pantalla, los widgets de música y otras aplicaciones se desarrollaban basados en el núcleo Webkit.
Se puede decir que el proyecto Q+ hizo más intentos de CEF, tales como:
El widget de música desarrollado utiliza la etiqueta de audio HTML5;
Algunas aplicaciones usan la funcionalidad offline de HTML5 (es decir, con un archivo manifiesto), pero por supuesto hay algunos giros y vueltas, y he adquirido mucha experiencia.
Herramientas de desarrollo de Webkits empaquetadas.
Protocolos personalizados: Por ejemplo, el acceso a qplus:// protocolos puede redirigirse a una carpeta especial.
Renderizado fuera de pantalla (OSR): Usando renderizado fuera de pantalla + Windows Layered Window, se crea una ventana de página web irregular (¿cuál es la forma del área opaca de la página web, cuál es la forma de la ventana)
¿Por qué incorporar la CEF para los clientes? Con tantos ejemplos, esta pregunta es mucho más fácil de decir:
Se utiliza para mostrar páginas web y utilizar diversos servicios web;
Usa páginas web para hacer la interfaz de usuario;
Utiliza funciones HTML5, como audio, canvas, etc., incluyendo funciones de CSS3.
Renderizado fuera de pantalla (OSR):
El llamado OSR consiste en renderizar toda la página en un mapa de bits sin crear una ventana real. Por supuesto, no solo renderizado, sino también una serie de APIs para gestionar eventos de ratón, teclado, eventos de métodos de entrada, etc.
Esta función es especialmente útil cuando no se pueden usar ventanas reales, como en ventanas en capas, o cuando se renderizan en texturas en juegos.
Utilizando características OSR, se pueden crear algunos efectos interesantes, como:
AlloyTeam hizo Webtop, que utiliza OSR para crear un navegador, un reproductor, etc.
Hay un proyecto Awesomium que también soporta OSR, y ya hay proyectos de juegos que usan Awesomium para renderizar páginas web en juegos. (Mirando el archivo de salida de Awesomium, debería ser similar a la implementación de CEF, todo es un paquete de Chromium, y CEF que Awesomium puede hacer también debería hacerse)
En mi tiempo libre, hice una demo y utilicé CEF para renderizar páginas web en OpenGL Texture, lo que puede considerarse un pequeño intento de aplicar CEF al juego, como se muestra en la figura:
Demo en navegador dentro del juego
¿Por qué CEF? IE
IE ha sido un control de navegador embebido durante mucho tiempo y, para ser precisos, ahora tenemos muchas alternativas a IE.
CEF vs IE:
Compatibilidad:
Es decir: El núcleo varía entre 6 y 10 versiones según el sistema operativo, y la carga de trabajo del desarrollo web para ser compatible con estas versiones no puede subestimarse.
CEF: Utiliza el núcleo Webkit y, desde el punto de vista de las características, una versión CEF puede corresponder a un número de versión de Chrome, de modo que el desarrollo web tiene un conjunto claro de características, eliminando la carga de trabajo de considerar la compatibilidad.
Estándar HTML5 y nuevas características:
IE: Por supuesto, las versiones anteriores de IE no soportan las últimas funciones y estándares HTML.
CEF: No hay duda de que Webkit y Chrome están a la vanguardia en el soporte de nuevas funciones.
Código abierto y multiplataforma:
Es decir: No es de código abierto, está limitado a la plataforma Windows
CEF: Código abierto, el Webkit y Chromium usados son todos de código abierto, el código abierto significa más posibilidades personalizables; Y abarca Windows, Mac y Linux.
Renderizado fuera de pantalla (OSR):
Por ejemplo: puedes lograr renderizado fuera de pantalla con algunos hacks, pero la carga de trabajo no es pequeña y no está oficialmente soportado.
CEF: Hay un modo dedicado de renderizado fuera de pantalla y la API correspondiente.
Penetración:
IE: Todos los usuarios de Windows tienen IE, que es la ventaja de IE (pero algunos usuarios tienen configuraciones incorrectas de IE, lo que puede llevar a la inusabilidad, como jscrip{filtering}t.dll no registrado, lo que resulta en la imposibilidad de usar Javascrip{filter}t)
CEF: Tienes que instalarlo y empaquetarlo tú mismo
Webkit
¿Por qué comparar deliberadamente CEF y Webkit?
Recientemente leí un buen artículo sobre qué es Webkit, qué no es y por qué hay tantos ports de Webkit: "Qué necesitan saber los desarrolladores sobre WebKit"
Aquí tienes un resumen aproximado:
Webkit es el motor de análisis y disposición de páginas web, que comparten todos los navegadores basados en Webkit. El puerto predeterminado de Webkit es Safari, que es la versión descargada de la compilación del código fuente de Webkit. Hay otros puertos para Webkit, incluyendo Chromium, QtWebkit, etc., que tienen diferentes implementaciones en gráficos 2D, aceleración GPU, motor Javascrip, decodificación de audio/vídeo, etc.
CEF vs webkit (en realidad Chromium vs Webkit)
El motor V8, el renderizado 2D de skia, la implementación acelerada por GPU de Chromium, etc., con la ayuda de la excelente implementación de Chromium, CEF también se ha convertido en un excelente port para Webkit.
Desventajas del CEF: Sed amables, la CEF también tiene sus propias carencias y limitaciones, y no puedes mencionar solo las ventajas; aquí presentaré las desventajas y desventajas de la CEF:
Volumen:
En la última versión de CEF, la suma de todas las DLLs debería estar cerca de 40M, y se estima que será de 10M+ tras la compresión. Si tu proyecto en sí no es grande y no puede recibirlo, entonces el CEF no es para ti.
Por supuesto, para juegos que ahora son calculados por G, este volumen debería seguir siendo aceptable.
Para proyectos de clientes ordinarios, depende de si el propio proyecto necesita usar las características implementadas por CEF y si merece la pena aumentar tanto el paquete de instalación del producto. Por supuesto, también hay algunos compromisos en la implementación, como descargar después de la instalación (personalmente no creo que esto sea significativo, al fin y al cabo, los usuarios que instalan paquetes también pueden optar por descargar software para acelerar)
Caché:
La caché de Chrome está diseñada para que solo un proceso sea leído y grabado, y lo mismo ocurre con CEF.
Para clientes que necesitan ser abiertos varias veces, solo se puede especificar una carpeta de caché diferente para cada instancia de proceso. Sin embargo, esto sin duda aumenta el uso del disco duro y también provoca que algunos archivos que originalmente estaban almacenados en caché se descarguen varias veces (por ejemplo, el proceso A almacena en caché jQuery.js, el proceso B tiene que solicitar y almacenar en caché una vez porque almacena en caché diferentes directorios jQueyr.js
OSR:
Actualmente, OSR no es como el modo ventana real, que puede acelerarse con GPU, y OSR solo puede renderizarse usando software, lo que significa que algunos efectos CSS 3D no pueden ser compatibles.
Sin embargo, las características de OSR siguen mejorando, y personalmente creo que sigue siendo una opción que merece la pena esperar.
Qué compartir más adelante Después de tanto escribir, puede considerarse una introducción a la CEF, y escribiré algunos productos secos en el futuro, es decir, cómo usar la CEF, incluyendo:
Adquisición, compilación, incrustación de código CEF, procesamiento de llamadas API de páginas y clientes, renderizado fuera de pantalla OSR, caché, protocolos personalizados, CEF1 y CEF3, etc.
Bueno, eso es todo por hoy.
|