
Το Electron και το Chromium Embedded Framework (CEF) είναι δύο καθιερωμένες τεχνολογίες για την ενσωμάτωση του Chromium σε εφαρμογές επιφάνειας εργασίας. Και οι δύο επιτρέπουν στους προγραμματιστές να δημιουργούν λογισμικό που εμφανίζει σύγχρονους ιστοτόπους και διεπαφές ιστού σε macOS, Windows και Linux. Ωστόσο, εξυπηρετούν θεμελιωδώς διαφορετικούς σκοπούς.
Το Electron είναι ένα ολοκληρωμένο πλαίσιο ανάπτυξης εφαρμογών επιφάνειας εργασίας που συνδυάζει το Chromium, το Node.js και εγγενή API του λειτουργικού συστήματος. Οι προγραμματιστές μπορούν να δημιουργούν ολόκληρες εφαρμογές χρησιμοποιώντας JavaScript, TypeScript, HTML και CSS, χωρίς να χρειάζονται εκτεταμένη εμπειρία στον εγγενή προγραμματισμό. Το CEF, από την άλλη πλευρά, είναι ένα πλαίσιο για την ενσωμάτωση του Chromium σε υπάρχουσες ή νέες εφαρμογές, οι οποίες συνήθως είναι γραμμένες σε C++ ή άλλες γλώσσες εγγενούς ανάπτυξης.
Και οι δύο τεχνολογίες χρησιμοποιούνται ευρέως σε λογισμικό παραγωγής. Το Electron αποτελεί τη βάση εφαρμογών όπως το Visual Studio Code, το Slack, το Discord και το Notion, ενώ το CEF χρησιμοποιείται σε προϊόντα όπως το Spotify, το Steam και το OBS Studio. Στη WebCatalog, έχουμε επιλέξει το Electron για να δημιουργούμε τις εφαρμογές επιφάνειας εργασίας μας για πολλαπλές πλατφόρμες.
Ποιες είναι λοιπόν οι διαφορές και πότε έχει νόημα να χρησιμοποιήσετε το ένα αντί για το άλλο;
Electron και CEF με μια ματιά
Παρότι το Electron και το CEF χρησιμοποιούν και τα δύο το Chromium, διαφέρουν σημαντικά ως προς την αρχιτεκτονική, την εμπειρία ανάπτυξης και τις εφαρμογές για τις οποίες προορίζονται.
| Χαρακτηριστικό | Electron | Chromium Embedded Framework (CEF) |
|---|---|---|
| Πρώτη παρουσίαση | 2013 | 2008 |
| Κύριος σκοπός | Δημιουργία ολοκληρωμένων εφαρμογών επιφάνειας εργασίας | Ενσωμάτωση του Chromium σε άλλες εφαρμογές |
| Μηχανή προγράμματος περιήγησης | Chromium | Chromium |
| Κύριες γλώσσες | JavaScript, TypeScript | C, C++, με συνδέσεις για άλλες γλώσσες από τρίτους |
| Περιλαμβάνει Node.js | Ναι | Όχι |
| Εγγενής ενσωμάτωση | API του Electron και εγγενή πρόσθετα του Node.js | Άμεση ενσωμάτωση με εγγενή κώδικα |
| Δομή εφαρμογής | Κύρια διεργασία και διεργασίες απόδοσης | Εφαρμογή υποδοχής με υποδιεργασίες του Chromium |
| Απόδοση εκτός οθόνης | Εφικτή μέσω προσαρμοσμένων λύσεων | Ενσωματωμένη υποστήριξη μέσω API |
| Μέγεθος εφαρμογής | Γενικά μεγάλο | Εξαρτάται από την ενσωμάτωση, αλλά το Chromium έχει σημαντικό μέγεθος |
| Επιδόσεις | Εξαρτώνται από την εφαρμογή | Εξαρτώνται από την εφαρμογή και την ενσωμάτωση |
| Υποστήριξη πολλαπλών πλατφορμών | macOS, Windows, Linux | macOS, Windows, Linux |
| Οικοσύστημα δημιουργίας πακέτων | Electron Forge, electron-builder | Συνήθως το διαχειρίζεται η εφαρμογή υποδοχής |
| Καταλληλότερο για | Εφαρμογές επιφάνειας εργασίας βασισμένες σε JavaScript | Εγγενείς εφαρμογές που απαιτούν ενσωματωμένο περιεχόμενο ιστού |
Η σημαντικότερη διαφορά είναι ότι το Electron παρέχει ένα πλαίσιο ανάπτυξης εφαρμογών, ενώ το CEF παρέχει ένα πλαίσιο ενσωμάτωσης προγράμματος περιήγησης. Δεν αποτελούν απαραίτητα άμεσα υποκατάστατα, επειδή λειτουργούν σε διαφορετικά επίπεδα αφαίρεσης.
Αρχιτεκτονική: Ολοκληρωμένο πλαίσιο έναντι ενσωματωμένου προγράμματος περιήγησης
Το Electron συνδυάζει το Chromium και το Node.js σε ένα ενιαίο περιβάλλον εκτέλεσης εφαρμογών. Οι προγραμματιστές δημιουργούν μια κύρια διεργασία που διαχειρίζεται τα παράθυρα της εφαρμογής, τα συμβάντα του κύκλου ζωής και τις εγγενείς λειτουργίες, ενώ οι διεργασίες απόδοσης χειρίζονται τη διεπαφή που βασίζεται σε τεχνολογίες ιστού.
Αυτή η αρχιτεκτονική επιτρέπει στους προγραμματιστές να γράφουν το μεγαλύτερο μέρος των εφαρμογών τους χρησιμοποιώντας οικεία εργαλεία JavaScript και TypeScript. Το Electron παρέχει API για τη δημιουργία παραθύρων, τη διαχείριση συνεδριών περιήγησης, τον χειρισμό μενού, την εμφάνιση ειδοποιήσεων, την πρόσβαση σε διαλόγους συστήματος και την ενσωμάτωση με το λειτουργικό σύστημα.
Το CEF ακολουθεί διαφορετική προσέγγιση. Αντί να παρέχει ένα ολοκληρωμένο πλαίσιο ανάπτυξης εφαρμογών επιφάνειας εργασίας, επιτρέπει στους προγραμματιστές να ενσωματώνουν το Chromium σε μια εφαρμογή που δημιουργούν και ελέγχουν οι ίδιοι.
Για παράδειγμα, ένας προγραμματιστής που δημιουργεί μια εγγενή εφαρμογή C++ μπορεί να χρησιμοποιήσει το CEF για να εμφανίζει περιεχόμενο ιστού μέσα σε ένα υπάρχον παράθυρο της εφαρμογής. Η περιβάλλουσα διεπαφή, ο κύκλος ζωής της εφαρμογής, οι υπηρεσίες παρασκηνίου και οι υπόλοιπες εγγενείς λειτουργίες παραμένουν υπό τον έλεγχο του προγραμματιστή.
Το CEF παρέχει API για τη διαχείριση στιγμιοτύπων προγράμματος περιήγησης, την πλοήγηση, τη φόρτωση πόρων, την εκτέλεση JavaScript και την επικοινωνία μεταξύ του προγράμματος περιήγησης και της εγγενούς εφαρμογής. Χρησιμοποιεί επίσης την αρχιτεκτονική πολλαπλών διεργασιών του Chromium, με ξεχωριστές διεργασίες για την απόδοση και άλλες λειτουργίες του προγράμματος περιήγησης.
Αυτή η διαφορά επηρεάζει τον τρόπο με τον οποίο οι προγραμματιστές δομούν τις εφαρμογές τους. Με το Electron, η εφαρμογή δημιουργείται γενικά γύρω από το Chromium και το Node.js. Με το CEF, το Chromium είναι συνήθως ένα στοιχείο μέσα σε μια μεγαλύτερη εφαρμογή.
Το CEF μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία εφαρμογών των οποίων οι διεπαφές βασίζονται κυρίως σε τεχνολογίες ιστού, αλλά οι προγραμματιστές πρέπει να υλοποιήσουν μόνοι τους μεγαλύτερο μέρος της υπόλοιπης υποδομής της εφαρμογής.
Μια ενδιαφέρουσα ιστορική λεπτομέρεια είναι ότι οι πρώτες εκδόσεις του Electron και του NW.js χρησιμοποιούσαν το CEF. Το Electron τελικά πέρασε σε πιο άμεση ενσωμάτωση με το Chromium, επειδή το επίπεδο αφαίρεσης του CEF δυσκόλευε την υλοποίηση ορισμένων λειτουργιών, ιδιαίτερα τη βαθιά ενσωμάτωση του Node.js.
Για προγραμματιστές που θέλουν ένα ολοκληρωμένο πλαίσιο για τη δημιουργία εφαρμογών επιφάνειας εργασίας με τεχνολογίες ιστού, το Electron προσφέρει γενικά μια πιο απλή αφετηρία. Για προγραμματιστές που έχουν ήδη μια εγγενή εφαρμογή και θέλουν να προσθέσουν λειτουργίες ιστού, το CEF μπορεί να είναι η πιο φυσική επιλογή.
Εμπειρία ανάπτυξης: JavaScript έναντι εγγενούς ανάπτυξης
Ένα από τα μεγαλύτερα πλεονεκτήματα του Electron είναι η ευκολία πρόσβασης. Οι προγραμματιστές που είναι εξοικειωμένοι με τη σύγχρονη ανάπτυξη ιστού μπορούν να αξιοποιήσουν τις υπάρχουσες δεξιότητές τους για να δημιουργήσουν εφαρμογές επιφάνειας εργασίας, χωρίς να μάθουν C++ ή πλαίσια διεπαφής χρήστη ειδικά για κάθε πλατφόρμα.
Η ενσωμάτωση του Electron με το Node.js παρέχει πρόσβαση σε ένα μεγάλο οικοσύστημα πακέτων για λειτουργίες συστήματος αρχείων, δικτύωση, βάσεις δεδομένων, διεργασίες παρασκηνίου και άλλες λειτουργίες. Δημοφιλείς τεχνολογίες διεπαφής χρήστη, όπως το React, το Vue, το Svelte και το Angular, μπορούν να χρησιμοποιηθούν χωρίς σημαντικές αρχιτεκτονικές αλλαγές.
Το CEF έχει σχεδιαστεί κυρίως γύρω από API σε C και C++. Παρότι υπάρχουν συνδέσεις τρίτων για γλώσσες όπως η C#, η Java, η Python και η Delphi, οι προγραμματιστές εξακολουθούν να χρειάζεται να κατανοούν την αρχιτεκτονική της εγγενούς εφαρμογής και τις απαιτήσεις του CEF σχετικά με τις διεργασίες, τα νήματα και τον κύκλο ζωής.
Για μια ομάδα που συντηρεί ήδη μια εγγενή εφαρμογή, αυτό μπορεί να είναι πλεονέκτημα αντί για μειονέκτημα. Το CEF επιτρέπει στους προγραμματιστές να εισάγουν μια σύγχρονη διεπαφή ιστού χωρίς να ξαναγράψουν τον υπάρχοντα εγγενή κώδικα ή να υιοθετήσουν ένα εντελώς νέο πλαίσιο ανάπτυξης εφαρμογών.
Για μια ομάδα που επικεντρώνεται στη JavaScript και ξεκινά μια νέα εφαρμογή επιφάνειας εργασίας, ωστόσο, το CEF απαιτεί γενικά περισσότερη αρχική διαμόρφωση και εργασία εγγενούς ενσωμάτωσης.
Η διαφορά επεκτείνεται και στα εργαλεία. Το Electron επωφελείται από καθιερωμένα εργαλεία όπως το Electron Forge και το electron-builder, τα οποία απλοποιούν τη δημιουργία πακέτων, την υπογραφή κώδικα, τη διανομή εφαρμογών και τις ενημερώσεις. Το CEF παρέχει διανομές εκτελέσιμων αρχείων και παραδείγματα, αλλά οι προγραμματιστές είναι συνήθως υπεύθυνοι για την ενσωμάτωση του πλαισίου στα δικά τους συστήματα μεταγλώττισης και διάθεσης.
Αυτό δεν σημαίνει ότι το CEF έχει λιγότερες δυνατότητες. Απλώς αντανακλά τον σκοπό του ως ενσωματώσιμο στοιχείο και όχι ως ολοκληρωμένη πλατφόρμα ανάπτυξης εφαρμογών.
Επιδόσεις, χρήση μνήμης και μέγεθος εφαρμογής
Επειδή τόσο το Electron όσο και το CEF χρησιμοποιούν το Chromium, κανένα από τα δύο δεν εξαλείφει αυτόματα την πρόσθετη κατανάλωση πόρων που συνδέεται με την εκτέλεση μιας σύγχρονης μηχανής προγράμματος περιήγησης.
Και οι δύο τεχνολογίες μπορεί να χρησιμοποιούν πολλαπλές διεργασίες για την απόδοση, την επιτάχυνση GPU, τη δικτύωση και άλλες λειτουργίες του προγράμματος περιήγησης. Η κατανάλωση μνήμης και η χρήση CPU εξαρτώνται σε μεγάλο βαθμό από το περιεχόμενο που εμφανίζεται, τον αριθμό των ενεργών στιγμιοτύπων προγράμματος περιήγησης και τον τρόπο με τον οποίο η εφαρμογή διαχειρίζεται τους πόρους της.
Το CEF μπορεί να προσφέρει μεγαλύτερη ευελιξία όταν ενσωματώνεται σε μια υπάρχουσα εγγενή εφαρμογή. Οι προγραμματιστές μπορούν να χρησιμοποιούν το Chromium μόνο για τα τμήματα της διεπαφής που απαιτούν τεχνολογίες ιστού, ενώ υλοποιούν άλλες λειτουργίες απευθείας σε εγγενή κώδικα.
Για παράδειγμα, μια εφαρμογή γραφικών μπορεί να χρησιμοποιεί το CEF για ένα πλαίσιο ρυθμίσεων ή μια ενσωματωμένη διεπαφή ιστού, διατηρώντας παράλληλα τη μηχανή απόδοσης, την επεξεργασία εγγράφων και άλλες λειτουργίες με υψηλές απαιτήσεις επιδόσεων σε εγγενή κώδικα.
Οι εφαρμογές Electron μπορούν επίσης να εκτελούν εγγενή κώδικα μέσω πρόσθετων του Node.js, εξωτερικών διεργασιών ή εγγενών μονάδων. Ωστόσο, η αρχιτεκτονική του Electron προσανατολίζεται γενικά στη δημιουργία της ίδιας της εφαρμογής με τεχνολογίες ιστού.
Μια ιδιαίτερα χρήσιμη δυνατότητα του CEF είναι η απόδοση εκτός οθόνης. Αντί να εμφανίζει το περιεχόμενο ιστού σε ένα παραδοσιακό παράθυρο προγράμματος περιήγησης, το CEF μπορεί να αποδίδει το περιεχόμενο σε προσωρινές μνήμες, τις οποίες επεξεργάζεται και εμφανίζει η ίδια η εφαρμογή υποδοχής. Αυτό είναι πολύτιμο για εφαρμογές όπως μηχανές παιχνιδιών, λογισμικό ζωντανής μετάδοσης και εργαλεία με προσαρμοσμένα συστήματα απόδοσης.
Το Electron μπορεί να υποστηρίξει εξειδικευμένες ροές εργασίας απόδοσης μέσω πρόσθετων ενσωματώσεων, αλλά το CEF παρέχει την απόδοση εκτός οθόνης ως καθιερωμένο μέρος του API ενσωμάτωσής του.
Για τους προγραμματιστές που αξιολογούν τις επιδόσεις, οι πιο χρήσιμες μετρήσεις περιλαμβάνουν:
- Χρόνος εκκίνησης: Πόσο γρήγορα η εφαρμογή γίνεται έτοιμη για χρήση.
- Χρήση μνήμης: Κατανάλωση πόρων με αντιπροσωπευτικό περιεχόμενο προγράμματος περιήγησης και εγγενείς λειτουργίες.
- Χρήση CPU: Επιδόσεις κατά την απόδοση, την πλοήγηση και τις λειτουργίες παρασκηνίου.
- Μέγεθος εφαρμογής: Μέγεθος λήψης και χρήση δίσκου μετά την εγκατάσταση.
- Απαιτήσεις απόδοσης: Αν η εφαρμογή χρειάζεται συνηθισμένα παράθυρα ή προσαρμοσμένη απόδοση εκτός οθόνης.
Είναι επίσης σημαντικό να διακρίνουμε το CEF από πλαίσια που χρησιμοποιούν τις προβολές ιστού του συστήματος. Το CEF περιλαμβάνει το Chromium αντί να βασίζεται στη μηχανή προγράμματος περιήγησης που είναι εγκατεστημένη από το λειτουργικό σύστημα. Ως αποτέλεσμα, η μετάβαση από το Electron στο CEF δεν οδηγεί αυτόματα σε μια δραματικά μικρότερη εφαρμογή.
Οι προγραμματιστές που ενδιαφέρονται κυρίως για μικρότερα πακέτα εφαρμογών μπορούν να εξετάσουν εναλλακτικές λύσεις όπως το Tauri, το οποίο χρησιμοποιεί προβολές ιστού που παρέχονται από το σύστημα.
Ούτε το Electron ούτε το CEF θα πρέπει να θεωρείται κατηγορηματικά ταχύτερο χωρίς συγκριτικές μετρήσεις σε μια πραγματική υλοποίηση.
Ασφάλεια και ενημερώσεις προγράμματος περιήγησης
Τόσο το Electron όσο και το CEF βασίζονται στην αρχιτεκτονική προγράμματος περιήγησης και στους μηχανισμούς ασφαλείας του Chromium, αλλά οι προγραμματιστές είναι υπεύθυνοι για τη σωστή διαμόρφωση των εφαρμογών τους.
Το Electron παρέχει δυνατότητες όπως η εκτέλεση των διεργασιών απόδοσης σε περιβάλλον απομόνωσης, η απομόνωση περιβάλλοντος εκτέλεσης και η επικοινωνία μέσω IPC μεταξύ των προνομιούχων λειτουργιών της εφαρμογής και του περιεχομένου ιστού. Η τεκμηρίωση ασφαλείας του συνιστά τον περιορισμό της πρόσβασης στο Node.js, την προσεκτική επικύρωση των μηνυμάτων IPC και την αντιμετώπιση του περιεχομένου που φορτώνεται από απομακρυσμένες πηγές ως μη έμπιστου.
Το CEF υποστηρίζει επίσης την αρχιτεκτονική πολλαπλών διεργασιών και την απομόνωση ασφαλείας του Chromium. Ωστόσο, επειδή το CEF ενσωματώνεται σε μια εφαρμογή που ελέγχεται από τον προγραμματιστή της, η εφαρμογή υποδοχής είναι υπεύθυνη για τον καθορισμό των λειτουργιών του προγράμματος περιήγησης, των δικαιωμάτων και των εγγενών δυνατοτήτων που θα είναι διαθέσιμα.
Το CEF υποστηρίζει συνδέσεις JavaScript και επικοινωνία με εγγενή κώδικα, επιτρέποντας στους προγραμματιστές να συνδέουν το περιεχόμενο ιστού με τις λειτουργίες της εφαρμογής. Αυτές οι διεπαφές πρέπει να σχεδιάζονται προσεκτικά, ιδιαίτερα όταν εμφανίζονται ιστότοποι τρίτων.
| Παράμετρος ασφαλείας | Electron | CEF |
|---|---|---|
| Απομόνωση Chromium σε sandbox | Υποστηρίζεται | Υποστηρίζεται |
| Προνομιούχα εγγενής πρόσβαση | Node.js και API του Electron | Εγγενή API της εφαρμογής υποδοχής |
| Επικοινωνία JavaScript με εγγενή κώδικα | Σενάρια προφόρτωσης και IPC | Συνδέσεις V8 και ανταλλαγή μηνυμάτων μεταξύ διεργασιών |
| Απομόνωση απομακρυσμένου περιεχομένου | Απομόνωση διεργασιών απόδοσης σε sandbox και απομόνωση περιβάλλοντος εκτέλεσης | Απομόνωση διεργασιών του Chromium και μηχανισμοί ελέγχου της εφαρμογής υποδοχής |
| Ενημερώσεις ασφαλείας προγράμματος περιήγησης | Αναβαθμίσεις έκδοσης Electron | Αναβαθμίσεις έκδοσης CEF |
| Ευθύνη για την ασφάλεια της εφαρμογής | Προγραμματιστής εφαρμογής | Προγραμματιστής εφαρμογής |
Μια άλλη σημαντική παράμετρος είναι η συντήρηση του προγράμματος περιήγησης. Τόσο το Electron όσο και το CEF διανέμουν γενικά το δικό τους περιβάλλον εκτέλεσης Chromium, επομένως οι προγραμματιστές πρέπει να διαθέτουν ενημερώσεις εφαρμογών όταν γίνονται διαθέσιμες διορθώσεις ασφαλείας.
Το CEF παρέχει κλάδους εκδόσεων που ακολουθούν το Chromium και διανομές εκτελέσιμων αρχείων που απλοποιούν αυτή τη διαδικασία. Αντίστοιχα, το Electron συντηρεί εκδόσεις που ενσωματώνουν ενημερώσεις του Chromium και του Node.js.
Καμία από τις δύο προσεγγίσεις δεν καταργεί πλήρως την ανάγκη για συνεχή συντήρηση. Οι εφαρμογές που χρησιμοποιούν παλαιότερες εκδόσεις του Chromium μπορεί να παραμένουν εκτεθειμένες σε ευπάθειες που έχουν ήδη διορθωθεί στο αρχικό έργο.
Για ομάδες που δημιουργούν λογισμικό το οποίο εμφανίζει οποιουσδήποτε ιστοτόπους, η συντήρηση ασφαλείας θα πρέπει να αντιμετωπίζεται ως ουσιώδες μέρος του κύκλου ζωής της εφαρμογής και όχι ως περιστασιακή εργασία.
Υιοθέτηση: Σημαντικές εφαρμογές που χρησιμοποιούν Electron και CEF
Τόσο το Electron όσο και το CEF έχουν υιοθετηθεί ευρέως σε εφαρμογές παραγωγής, αλλά τα πρότυπα χρήσης τους διαφέρουν.
Το Electron έχει ιδιαίτερα έντονη παρουσία σε δημοφιλείς εφαρμογές επιφάνειας εργασίας για παραγωγικότητα, επικοινωνία και ανάπτυξη λογισμικού. Η Microsoft χρησιμοποιεί το Electron για το Visual Studio Code, ενώ άλλα γνωστά προϊόντα Electron περιλαμβάνουν το Slack, το Discord, το Notion, το Figma, το Signal Desktop και το GitHub Desktop.
Το CEF χρησιμοποιείται επίσης από μεγάλες εταιρείες λογισμικού, ιδιαίτερα κατά την ενσωμάτωση διεπαφών ιστού σε εφαρμογές με υπάρχουσα εγγενή αρχιτεκτονική.
Ενδεικτικά παραδείγματα:
| Εφαρμογή | Τεχνολογία | Τυπική χρήση |
|---|---|---|
| Visual Studio Code | Electron | Επεξεργαστής κώδικα για πολλαπλές πλατφόρμες |
| Slack | Electron | Επικοινωνία ομάδων |
| Discord | Electron | Πλατφόρμα επικοινωνίας και κοινοτήτων |
| Notion | Electron | Σημειώσεις και παραγωγικότητα |
| Figma Desktop | Electron | Εφαρμογή σχεδίασης |
| Spotify Desktop | CEF | Διεπαφή βασισμένη σε τεχνολογίες ιστού μέσα στην εφαρμογή επιφάνειας εργασίας |
| Steam | CEF | Ενσωματωμένες διεπαφές ιστού στην εφαρμογή επιφάνειας εργασίας |
| OBS Studio | CEF | Πηγές προγράμματος περιήγησης, επικαλύψεις και προσαρτώμενα πλαίσια προγράμματος περιήγησης |
Το Spotify είναι μια ιδιαίτερα καλά τεκμηριωμένη περίπτωση υιοθέτησης του CEF. Η επίσημη σελίδα ανοιχτού κώδικά του δημοσιεύει τις εκδόσεις CEF και Chromium που σχετίζονται με τις εκδόσεις του Spotify Desktop.
Το OBS Studio παρέχει άλλο ένα σαφές παράδειγμα του γιατί οι προγραμματιστές επιλέγουν το CEF. Η ενσωμάτωση obs-browser χρησιμοποιεί το CEF για να παρέχει πηγές προγράμματος περιήγησης, επιτρέποντας στους χρήστες να εμφανίζουν επικαλύψεις βασισμένες σε τεχνολογίες ιστού και άλλο περιεχόμενο μέσα σε σκηνές ζωντανής μετάδοσης. Το CEF είναι ένα στοιχείο του OBS Studio και όχι το πλαίσιο που χρησιμοποιήθηκε για τη δημιουργία ολόκληρης της εφαρμογής.
Το Steam χρησιμοποιεί επίσης ενσωματωμένα στοιχεία ιστού βασισμένα στο Chromium μέσα στην εφαρμογή επιφάνειας εργασίας του, ενσωματώνοντας διεπαφές ιστού στην ευρύτερη υποδομή της εγγενούς εφαρμογής του.
Αυτά τα παραδείγματα αναδεικνύουν τη διαφορά μεταξύ των τεχνολογιών. Το Electron χρησιμοποιείται συχνά για τη δημιουργία ολόκληρης της εφαρμογής επιφάνειας εργασίας, ενώ το CEF χρησιμοποιείται συχνά για την προσθήκη λειτουργιών ιστού σε εφαρμογές που διαθέτουν ήδη σημαντικά εγγενή στοιχεία.
Το CEF δεν θα πρέπει να θεωρείται μια άγνωστη ή ξεπερασμένη εναλλακτική λύση. Δημιουργήθηκε το 2008, πριν από το Electron, και χρησιμοποιείται εκτενώς σε εμπορικό λογισμικό εδώ και πολλά χρόνια. Η μακρά ιστορία του και η συνεχής χρήση του σε σημαντικά προϊόντα αποδεικνύουν ότι η ενσωμάτωση του Chromium παραμένει μια σημαντική προσέγγιση στην ανάπτυξη εφαρμογών επιφάνειας εργασίας.
Το Electron, από την άλλη πλευρά, έχει δημιουργήσει ένα ιδιαίτερα ισχυρό οικοσύστημα γύρω από εφαρμογές επιφάνειας εργασίας βασισμένες σε JavaScript. Η ευρεία υιοθέτησή του, τα καθιερωμένα εργαλεία και η συμμετοχή μεγάλων εταιρειών τεχνολογίας το καθιστούν ελκυστικό για ομάδες που δημιουργούν νέα προϊόντα με τεχνολογίες ιστού.
Τα δύο πλαίσια έχουν διαφορετικά πλεονεκτήματα, επειδή στοχεύουν σε διαφορετικές αρχιτεκτονικές απαιτήσεις.
Γιατί επιλέγουμε το Electron στη WebCatalog
Στη WebCatalog, έχουμε επιλέξει το Electron ως βάση για τις εφαρμογές επιφάνειας εργασίας μας για πολλαπλές πλατφόρμες, επειδή ανταποκρίνεται πολύ καλά στις απαιτήσεις των προϊόντων μας.
Το WebCatalog επιτρέπει στους χρήστες να μετατρέπουν ιστοτόπους σε εφαρμογές επιφάνειας εργασίας, να διαχειρίζονται ανεξάρτητα πολλαπλούς λογαριασμούς και να οργανώνουν εφαρμογές σε macOS, Windows και Linux. Το λογισμικό μας πρέπει να υποστηρίζει ιστοτόπους που έχουν δημιουργηθεί από χιλιάδες διαφορετικούς προγραμματιστές, με διαφορετικά συστήματα ελέγχου ταυτότητας, μηχανισμούς αποθήκευσης, API προγράμματος περιήγησης και πλαίσια JavaScript.
Τόσο το Electron όσο και το CEF παρέχουν ένα συνεπές περιβάλλον εκτέλεσης Chromium, κάτι που είναι σημαντικό για τη συμβατότητα. Σε αντίθεση με τα πλαίσια που βασίζονται στις προβολές ιστού του συστήματος, μας επιτρέπουν να χρησιμοποιούμε μια γνωστή έκδοση του Chromium σε όλες τις υποστηριζόμενες πλατφόρμες επιφάνειας εργασίας.
Ωστόσο, το WebCatalog δεν είναι πρωτίστως μια εγγενής εφαρμογή που χρειάζεται ένα ενσωματωμένο στοιχείο προγράμματος περιήγησης. Οι λειτουργίες περιήγησης είναι κεντρικό στοιχείο του προϊόντος μας. Χρειαζόμαστε εκτεταμένο έλεγχο στα παράθυρα, τις συνεδρίες, την αποθήκευση, τα δικαιώματα, την πλοήγηση και τη συμπεριφορά του κύκλου ζωής της εφαρμογής.
Το Electron παρέχει ώριμα API για αυτές τις απαιτήσεις. Οι διεπαφές BrowserWindow, webContents και session μάς επιτρέπουν να δημιουργούμε λειτουργίες τύπου προγράμματος περιήγησης χρησιμοποιώντας JavaScript και TypeScript. Τα μόνιμα διαμερίσματα συνεδριών είναι ιδιαίτερα σημαντικά, επειδή επιτρέπουν στους χρήστες να διατηρούν ανεξάρτητες συνεδρίες σύνδεσης για πολλαπλούς λογαριασμούς στον ίδιο ιστότοπο.
Το CEF παρέχει επίσης API για τη διαχείριση στιγμιοτύπων προγράμματος περιήγησης, αιτημάτων, αποθήκευσης και εγγενούς ενσωμάτωσης. Κατ’ αρχήν, πολλές από τις ίδιες δυνατότητες θα μπορούσαν να υλοποιηθούν με το CEF. Ωστόσο, κάτι τέτοιο θα απαιτούσε να δημιουργούμε και να συντηρούμε μόνοι μας περισσότερη εγγενή υποδομή.
Η ενσωμάτωση του Electron με το Node.js ταιριάζει επίσης με την τεχνολογική μας στοίβα. Μπορούμε να υλοποιούμε μεγάλο μέρος της λογικής της εφαρμογής επιφάνειας εργασίας μας με TypeScript, να μοιραζόμαστε κώδικα μεταξύ προϊόντων και να αξιοποιούμε το οικοσύστημα της JavaScript.
Η ανάπτυξη για πολλαπλές πλατφόρμες είναι ένας ακόμη παράγοντας. Το WebCatalog υποστηρίζει macOS, Windows και Linux, συμπεριλαμβανομένης της δημιουργίας πακέτων εφαρμογών, των ενσωματώσεων και της συμπεριφοράς συστήματος που διαφέρουν ανά πλατφόρμα. Τα καθιερωμένα API και τα εργαλεία διανομής του Electron μειώνουν την ποσότητα εγγενούς κώδικα που χρειάζεται να συντηρούμε.
Αναγνωρίζουμε ότι το Electron συνεπάγεται πρόσθετη επιβάρυνση. Η συμπερίληψη του Chromium αυξάνει το μέγεθος της εφαρμογής και οι εφαρμογές που βασίζονται σε πρόγραμμα περιήγησης χρειάζονται προσεκτική διαχείριση πόρων. Αντί να αντικαταστήσουμε το Electron, έχουμε επικεντρωθεί στη βελτίωση του τρόπου με τον οποίο το χρησιμοποιούμε.
Για παράδειγμα, εισαγάγαμε κλώνους APFS για να μειώσουμε τη χρήση δίσκου από τις παραγόμενες εφαρμογές Mac, περιορίζοντας την περιττή αποθήκευση χωρίς να θυσιάζουμε τη συμβατότητα του Chromium.
Η απόφασή μας δεν σημαίνει ότι το Electron είναι καθολικά καλύτερο από το CEF. Αν το WebCatalog ήταν κυρίως μια εγγενής εφαρμογή με λίγες ενσωματωμένες διεπαφές ιστού, το CEF θα μπορούσε να είναι μια εξαιρετική επιλογή. Επειδή όμως το προϊόν μας είναι θεμελιωδώς χτισμένο γύρω από εφαρμογές ιστού και λειτουργίες προγράμματος περιήγησης, το Electron παρέχει μια πιο παραγωγική και ευκολότερα συντηρήσιμη βάση.
Πού πλεονεκτεί το CEF
Παρότι το Electron είναι η προτιμώμενη επιλογή μας στη WebCatalog, το CEF έχει σημαντικά πλεονεκτήματα για εφαρμογές που απαιτούν βαθύτερη ενσωμάτωση με εγγενές λογισμικό.
Το CEF είναι ιδιαίτερα ελκυστικό όταν οι προγραμματιστές διαθέτουν ήδη μια καθιερωμένη εφαρμογή C++ και θέλουν να εισάγουν σύγχρονες διεπαφές ιστού χωρίς να αντικαταστήσουν την υπάρχουσα αρχιτεκτονική τους.
Η υποστήριξη απόδοσης εκτός οθόνης είναι ένα ακόμη σημαντικό πλεονέκτημα. Εφαρμογές όπως λογισμικό ζωντανής μετάδοσης και μηχανές παιχνιδιών μπορεί να χρειάζονται απόδοση περιεχομένου ιστού απευθείας σε προσαρμοσμένες αλυσίδες επεξεργασίας γραφικών αντί για συμβατικά παράθυρα επιφάνειας εργασίας. Το CEF παρέχει καθιερωμένα API για αυτές τις περιπτώσεις χρήσης.
Το CEF δίνει επίσης στους προγραμματιστές σημαντικό έλεγχο στην ενσωμάτωση του προγράμματος περιήγησης. Μπορούν να προσαρμόσουν τον χειρισμό αιτημάτων, την πλοήγηση, τις συνδέσεις JavaScript, τη φόρτωση πόρων και τον τρόπο με τον οποίο τα στιγμιότυπα προγράμματος περιήγησης αλληλεπιδρούν με τα εγγενή στοιχεία της εφαρμογής.
Για ομάδες με ισχυρή τεχνογνωσία στην εγγενή ανάπτυξη, αυτή η ευελιξία μπορεί να υπερτερεί της ευκολίας του Electron.
Αξίζει να εξετάσετε το CEF όταν:
- Προσθέτετε διεπαφές ιστού σε μια υπάρχουσα εγγενή εφαρμογή. Οι προγραμματιστές μπορούν να διατηρήσουν την τρέχουσα αρχιτεκτονική της εφαρμογής τους και να ενσωματώσουν το Chromium όπου χρειάζεται.
- Δημιουργείτε λογισμικό με ειδικές απαιτήσεις απόδοσης. Η απόδοση εκτός οθόνης επιτρέπει την ενσωμάτωση περιεχομένου ιστού σε αλυσίδες επεξεργασίας γραφικών και εξειδικευμένες διεπαφές.
- Χρειάζεστε βαθιά ενσωμάτωση με εγγενείς λειτουργίες C++. Το CEF παρέχει εγγενή API και επιτρέπει λεπτομερή έλεγχο της συμπεριφοράς του προγράμματος περιήγησης.
- Συντηρείτε μια καθιερωμένη εφαρμογή CEF. Η μετάβαση στο Electron μπορεί να επιφέρει σημαντικές αρχιτεκτονικές αλλαγές χωρίς ουσιαστικά οφέλη.
- Συνδυάζετε εγγενείς διεπαφές και διεπαφές ιστού. Οι προγραμματιστές μπορούν να χρησιμοποιούν το Chromium για επιλεγμένα τμήματα μιας εφαρμογής, διατηρώντας εγγενή στοιχεία διεπαφής χρήστη στα υπόλοιπα.
Το CEF συνεπάγεται πράγματι μεγαλύτερη ευθύνη για την υποδομή της εφαρμογής. Οι προγραμματιστές μπορεί να χρειαστεί να υλοποιήσουν δικά τους συστήματα δημιουργίας πακέτων, ενημερώσεων, διαχείρισης παραθύρων και ενσωματώσεων ειδικών για κάθε πλατφόρμα.
Για ομάδες που διαθέτουν ήδη τις δυνατότητες να συντηρούν εγγενείς εφαρμογές, αυτό μπορεί να είναι απολύτως εύλογο. Για ομάδες που επικεντρώνονται στον ιστό και δημιουργούν ένα νέο προϊόν επιφάνειας εργασίας, μπορεί να προσθέτει περιττή πολυπλοκότητα.
Electron ή CEF: Ποιο να επιλέξετε;
Και οι δύο τεχνολογίες είναι ώριμες, αναπτύσσονται ενεργά και μπορούν να υποστηρίξουν εξελιγμένο λογισμικό επιφάνειας εργασίας. Η καλύτερη επιλογή εξαρτάται κυρίως από το αν δημιουργείτε μια νέα εφαρμογή επιφάνειας εργασίας γύρω από τεχνολογίες ιστού ή ενσωματώνετε λειτουργίες ιστού σε μια υπάρχουσα εγγενή εφαρμογή.
| Προτεραιότητά σας | Καλύτερη αφετηρία | Γιατί |
|---|---|---|
| Νέα εφαρμογή επιφάνειας εργασίας με JavaScript ή TypeScript | Electron | Ολοκληρωμένο πλαίσιο ανάπτυξης εφαρμογών |
| Υπάρχουσα εγγενής εφαρμογή C++ | CEF | Ενσωματώνεται στην εγγενή αρχιτεκτονική |
| Ελάχιστη εγγενής ανάπτυξη | Electron | Node.js και API JavaScript |
| Ενσωμάτωση περιεχομένου ιστού σε εγγενή παράθυρα | CEF | Σχεδιασμένο ειδικά για ενσωμάτωση |
| Απόδοση εκτός οθόνης και προσαρμοσμένες αλυσίδες επεξεργασίας γραφικών | CEF | Εξειδικευμένα API απόδοσης |
| Εκτεταμένα εργαλεία δημιουργίας πακέτων και ενημερώσεων εφαρμογών επιφάνειας εργασίας | Electron | Καθιερωμένο οικοσύστημα διανομής |
| Άμεση ενσωμάτωση με εγγενή κώδικα C++ | CEF | Εγγενείς διεπαφές C και C++ |
| Συνέπεια του Chromium μεταξύ πλατφορμών επιφάνειας εργασίας | Οποιοδήποτε από τα δύο | Και τα δύο περιλαμβάνουν το Chromium |
| Σύνθετη διαχείριση συνεδριών προγράμματος περιήγησης | Οποιοδήποτε από τα δύο | Και τα δύο παρέχουν δυνατότητες διαχείρισης προγράμματος περιήγησης |
| Μικρά πακέτα εφαρμογών | Κανένα δεν έχει εγγενές πλεονέκτημα | Και τα δύο διανέμουν το Chromium |
| Υπάρχουσα ομάδα ανάπτυξης JavaScript | Electron | Οικεία τεχνολογική στοίβα ανάπτυξης |
| Υπάρχον προϊόν βασισμένο στο CEF | CEF | Αποφυγή περιττής μετάβασης |
Για τους περισσότερους προγραμματιστές ιστού που ξεκινούν μια νέα εφαρμογή επιφάνειας εργασίας για πολλαπλές πλατφόρμες, το Electron είναι γενικά η πιο πρακτική επιλογή. Παρέχει την αρχιτεκτονική εφαρμογής, τις εγγενείς ενσωματώσεις, τα εργαλεία ανάπτυξης και το οικοσύστημα διανομής που απαιτούνται για τη δημιουργία ενός ολοκληρωμένου προϊόντος χωρίς να αναπτύσσονται τα πάντα από το μηδέν.
Το CEF είναι συχνά η καλύτερη επιλογή για προγραμματιστές που διαθέτουν ήδη μια εγγενή εφαρμογή ή χρειάζονται εξειδικευμένες δυνατότητες ενσωμάτωσης προγράμματος περιήγησης. Η ευελιξία του και η άμεση εγγενής ενσωμάτωση το καθιστούν ιδιαίτερα χρήσιμο για λογισμικό όπως μηχανές παιχνιδιών, εργαλεία ζωντανής μετάδοσης, βιομηχανικές εφαρμογές και σύνθετα εγγενή προϊόντα με ενσωματωμένες διεπαφές ιστού.
Καμία τεχνολογία δεν είναι από τη φύση της ταχύτερη ή πιο ασφαλής. Αυτά τα χαρακτηριστικά εξαρτώνται σε μεγάλο βαθμό από την εφαρμογή, την αρχιτεκτονική της και την ποιότητα της υλοποίησής της.
Τελικές σκέψεις
Το Electron και το Chromium Embedded Framework μοιράζονται την ίδια υποκείμενη τεχνολογία προγράμματος περιήγησης, αλλά λύνουν διαφορετικά προβλήματα.
Το Electron έχει σχεδιαστεί για να κάνει την ανάπτυξη εφαρμογών επιφάνειας εργασίας προσιτή στους προγραμματιστές ιστού. Συνδυάζει το Chromium, το Node.js και εγγενή API επιφάνειας εργασίας σε ένα πλαίσιο που επιτρέπει στις ομάδες να δημιουργούν εξελιγμένες εφαρμογές χρησιμοποιώντας JavaScript και TypeScript.
Το CEF έχει σχεδιαστεί για την ενσωμάτωση του Chromium σε άλλες εφαρμογές. Παρέχει έλεγχο χαμηλότερου επιπέδου στην ενσωμάτωση του προγράμματος περιήγησης και είναι ιδιαίτερα πολύτιμο για εγγενείς εφαρμογές που χρειάζονται διεπαφές βασισμένες σε τεχνολογίες ιστού ή εξειδικευμένες δυνατότητες απόδοσης.
Και τα δύο έχουν αποδείξει την αξία τους σε σημαντικό λογισμικό παραγωγής. Το Electron αποτελεί τη βάση εφαρμογών όπως το Visual Studio Code, το Slack, το Discord και το Notion, ενώ το CEF χρησιμοποιείται σε προϊόντα όπως το Spotify, το Steam και το OBS Studio.
Στη WebCatalog, έχουμε επιλέξει το Electron επειδή τα προϊόντα μας είναι θεμελιωδώς χτισμένα γύρω από λειτουργίες προγράμματος περιήγησης. Το συνεπές περιβάλλον εκτέλεσης Chromium, τα ώριμα API διαχείρισης προγράμματος περιήγησης και το οικοσύστημα JavaScript μάς επιτρέπουν να αναπτύσσουμε και να συντηρούμε αποδοτικά εφαρμογές επιφάνειας εργασίας για πολλαπλές πλατφόρμες.
Το CEF παραμένει μια εξαιρετική επιλογή για προγραμματιστές που εργάζονται με εγγενείς εφαρμογές, ειδικά όταν το Chromium πρέπει να ενσωματωθεί σε μια υπάρχουσα αρχιτεκτονική αντί να αποτελέσει τη βάση ολόκληρου του προϊόντος.
Η απόφαση τελικά εξαρτάται από το τι δημιουργείτε. Αν θέλετε να δημιουργήσετε μια ολοκληρωμένη εφαρμογή επιφάνειας εργασίας χρησιμοποιώντας τεχνολογίες ιστού, το Electron είναι συνήθως η καλύτερη αφετηρία. Αν θέλετε να προσθέσετε το Chromium σε μια εγγενή εφαρμογή, το CEF είναι πιθανότατα το καταλληλότερο εργαλείο.


