Ce este CEF? CEF este o abreviere pentru Chromium Embedded Framework, un sistem open-source de control al browserului web bazat pe proiectul Google Chromium, suportând platformele Windows, Linux și Max. Pe lângă furnizarea de interfețe C/C++, există și porturi pentru alte limbaje.
Deoarece se bazează pe Chromium, CEF suportă funcțiile HTML5 implementate în Webkit și Chrome și este relativ apropiat de Chrome în ceea ce privește performanța.
CEF oferă, de asemenea, următoarele funcționalități: pluginuri personalizate, protocoale personalizate, obiecte și extensii Javascrip personalizate; Încărcarea resurselor controlabile, navigarea, meniurile contextuale etc.
Cine folosește CEF Să folosim câteva exemple practice pentru a ilustra ce a făcut fiecare cu CEF:
Diverse browsere
Primele browsere dual-core (IE + Webkit) unele foloseau CEF ca control al browserului kernel Webkit.
Totuși, pentru browsere, extinderea directă pe Chrome este de fapt cea mai importantă, iar toată lumea face asta acum (diverse browsere rapide).
Clientul Evernote (pe Windows)
Evernote permite utilizatorilor să lipească pagini web în notițe și oferă, de asemenea, pluginuri pentru salvarea paginilor web ca notițe.
Aceasta trebuie să fie necesitatea de a reda pagina corect pe client, iar această sarcină este lăsată pe seama CEF.
Clientul GitHub (pe Windows)
GitHub a ambalat, de asemenea, libcef.dll, din punct de vedere al performanței, pagina ReadMe folosită pentru afișarea proiectului trebuie să fie CEF, iar interfața în alte părți poate fi parțial implementată cu pagini.
QQ
QQ a implementat unele funcții și interfețe prin încorporarea IE cu mult timp în urmă. De anul trecut, QQ a introdus CEF, înlocuind unele locuri care foloseau IE anterior, astfel încât unele funcții noi bazate pe Webkit pot fi folosite și, în același timp, a câștigat avantaje în viteză, stabilitate și compatibilitate.
Adobe Edge Animate & Adobe Edge Reflow
Adobe a lansat un set complet de pagini web moderne (sau HTML5?) Edge.
Adobe Edge Animate, pentru animație, poate realiza animații complexe prin editarea cronologiei și crearea originalelor (numite simboluri în Edge Animate).
Edge Reflow este designul web-ului responsiv. Unii oameni o traduc ca fiind receptivă, ceea ce de fapt este adaptativă.
Cele două programe de mai sus sunt orientate practic către browserul nucleului Webkit, astfel încât este necesar să se încorporeze un nucleu Webkit pentru a oferi o interfață de previzualizare și editare WYSIWYG. Toți au folosit CEF. (Diferența dintre CEF și Webkit pur va fi introdusă mai târziu)
Q+
Sub conceptul de Web App, Q+ oferă un mediu de rulare pentru pagini web (pe scurt: o casetă a clientului și unele API-uri disponibile) și suportă kernelurile IE și Webkit.
Pentru studenții la dezvoltare web, nucleul Webkit (de fapt CEF) pe care l-am introdus nu trebuie să ia în considerare problemele de compatibilitate ale versiunilor ale IE, ceea ce nu doar că îmbunătățește eficiența dezvoltării, dar ne permite și să profităm de unele funcții noi HTML5. La acea vreme, piața aplicațiilor Q+, centrul de mesaje, fundalele de fundal, widget-urile muzicale și alte aplicații erau toate dezvoltate pe baza nucleului Webkit.
Se poate spune că proiectul Q+ a făcut mai multe încercări de a realiza CEF, cum ar fi:
Widget-ul muzical dezvoltat folosește tag-ul audio HTML5;
Unele aplicații folosesc funcționalitatea offline a HTML5 (adică cu un fișier manifest), dar, desigur, există unele întorsături și întorsături, iar eu am acumulat multă experiență.
Unelte de dezvoltare webkit ambalate.
Protocoale personalizate: De exemplu, accesul la protocoale qplus:// poate fi redirecționat către un folder special.
Redare în afara ecranului (OSR): Prin utilizarea randării în afara ecranului + fereastra stratificată Windows, se creează o fereastră neregulată a paginii web (care este forma zonei opace a paginii web, care este forma ferestrei)
De ce să integrăm CEF pentru clienți? Cu atât de multe exemple, această întrebare este mult mai ușor de spus:
Este folosită pentru afișarea paginilor web și pentru utilizarea diverselor servicii web;
Folosește pagini web pentru UI;
Folosește funcții HTML5, cum ar fi audio, canvas etc., inclusiv funcții CSS3.
Randare în afara ecranului (OSR):
Așa-numitul OSR înseamnă să redai întreaga pagină pe un bitmap fără a crea o fereastră reală. Desigur, nu doar randare, ci și o serie de API-uri pentru a gestiona evenimente de mouse, tastatură, evenimente de metode de input etc.
Această funcție este deosebit de utilă atunci când ferestrele reale nu pot fi folosite, cum ar fi pe ferestrele stratificate sau când sunt randate pe texturi în jocuri.
Folosind funcțiile OSR, pot fi realizate efecte interesante, cum ar fi:
AlloyTeam a creat Webtop, care folosește OSR pentru a crea un browser, un player etc.
Există un proiect Awesomium care suportă și OSR, iar deja există proiecte de jocuri care folosesc Awesomium pentru a reda pagini web în jocuri. (Uitându-mă la fișierul de ieșire al Awesomium, ar trebui să fie similar cu implementarea CEF, totul este un pachet de Chromium, iar CEF pe care Awesomium îl poate face ar trebui făcut și el)
În timpul liber, am făcut o demonstrație și am folosit CEF pentru a reda pagini web pe OpenGL Texture, ceea ce poate fi considerat o mică încercare de a aplica CEF jocului, așa cum se vede în figură:
Demonstrație în browser în joc
De ce CEF? IE
IE a fost un control integrat al browserului de mult timp și, mai exact, acum avem multe alternative la IE.
CEF vs IE:
Compatibilitate:
Adică nucleul variază între 6 și 10 versiuni în funcție de sistemul de operare, iar volumul de lucru al dezvoltării web pentru a fi compatibil cu aceste versiuni nu poate fi subestimat.
CEF: Folosește nucleul Webkit, iar din punct de vedere al caracteristicilor, o versiune CEF poate corespunde unui număr de versiune Chrome, astfel încât dezvoltarea web să aibă un set clar de funcționalități, eliminând sarcina de muncă a compatibilității.
Standard HTML5 & Funcții noi:
IE: Desigur, versiunile mai vechi ale IE nu suportă cele mai noi funcții și standarde HTML.
CEF: Nu există nicio îndoială că Webkit și Chrome sunt în fruntea susținerii noilor funcționalități.
Sursă Deschisă & Multiplatformă:
Adică: Nu este open source, este limitat la platforma Windows
CEF: Open source, Webkit-ul și Chromium folosite sunt toate open source, open source înseamnă mai multe posibilități personalizabile; Și acoperă Windows, Mac și Linux.
Redare în afara ecranului (OSR):
De exemplu: poți realiza randare off-screen prin unele hack-uri, dar volumul de lucru nu este mic și nu este susținut oficial.
CEF: Există un mod dedicat de randare off-screen și API-ul corespunzător.
Penetrare:
IE: Toți utilizatorii Windows au IE, care este avantajul IE (dar unii utilizatori au setări IE incorecte, ceea ce duce la inutilizabilitate, cum ar fi jscrip{filtering}t.dll neînregistrat, ceea ce duce la imposibilitatea de a folosi Javascrip{filter}t)
CEF: Trebuie să-l instalezi și să-l ambalezi singur
Webkit
De ce să compari în mod deliberat CEF și Webkit?
Recent am citit un articol bun despre ce este Webkit, ce nu este și de ce există atât de multe portări Webkit: "Ce trebuie să știe dezvoltatorii despre WebKit"
Iată un rezumat aproximativ:
Webkit este motorul de analizare și aranjare pentru paginile web, care este partajat de toate browserele bazate pe Webkit. Portul implicit pentru Webkit este Safari, care este versiunea descărcată din compilarea codului sursă Webkit. Există și alte porturi Webkit, inclusiv Chromium, QtWebkit etc., care au implementări diferite în grafică 2D, accelerare GPU, motor Javascrip, decodare audio/video etc.
CEF vs webkit (de fapt Chromium vs Webkit)
Motorul V8, randarea 2D de la skia, implementarea accelerată GPU a Chromium etc., cu ajutorul implementării excelente a Chromium, CEF a devenit și el un port Webkit excelent.
Dezavantaje ale CEF: Fiți amabili, CEF are și propriile sale neajunsuri și limitări, și nu puteți menționa doar avantajele, aici voi introduce dezavantajele și dezavantajele CEF:
Volum:
În cea mai recentă versiune a CEF, suma tuturor DLL-urilor ar trebui să fie aproape de 40M, iar după compresie se estimează că va fi 10M+. Dacă proiectul tău în sine nu este mare ca dimensiune și nu îl poate primi, atunci CEF nu este pentru tine.
Desigur, pentru jocurile care acum sunt calculate de G, acest volum ar trebui să fie totuși acceptabil.
Pentru proiectele obișnuite ale clienților, depinde dacă proiectul în sine trebuie să folosească funcțiile implementate de CEF și dacă merită să crească atât de mult pachetul de instalare al produsului. Desigur, există și unele compromisuri de implementare aici, cum ar fi descărcarea după instalare (personal nu cred că este semnificativ, până la urmă, utilizatorii care instalează pachete pot alege să descarce software pentru a accelera)
Cache:
Cache-ul Chrome este proiectat să aibă doar un singur proces de citire și scriere, iar același lucru este valabil și pentru CEF.
Pentru clienții care trebuie deschiși de mai multe ori, doar un folder cache diferit poate fi specificat pentru fiecare instanță de proces. Totuși, acest lucru crește fără îndoială utilizarea hard disk-ului și determină ca unele fișiere care inițial au fost stocate în cache să fie descărcate de mai multe ori (de exemplu, procesul A stochează jQuery.js, procesul B trebuie să solicite și să stocheze cache o singură dată deoarece stochează în cache directoare diferite jQueyr.js
OSR:
OSR nu este în prezent ca modul fereastră reală, care poate fi accelerat de GPU, iar OSR poate fi redat doar prin software, ceea ce înseamnă că unele efecte CSS 3D nu pot fi suportate.
Totuși, caracteristicile OSR sunt încă în curs de îmbunătățire și, personal, cred că merită să așteptăm cu nerăbdare.
Ce să împărtășesc mai târziu După ce am scris atât de mult, poate fi considerat o introducere în CEF, iar în viitor voi scrie câteva produse textile, adică cum să folosești CEF, inclusiv:
Achiziția codului CEF, compilarea, încorporarea, procesarea apelurilor API ale paginilor și clienților, redarea OSR off-screen, caching, protocoale personalizate, CEF1 & CEF3 etc.
Ei bine, asta e tot pentru azi.
|