Τι είναι ο ΜΣΕ; Το CEF είναι μια συντομογραφία του Chromium Embedded Framework, το οποίο είναι ένα στοιχείο ελέγχου προγράμματος περιήγησης ιστού ανοιχτού κώδικα που βασίζεται στο έργο Google Chromium, υποστηρίζοντας πλατφόρμες Windows, Linux και Max. Εκτός από την παροχή διεπαφών C/C++, υπάρχουν επίσης θύρες για άλλες γλώσσες.
Επειδή βασίζεται στο Chromium, το CEF υποστηρίζει τις δυνατότητες HTML5 που εφαρμόζονται στο Webkit & Chrome και είναι σχετικά κοντά στο Chrome όσον αφορά την απόδοση.
Το CEF παρέχει επίσης τις ακόλουθες δυνατότητες: προσαρμοσμένες προσθήκες, προσαρμοσμένα πρωτόκολλα, προσαρμοσμένα αντικείμενα και επεκτάσεις Javascrip. Ελεγχόμενη φόρτωση πόρων, πλοήγηση, μενού περιβάλλοντος κ.λπ.
Ποιος χρησιμοποιεί τον ΜΣΕ Ας χρησιμοποιήσουμε μερικά πρακτικά παραδείγματα για να δείξουμε τι έχουν κάνει όλοι με το CEF:
Διάφορα προγράμματα περιήγησης
Τα πρώτα προγράμματα περιήγησης διπλού πυρήνα (IE + Webkit), ορισμένα χρησιμοποιούσαν το CEF ως στοιχείο ελέγχου του προγράμματος περιήγησης πυρήνα Webkit.
Ωστόσο, για τα προγράμματα περιήγησης, η επέκταση απευθείας στο Chrome είναι στην πραγματικότητα ο βασιλιάς και όλοι το κάνουν τώρα (διάφορα γρήγορα προγράμματα περιήγησης).
Evernote Client (στα 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;) Άκρη.
Το Adobe Edge Animate, για κινούμενες εικόνες, μπορεί να επιτύχει σύνθετες κινούμενες εικόνες με την επεξεργασία της λωρίδας χρόνου και τη δημιουργία πρωτοτύπων (που ονομάζονται σύμβολα στο Edge Animate).
Το Edge Reflow είναι το Design the responsive web. Μερικοί άνθρωποι το μεταφράζουν ως ανταποκρινόμενο, το οποίο είναι στην πραγματικότητα προσαρμοστικό.
Τα δύο παραπάνω λογισμικά είναι βασικά προσανατολισμένα στο πρόγραμμα περιήγησης του πυρήνα του Webkit, επομένως είναι απαραίτητο να ενσωματώσετε έναν πυρήνα Webkit για να παρέχετε μια διεπαφή προεπισκόπησης και επεξεργασίας WYSIWYG. Όλοι χρησιμοποίησαν το CEF. (Η διαφορά μεταξύ CEF και καθαρού Webkit θα παρουσιαστεί αργότερα)
Ε+
Σύμφωνα με την έννοια του Web App, το Q+ παρέχει ένα περιβάλλον λειτουργίας για ιστοσελίδες (με απλά λόγια: ένα πλαίσιο του πελάτη και ορισμένα διαθέσιμα API) και υποστηρίζει πυρήνες IE και Webkit.
Για τους φοιτητές ανάπτυξης ιστού, ο πυρήνας Webkit (στην πραγματικότητα CEF) που παρουσιάσαμε δεν χρειάζεται να λάβει υπόψη τα ζητήματα συμβατότητας εκδόσεων του IE, κάτι που όχι μόνο βελτιώνει την αποτελεσματικότητα της ανάπτυξης, αλλά μας επιτρέπει επίσης να εκμεταλλευτούμε ορισμένες νέες δυνατότητες HTML5. Εκείνη την εποχή, η αγορά εφαρμογών του Q+, το κέντρο μηνυμάτων, οι ταπετσαρίες, τα γραφικά στοιχεία μουσικής και άλλες εφαρμογές αναπτύχθηκαν όλα με βάση τον πυρήνα του Webkit.
Το έργο Q+ μπορεί να ειπωθεί ότι έχει κάνει περισσότερες προσπάθειες στο CEF, όπως:
Το αναπτυγμένο γραφικό στοιχείο μουσικής χρησιμοποιεί την ετικέτα ήχου HTML5.
Ορισμένες εφαρμογές χρησιμοποιούν τη λειτουργία εκτός σύνδεσης της HTML5 (δηλαδή, με ένα αρχείο δήλωσης), αλλά φυσικά υπάρχουν κάποιες ανατροπές και έχω αποκτήσει μεγάλη εμπειρία.
Συσκευασμένα εργαλεία προγραμματισμού Webkit.
Προσαρμοσμένα πρωτόκολλα: Για παράδειγμα, η πρόσβαση σε qplus:// πρωτόκολλα μπορεί να ανακατευθυνθεί σε έναν ειδικό φάκελο.
Απόδοση εκτός οθόνης (OSR): Χρησιμοποιώντας απόδοση εκτός οθόνης + Windows Layered Window, δημιουργείται ένα ακανόνιστο παράθυρο ιστοσελίδας (ποιο είναι το σχήμα της αδιαφανούς περιοχής της ιστοσελίδας, ποιο είναι το σχήμα του παραθύρου)
Γιατί να ενσωματώσετε το CEF για πελάτες; Με τόσα πολλά παραδείγματα, αυτή η ερώτηση είναι πολύ πιο εύκολο να ειπωθεί:
Χρησιμοποιείται για την εμφάνιση ιστοσελίδων και τη χρήση διαφόρων υπηρεσιών Web.
Χρησιμοποιήστε ιστοσελίδες για να κάνετε διεπαφή χρήστη.
Χρησιμοποιήστε λειτουργίες HTML5, όπως ήχο, καμβά κ.λπ., συμπεριλαμβανομένων των λειτουργιών CSS3.
Απόδοση εκτός οθόνης (OSR):
Το λεγόμενο OSR είναι η απόδοση ολόκληρης της σελίδας σε ένα bitmap χωρίς τη δημιουργία πραγματικού παραθύρου. Φυσικά, όχι μόνο η απόδοση, αλλά και μια σειρά από API για το χειρισμό του ποντικιού, συμβάντων πληκτρολογίου, συμβάντων μεθόδου εισαγωγής κ.λπ.
Αυτή η δυνατότητα είναι ιδιαίτερα χρήσιμη όταν δεν είναι δυνατή η χρήση πραγματικών παραθύρων, όπως σε πολυεπίπεδα παράθυρα ή όταν αποδίδονται σε υφές σε παιχνίδια.
Χρησιμοποιώντας τις δυνατότητες OSR, μπορούν να γίνουν μερικά ενδιαφέροντα εφέ, όπως:
Η AlloyTeam έφτιαξε το Webtop, το οποίο χρησιμοποιεί OSR για να δημιουργήσει πρόγραμμα περιήγησης, πρόγραμμα αναπαραγωγής κ.λπ.
Υπάρχει ένα έργο Awesomium που υποστηρίζει επίσης OSR και υπάρχουν ήδη έργα παιχνιδιών που χρησιμοποιούν το Awesomium για την απόδοση ιστοσελίδων σε παιχνίδια. (Κοιτάζοντας το αρχείο εξόδου του Awesomium, θα πρέπει να είναι παρόμοιο με την εφαρμογή του CEF, είναι όλα ένα πακέτο Chromium και το CEF που μπορεί να κάνει το Awesomium θα πρέπει επίσης να γίνει)
Στον ελεύθερο χρόνο μου, έκανα ένα demo και χρησιμοποίησα το CEF για να αποδώσω ιστοσελίδες στο OpenGL Texture, κάτι που μπορεί να θεωρηθεί ως μια μικρή προσπάθεια εφαρμογής του CEF στο παιχνίδι, όπως φαίνεται στο σχήμα:
Επίδειξη προγράμματος περιήγησης εντός παιχνιδιού
Γιατί CEF; ΙΕ
Ο IE είναι ένας ενσωματωμένος έλεγχος προγράμματος περιήγησης εδώ και πολύ καιρό, και για να είμαστε ακριβείς, τώρα έχουμε πολλές εναλλακτικές λύσεις για τον IE.
CEF εναντίον IE:
Συμβατότητα:
IE: Ο πυρήνας κυμαίνεται από 6 έως 10 εκδόσεις ανάλογα με το λειτουργικό σύστημα και ο φόρτος εργασίας της ανάπτυξης ιστού για να είναι συμβατός με αυτές τις εκδόσεις δεν μπορεί να υποτιμηθεί.
CEF: Χρησιμοποιεί τον πυρήνα του Webkit και από την άποψη των χαρακτηριστικών, μια έκδοση CEF μπορεί να αντιστοιχεί σε έναν αριθμό έκδοσης του Chrome, έτσι ώστε η ανάπτυξη ιστού να έχει ένα σαφές σύνολο χαρακτηριστικών, εξαλείφοντας τον φόρτο εργασίας της εξέτασης της συμβατότητας.
HTML5 Standard & Νέες δυνατότητες:
IE: Φυσικά, οι παλαιότερες εκδόσεις του IE δεν υποστηρίζουν τις πιο πρόσφατες δυνατότητες και πρότυπα HTML.
CEF: Δεν υπάρχει αμφιβολία ότι το Webkit και το Chrome βρίσκονται στην πρώτη γραμμή της υποστήριξης νέων λειτουργιών.
Ανοιχτού κώδικα & πολλαπλών πλατφορμών:
IE: Δεν είναι ανοιχτού κώδικα, περιορίζεται στην πλατφόρμα των Windows
CEF: Ο ανοιχτός κώδικας, το Webkit και το Chromium που χρησιμοποιούνται είναι όλα ανοιχτού κώδικα, ανοιχτός κώδικας σημαίνει περισσότερες προσαρμόσιμες δυνατότητες. Και εκτείνεται σε Windows, Mac και Linux.
Απόδοση εκτός οθόνης (OSR):
IE: Μπορείτε να επιτύχετε απόδοση εκτός οθόνης μέσω ορισμένων hacks, αλλά ο φόρτος εργασίας δεν είναι μικρός και δεν υποστηρίζεται επίσημα.
CEF: Υπάρχει μια αποκλειστική λειτουργία απόδοσης εκτός οθόνης και το αντίστοιχο API.
Διείσδυση:
IE: Όλοι οι χρήστες των Windows έχουν IE, το οποίο είναι το πλεονέκτημα του IE (αλλά ορισμένοι χρήστες έχουν λανθασμένες ρυθμίσεις IE, οι οποίες θα οδηγήσουν σε αχρηστία, όπως το jscrip{filtering}t.dll δεν έχουν καταχωρηθεί, με αποτέλεσμα την αδυναμία χρήσης του Javascrip{filter}t)
CEF: Πρέπει να το εγκαταστήσετε και να το συσκευάσετε μόνοι σας
Διαδικτυακό κιτ
Γιατί να συγκρίνουμε σκόπιμα το 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 θα πρέπει να είναι κοντά στα 40 εκατομμύρια και εκτιμάται ότι θα είναι 10 εκατομμύρια+ μετά τη συμπίεση. Εάν το ίδιο το έργο σας δεν είναι μεγάλο σε μέγεθος και δεν μπορεί να το λάβει, τότε το CEF δεν είναι για εσάς.
Φυσικά, για παιχνίδια που υπολογίζονται πλέον από το G, αυτός ο όγκος θα πρέπει να εξακολουθεί να είναι αποδεκτός.
Για συνηθισμένα έργα πελατών, εξαρτάται από το εάν το ίδιο το έργο χρειάζεται να χρησιμοποιήσει τις δυνατότητες που υλοποιούνται από το CEF και αν αξίζει να αυξηθεί τόσο πολύ το πακέτο εγκατάστασης του προϊόντος. Φυσικά, υπάρχουν και ορισμένοι συμβιβασμοί υλοποίησης εδώ, όπως η λήψη μετά την εγκατάσταση (προσωπικά δεν νομίζω ότι αυτό έχει νόημα, άλλωστε οι χρήστες που εγκαθιστούν πακέτα μπορούν επίσης να επιλέξουν να κατεβάσουν λογισμικό για να επιταχύνουν)
Κρύπτη:
Η προσωρινή μνήμη του Chrome έχει σχεδιαστεί για να έχει μόνο μία διαδικασία ανάγνωσης και εγγραφής, και το ίδιο ισχύει και για το CEF.
Για υπολογιστές-πελάτες που πρέπει να ανοίξουν πολλές φορές, μπορεί να καθοριστεί μόνο ένας διαφορετικός φάκελος cache για κάθε παρουσία διεργασίας. Ωστόσο, αυτό αναμφίβολα αυξάνει τη χρήση του σκληρού δίσκου και προκαλεί επίσης τη λήψη ορισμένων αρχείων που είχαν αρχικά αποθηκευτεί προσωρινά πολλές φορές (για παράδειγμα, η διαδικασία Α αποθηκεύει προσωρινά jQuery.js, η διαδικασία Β πρέπει να ζητήσει και να αποθηκεύσει προσωρινά μία φορά επειδή αποθηκεύει προσωρινά διαφορετικούς καταλόγους jQueyr.js
OSR:
Το OSR προς το παρόν δεν είναι σαν τη λειτουργία πραγματικού παραθύρου, η οποία μπορεί να επιταχυνθεί από την GPU και το OSR μπορεί να αποδοθεί μόνο με χρήση λογισμικού, πράγμα που σημαίνει ότι ορισμένα εφέ CSS 3D δεν μπορούν να υποστηριχθούν.
Ωστόσο, τα χαρακτηριστικά του OSR εξακολουθούν να βελτιώνονται και προσωπικά πιστεύω ότι αξίζει ακόμα να το περιμένουμε.
Τι να μοιραστείτε αργότερα Αφού έγραψα τόσα πολλά, μπορεί να θεωρηθεί ως εισαγωγή στο CEF και θα γράψω μερικά ξηρά προϊόντα στο μέλλον, δηλαδή πώς να χρησιμοποιήσω το CEF, όπως:
Απόκτηση κώδικα CEF, μεταγλώττιση, ενσωμάτωση, επεξεργασία κλήσεων API σελίδων και πελατών, απόδοση OSR εκτός οθόνης, προσωρινή αποθήκευση, προσαρμοσμένα πρωτόκολλα, CEF1 & CEF3 κ.λπ.
Λοιπόν, αυτά για σήμερα.
|