Was ist CEF? CEF ist eine Abkürzung für Chromium Embedded Framework, eine Open-Source-Webbrowsersteuerung, die auf dem Google Chromium-Projekt basiert und Windows-, Linux- und Max-Plattformen unterstützt. Neben der Bereitstellung von C/C++-Schnittstellen gibt es auch Ports für andere Sprachen.
Da es auf Chromium basiert, unterstützt CEF die HTML5-Funktionen, die in Webkit und Chrome implementiert sind, und ist in Bezug auf die Performance relativ nah an Chrome heran.
CEF bietet außerdem folgende Funktionen: benutzerdefinierte Plugins, benutzerdefinierte Protokolle, benutzerdefinierte Javascrip-Objekte und -Erweiterungen; Steuerierbares Ressourcenladen, Navigation, Kontextmenüs usw.
Wer nutzt CEF Nehmen wir einige praktische Beispiele, um zu veranschaulichen, was alle mit CEF gemacht haben:
Verschiedene Browser
Frühe Dual-Core-Browser (IE + Webkit) verwendeten einige CEF als Webkit-Kernel-Browsersteuerung.
Für Browser ist das direkte Erweitern in Chrome jedoch tatsächlich das Wichtigste, und das machen jetzt alle (verschiedene schnelle Browser).
Evernote-Client (unter Windows)
Evernote ermöglicht es Nutzern, Webseiten in Notizen einzufügen, und bietet außerdem Plugins, um Webseiten als Notizen zu speichern.
Das muss die Notwendigkeit sein, die Seite korrekt auf dem Client darzustellen, und diese Aufgabe liegt bei CEF.
GitHub-Client (unter Windows)
GitHub hat außerdem libcef.dll aus Performance-Sicht bereitgestellt, muss die ReadMe-Seite, die das Projekt darstellt, CEF sein, und die Benutzeroberfläche kann an anderer Stelle teilweise mit Seiten implementiert sein.
QQ
QQ hat einige Funktionen und Schnittstellen durch Einbettung von IE schon vor langer Zeit implementiert. Seit letztem Jahr hat QQ CEF eingeführt, das einige Orte ersetzt, die zuvor IE verwendeten, sodass neue Funktionen auf Basis von Webkit genutzt werden können und gleichzeitig Vorteile in Geschwindigkeit, Stabilität und Kompatibilität gewonnen haben.
Adobe Edge Animate & Adobe Edge Reflow
Adobe hat einen vollständigen Satz moderner Webseiten (oder HTML5?) eingeführt. Edge.
Adobe Edge Animate kann für Animationen komplexe Animationen erreichen, indem es die Zeitleiste bearbeitet und Originale erstellt (in Edge Animate Symbole genannt).
Edge Reflow ist das Design, das responsive Web. Manche übersetzen es als reaktionsfähig, was tatsächlich adaptiv ist.
Die beiden oben genannten Programme sind im Wesentlichen auf den Browser des Webkit-Kernels ausgerichtet, daher ist es notwendig, einen Webkit-Kernel einzubetten, um eine WYSIWYG-Vorschau- und Bearbeitungsoberfläche bereitzustellen. Alle haben CEF verwendet. (Der Unterschied zwischen CEF und reinem Webkit wird später vorgestellt)
Q+
Im Rahmen des Web-App-Konzepts bietet Q+ eine laufende Umgebung für Webseiten (einfach ausgedrückt: eine Client-Box und einige verfügbare APIs) und unterstützt IE- und Webkit-Kernel.
Für Webentwicklungsstudenten muss der von uns eingeführte Webkit-Kernel (eigentlich CEF) die Versionskompatibilitätsprobleme von IE nicht berücksichtigen, was nicht nur die Entwicklungseffizienz verbessert, sondern uns auch ermöglicht, einige neue HTML5-Funktionen zu nutzen. Zu dieser Zeit wurden Q+s Anwendungsmarkt, Nachrichtenzentrum, Hintergrundbilder, Musik-Widgets und andere Anwendungen alle auf Basis des Webkit-Kernels entwickelt.
Man kann sagen, dass das Q+-Projekt weitere Versuche bei CEF unternommen hat, wie zum Beispiel:
Das entwickelte Musik-Widget verwendet das HTML5-Audio-Tag;
Einige Anwendungen nutzen die Offline-Funktionalität von HTML5 (also mit einer Manifestdatei), aber natürlich gibt es einige Wendungen, und ich habe viel Erfahrung gesammelt.
Paketierte Webkit-Entwicklertools.
Benutzerdefinierte Protokolle: Zum Beispiel kann der Zugriff auf qplus:// Protokolle auf einen speziellen Ordner umgeleitet werden.
Off-Screen-Rendering (OSR): Durch Verwendung von Off-Screen-Rendering + Windows Layered Window wird ein unregelmäßiges Webseitenfenster erstellt (wie ist die Form des undurchsichtigen Bereichs der Webseite, wie ist die Form des Fensters)
Warum CEF für Kunden einbetten? Mit so vielen Beispielen ist diese Frage viel leichter zu stellen:
Es wird verwendet, um Webseiten anzuzeigen und verschiedene Webdienste zu nutzen;
Nutze Webseiten für UI;
Nutzen Sie HTML5-Funktionen wie Audio, Canvas usw., einschließlich CSS3-Funktionen.
Offscreen-Rendering (OSR):
Das sogenannte OSR besteht darin, die gesamte Seite auf eine Bitmap zu rendern, ohne ein echtes Fenster zu erstellen. Natürlich nicht nur das Rendering, sondern auch eine Reihe von APIs, um Maus, Tastatur-Events, Eingabemethoden-Events usw. zu verwalten.
Diese Funktion ist besonders nützlich, wenn echte Fenster nicht verwendet werden können, wie bei Layered Windows, oder wenn sie in Spielen auf Texturen gerendert werden.
Mit OSR-Funktionen können interessante Effekte erzeugt werden, wie zum Beispiel:
AlloyTeam hat Webtop entwickelt, das OSR verwendet, um einen Browser, Player usw. zu erstellen.
Es gibt ein Awesomium-Projekt, das ebenfalls OSR unterstützt, und es gibt bereits Spieleprojekte, die Awesomium verwenden, um Webseiten in Spielen zu rendern. (Wenn man sich die Ausgabedatei von Awesomium ansieht, sollte sie der Implementierung von CEF ähneln, es ist alles ein Chromium-Paket, und das CEF, das Awesomium machen kann, sollte ebenfalls gemacht werden.)
In meiner Freizeit habe ich eine Demo erstellt und CEF verwendet, um Webseiten mit OpenGL Texture zu rendern, was als kleiner Versuch angesehen werden kann, CEF auf das Spiel anzuwenden, wie in der Abbildung gezeigt:
Browser-Demo im Spiel
Warum CEF? IE
IE ist schon lange eine eingebettete Browsersteuerung, und genauer gesagt haben wir heute viele Alternativen zu IE.
CEF vs. IE:
Kompatibilität:
IE: Der Kernel variiert je nach Betriebssystem zwischen 6 und 10 Versionen, und die Arbeitsbelastung der Webentwicklung, um mit diesen Versionen kompatibel zu sein, darf nicht unterschätzt werden.
CEF: Es verwendet den Webkit-Kernel, und aus Sicht der Eigenschaften kann eine CEF-Version einer Chrome-Versionsnummer entsprechen, sodass die Webentwicklung einen klaren Funktionssatz hat und die Kompatibilität nicht berücksichtigt werden muss.
HTML5-Standard & Neue Funktionen:
IE: Natürlich unterstützen ältere Versionen von IE nicht die neuesten HTML-Funktionen und -Standards.
CEF: Es besteht kein Zweifel, dass Webkit und Chrome an vorderster Front bei der Unterstützung neuer Funktionen stehen.
Open Source & plattformübergreifend:
IE: Nicht Open Source, beschränkt auf die Windows-Plattform
CEF: Open Source, das verwendete Webkit und Chromium sind alle Open Source, Open Source bedeutet mehr anpassbare Möglichkeiten; Und es umfasst Windows, Mac und Linux.
Off-Screen-Rendering (OSR):
Zum Beispiel: Man kann Offscreen-Rendering durch einige Hacks erreichen, aber die Arbeitsbelastung ist nicht gering und es wird offiziell nicht unterstützt.
CEF: Es gibt einen eigenen Offscreen-Rendering-Modus und eine entsprechende API.
Durchdringung:
IE: Alle Windows-Nutzer haben IE, was der Vorteil von IE ist (aber einige Benutzer haben falsche IE-Einstellungen, die zu Unbrauchbarkeit führen, wie z. B. jscrip{filtering}t.dll nicht registriert sind, was dazu führt, dass Javascrip{filter}t nicht mehr verwendet werden kann).
CEF: Sie müssen es selbst installieren und verpacken
Webkit
Warum CEF und Webkit absichtlich vergleichen?
Ich habe kürzlich einen guten Artikel darüber gelesen, was Webkit ist, was es nicht ist und warum es so viele Webkit-Ports gibt: "Was Entwickler über WebKit wissen müssen"
Hier ist eine grobe Zusammenfassung:
Webkit ist die Parsing- und Arrangement-Engine für Webseiten, die von allen Webkit-basierten Browsern gemeinsam genutzt wird. Der Standard-Webkit-Port ist Safari, die Version, die aus der Webkit-Quellcode-Kompilierung heruntergeladen wurde. Es gibt weitere Webkit-Ports, darunter Chromium, QtWebkit usw., die verschiedene Implementierungen in 2D-Grafik, GPU-Beschleunigung, Javascrip-Engine, Audio-/Video-Dekodierung usw. bieten.
CEF vs Webkit (eigentlich Chromium vs Webkit)
V8-Engine, Skias 2D-Rendering, Chromiums GPU-beschleunigte Implementierung usw. Mit Hilfe der exzellenten Implementierung von Chromium ist CEF ebenfalls zu einem hervorragenden Webkit-Port geworden.
CEF-Nachteile: Seien Sie freundlich, CEF hat auch seine eigenen Schwächen und Einschränkungen, und Sie können nicht nur die Vorteile erwähnen, hier stelle ich die Vor- und Nachteile von CEF vor:
Volumen:
Bei der neuesten Version von CEF sollte die Summe aller DLLs nahe bei 40 Millionen liegen, und es wird geschätzt, dass es nach der Kompression 10 Mio. sein wird. Wenn dein Projekt selbst nicht groß ist und es nicht erhalten kann, ist CEF nichts für dich.
Natürlich sollte dieses Volumen für Spiele, die jetzt von G berechnet werden, weiterhin akzeptabel sein.
Bei gewöhnlichen Kundenprojekten hängt es davon ab, ob das Projekt selbst die von CEF implementierten Funktionen nutzen muss und ob es sich lohnt, das Installationspaket des Produkts so stark zu erweitern. Natürlich gibt es hier auch einige Implementierungskompromisse, wie zum Beispiel das Herunterladen nach der Installation (ich persönlich halte das nicht für sinnvoll, schließlich können Nutzer, die Pakete installieren, auch Software herunterladen, um schneller zu werden)
Cache:
Der Cache von Chrome ist so konzipiert, dass nur ein Prozess lesen und schreiben kann, und das gilt auch für CEF.
Für Clients, die mehrfach geöffnet werden müssen, kann für jede Prozessinstanz nur ein anderer Cache-Ordner angegeben werden. Dies erhöht jedoch zweifellos die Festplattennutzung und führt auch dazu, dass einige ursprünglich zwischengespeicherte Dateien mehrfach heruntergeladen werden (zum Beispiel cacht Prozess A jQuery.js, Prozess B muss einmal anfordern und cachen, weil er verschiedene Verzeichnisse jQueyr.js
OSR:
OSR ist derzeit nicht wie der Real-Window-Modus, der von der GPU belästigt werden kann, und OSR kann nur mit Software gerendert werden, was bedeutet, dass einige CSS-3D-Effekte nicht unterstützt werden können.
Dennoch werden die Eigenschaften von OSR weiterhin verbessert, und ich persönlich denke, es lohnt sich weiterhin, sich darauf zu freuen.
Was du später teilen möchtest Nach so viel Schreiben kann es als Einführung in CEF betrachtet werden, und ich werde in Zukunft einige Trockenartikel schreiben, also darüber, wie man CEF verwendet, darunter:
CEF-Code-Erfassung, Kompilierung, Embedding, Verarbeitung von API-Aufrufen von Seiten und Clients, OSR-Offscreen-Rendering, Caching, benutzerdefinierte Protokolle, CEF1 & CEF3 usw.
Das war's für heute.
|