Какво е CEF? CEF е съкращение от Chromium Embedded Framework, който е контрол на уеб браузъра с отворен код, базиран на проекта Google Chromium, поддържащ платформи Windows, Linux и Max. Освен че предоставят C/C++ интерфейси, има и портове за други езици.
Тъй като е базиран на Chromium, CEF поддържа HTML5 функциите, реализирани в Webkit и Chrome, и е сравнително близък до Chrome по отношение на производителността.
CEF предоставя и следните функции: персонализирани плъгини, персонализирани протоколи, персонализирани Javascrip обекти и разширения; Контролирано зареждане на ресурси, навигация, контекстни менюта и др.
Кой използва CEF Нека използваме няколко практични примера, за да илюстрираме какво всички са направили с CEF:
Различни браузъри
Ранните двуядрени браузъри (IE + Webkit) някои използваха CEF като контрол на браузъра в ядрото на Webkit.
Въпреки това, за браузърите, разширяването директно в Chrome всъщност е най-важното, и сега всички го правят (различни бързи браузъри).
Evernote клиент (на Windows)
Evernote позволява на потребителите да поставят уеб страници в бележки и също така предоставя плъгини за запазване на уеб страници като бележки.
Това трябва да е необходимостта страницата да се рендерира правилно на клиента, и тази задача се оставя на CEF.
GitHub клиент (на Windows)
GitHub също е пакетирал libcef.dll – от гледна точка на производителността, страницата ReadMe, използвана за показване на проекта, трябва да е CEF, а потребителският интерфейс на други места може да бъде частично реализиран със страници.
QQ
QQ е реализирала някои функции и интерфейси чрез вграждане на IE отдавна. От миналата година QQ въведе CEF, заменяйки някои места, които преди използваха IE, така че да могат да се използват нови функции, базирани на Webkit, и в същото време придоби предимства по отношение на скорост, стабилност и съвместимост.
Adobe Edge Animate и Adobe Edge Reflow
Adobe пусна пълен набор от модерни уеб страници (или HTML5?) Edge.
Adobe Edge Animate за анимация може да постигне сложни анимации чрез редактиране на времевата линия и създаване на оригинали (наречени символи в Edge Animate).
Edge Reflow е дизайнът на отзивчивия уеб. Някои хора го превеждат като отзивчив, което всъщност е адаптивно.
Горните два софтуера са основно ориентирани към браузъра на ядрото на Webkit, затова е необходимо да се вгради Webkit ядро, за да се осигури интерфейс за предварителен преглед и редактиране на WYSIWYG. Всички използваха CEF. (Разликата между CEF и чист Webkit ще бъде въведена по-късно)
Въпрос+
Според концепцията за уеб приложение, Q+ предоставя работеща среда за уеб страници (просто казано: кутия с клиента и някои налични API-та), и поддържа IE и Webkit ядра.
За студентите по уеб разработка ядрото Webkit (всъщност CEF), което въведохме, не трябва да взема предвид проблемите със съвместимостта на версиите на IE, което не само подобрява ефективността на разработката, но и ни позволява да се възползваме от някои нови HTML5 функции. По това време пазарът на приложения, центърът за съобщения, тапети, музикални джаджи и други приложения на Q+ бяха разработени въз основа на ядрото Webkit.
Може да се каже, че проектът Q+ е направил повече опити за CEF, като например:
Разработеният музикален уиджет използва HTML5 аудио таг;
Някои приложения използват офлайн функционалността на HTML5 (т.е. с манифестен файл), но разбира се има някои обрати и натрупах много опит.
Пакетирани Webkit инструменти за разработка.
Персонализирани протоколи: Например, достъпът до qplus:// протоколи може да бъде пренасочен към специална папка.
Извънекранно рендериране (OSR): Чрез използване на извънекранно рендериране + Windows Layered Window се създава неправилен прозорец на уеб страницата (каква е формата на непрозрачната област на уеб страницата, каква е формата на прозореца)
Защо да се вгражда CEF за клиенти? С толкова много примери, този въпрос е много по-лесен за задаване:
Използва се за показване на уеб страници и използване на различни уеб услуги;
Използвайте уеб страници за UI;
Използвайте HTML5 функции, като аудио, платно и др., включително функции на CSS3.
Извънекранно рендериране (OSR):
Т.нар. OSR е да се рендерира цялата страница върху растерна карта без да се създава реален прозорец. Разбира се, не само рендериране, но и серия от API-та за обработка на събития с мишка, клавиатура, събития за метод на въвеждане и т.н.
Тази функция е особено полезна, когато реални прозорци не могат да се използват, например при слоеви прозорци или при рендериране на текстури в игри.
С помощта на OSR функции могат да се създадат някои интересни ефекти, като например:
AlloyTeam създаде Webtop, който използва OSR за създаване на браузър, плейър и т.н.
Има проект Awesomium, който също поддържа OSR, а вече има гейм проекти, които използват Awesomium за рендериране на уеб страници в игри. (Гледайки изходния файл на Awesomium, той би трябвало да е подобен на реализацията на CEF, всичко е пакет от Chromium, и CEF, който Awesomium може да направи, също трябва да се направи)
В свободното си време направих демо и използвах CEF за рендериране на уеб страници в OpenGL Texture, което може да се разглежда като малък опит да се приложи CEF към играта, както е показано на фигурата:
Демо в браузъра в играта
Защо CEF? IE
IE е вграден браузърен контрол от дълго време и по-точно, сега имаме много алтернативи на IE.
CEF срещу IE:
Съвместимост:
IE: Ядрото варира от 6 до 10 версии в зависимост от операционната система, а натоварването на уеб разработката, за да бъде съвместимо с тези версии, не може да се подценява.
CEF: Използва ядрото Webkit и от гледна точка на характеристиките, CEF версията може да съответства на номер на версия на Chrome, така че уеб разработката да има ясен набор от функции, елиминирайки натоварването по съвместимост.
Стандарт и нови функции на HTML5:
IE: Разбира се, по-старите версии на IE не поддържат най-новите HTML функции и стандарти.
CEF: Няма съмнение, че Webkit и Chrome са в авангарда на поддръжката на нови функции.
Отворен код и кросплатформен:
IE: Не е с отворен код, ограничено до платформата Windows
CEF: Отворен код, Webkit и Chromium, използвани са всички с отворен код, отвореният код означава повече персонализируеми възможности; И обхваща Windows, Mac и Linux.
Извънекранно рендериране (OSR):
IE: Можете да постигнете визуализация извън екрана чрез някои трикове, но натоварването не е малко и не е официално поддържано.
CEF: Има специален режим за рендериране извън екрана и съответния API.
Проникване:
IE: Всички потребители на Windows имат IE, което е предимството на IE (но някои потребители имат неправилни настройки на IE, което води до неизползваемост, като например jscrip{filtering}t.dll не е регистриран, което води до невъзможност за използване на Javascrip{filter}t)
CEF: Трябва сами да го инсталирате и опаковате
Webkit
Защо умишлено да сравнявате CEF и Webkit?
Наскоро прочетох добра статия за това какво е Webkit, какво не е и защо има толкова много портове за Webkit: "Какво разработчиците трябва да знаят за WebKit"
Ето приблизително обобщение:
Webkit е механизъм за разбор и подреждане на уеб страници, който се споделя от всички браузъри, базирани на Webkit. Стандартният порт на Webkit е Safari, който е версията, изтеглена от компилацията на изходния код на Webkit. Има и други Webkit портове, включително Chromium, QtWebkit и др., които имат различни реализации в 2D графика, GPU ускорение, Javascrip енджин, аудио/видео декодиране и др.
CEF срещу webkit (всъщност Chromium срещу Webkit)
V8 енджин, 2D рендерирането на skia, GPU-ускорената имплементация на Chromium и др., с помощта на отличната имплементация на Chromium, CEF също се превърна в отличен порт за Webkit.
Недостатъци на CEF: Бъдете любезни, CEF също има свои недостатъци и ограничения, и не можете просто да ги споменавате – тук ще ви представя недостатъците и недостатъците на CEF:
Обем:
В последната версия на CEF, сумата на всички DLL-и трябва да е близо до 40M, а се оценява, че след компресия ще бъде 10M+. Ако самият ви проект не е голям и не може да го приеме, тогава CEF не е за вас.
Разбира се, за игри, които вече се изчисляват от G, този обем би трябвало да е приемлив.
За обикновените клиентски проекти зависи дали самият проект трябва да използва функциите, реализирани от CEF, и дали си струва да се увеличи толкова много инсталационният пакет на продукта. Разбира се, има и някои компромиси при имплементацията, като например изтегляне след инсталация (лично аз не мисля, че това е смислено, все пак потребителите, които инсталират пакети, могат да изберат да изтеглят софтуер за ускоряване)
Кеш:
Кешът на Chrome е проектиран да има само един процес за четене и запис, и същото важи и за CEF.
За клиенти, които трябва да се отварят многократно, може да се специфицира само различна кеш папка за всяка инстанция на процес. Въпреки това, това несъмнено увеличава използването на твърдия диск и също така кара някои файлове, които първоначално са били кеширани, да се изтеглят многократно (например, процес А кешира jQuery.js), процес Б трябва да поиска и кешира веднъж, защото кешира различни директории jQueyr.js
OSR:
OSR в момента не е като реален прозорец, който може да се ускори с GPU, а OSR може да се рендерира само чрез софтуер, което означава, че някои CSS 3D ефекти не могат да се поддържат.
Въпреки това, характеристиките на OSR все още се подобряват и лично аз смятам, че си заслужава да се очаква с нетърпение.
Какво да споделим по-късно След като написах толкова много, може да се разглежда като въведение в CEF, а в бъдеще ще напиша някои сухи материали, а именно как да се използва CEF, включително:
Събиране, компилация, вграждане на CEF код, обработка на API извиквания на страници и клиенти, OSR рендериране извън екрана, кеширане, персонализирани протоколи, CEF1 и CEF3 и др.
Е, това е всичко за днес.
|