Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 15907|Jawab: 2

CEF: Sematkan Chrome untuk klien

[Salin tautan]
Diposting pada 22/09/2017 16.19.26 | | |
Apa itu CEF?
CEF adalah singkatan dari Chromium Embedded Framework, yang merupakan kontrol browser web sumber terbuka berdasarkan proyek Google Chromium, mendukung platform Windows, Linux, dan Max. Selain menyediakan antarmuka C/C++, ada juga port untuk bahasa lain.

Karena berbasis Chromium, CEF mendukung fitur HTML5 yang diterapkan di Webkit & Chrome, dan relatif dekat dengan Chrome dalam hal kinerja.

CEF juga menyediakan fitur-fitur berikut: plugin khusus, protokol khusus, objek dan ekstensi Javascrip khusus; Pemuatan sumber daya yang dapat dikontrol, navigasi, menu konteks, dll.

Siapa yang menggunakan CEF
Mari kita gunakan beberapa contoh praktis untuk mengilustrasikan apa yang telah dilakukan semua orang dengan CEF:

Berbagai browser

Browser dual-core awal (IE + Webkit), beberapa menggunakan CEF sebagai kontrol browser kernel Webkit.

Namun, untuk browser, memperluas langsung di Chrome sebenarnya adalah rajanya, dan semua orang melakukannya sekarang (berbagai browser cepat).

Klien Evernote (di Windows)

Evernote memungkinkan pengguna untuk menempelkan halaman web ke dalam catatan, dan juga menyediakan plugin untuk menyimpan halaman web sebagai catatan.

Itu harus menjadi kebutuhan untuk merender halaman dengan benar pada klien, dan tugas ini diserahkan kepada CEF.

Klien GitHub (di Windows)

GitHub juga telah mengemas libcef.dll, dari sudut pandang kinerja, halaman ReadMe yang digunakan untuk menampilkan proyek harus CEF, dan UI di tempat lain juga dapat diimplementasikan sebagian dengan halaman.

QQ

QQ telah mengimplementasikan beberapa fungsi dan antarmuka dengan menyematkan IE sejak lama. Sejak tahun lalu, QQ telah memperkenalkan CEF, menggantikan beberapa tempat yang menggunakan IE sebelumnya, sehingga beberapa fitur baru berdasarkan Webkit dapat digunakan, dan pada saat yang sama, telah mendapatkan keunggulan dalam kecepatan, stabilitas, dan kompatibilitas.

Adobe Edge Animate & Adobe Edge Reflow

Adobe telah meluncurkan satu set lengkap halaman web modern (atau HTML5?) Tepi.

Adobe Edge Animate, untuk animasi, dapat mencapai animasi yang kompleks dengan mengedit garis waktu dan membuat asli (disebut simbol di Edge Animate).

Edge Reflow adalah Desain web responsif. Beberapa orang menerjemahkannya sebagai responsif, yang sebenarnya adaptif.

Dua perangkat lunak di atas pada dasarnya berorientasi pada browser kernel Webkit, sehingga perlu untuk menyematkan kernel Webkit untuk menyediakan pratinjau WYSIWYG dan antarmuka pengeditan. Mereka semua menggunakan CEF. (Perbedaan antara CEF dan Webkit murni akan diperkenalkan nanti)

T+

Di bawah konsep Aplikasi Web, Q+ menyediakan lingkungan yang berjalan untuk halaman web (sederhananya: kotak klien dan beberapa API yang tersedia), dan mendukung kernel IE dan Webkit.

Untuk siswa pengembangan web, kernel Webkit (sebenarnya CEF) yang kami perkenalkan tidak perlu mempertimbangkan masalah kompatibilitas versi IE, yang tidak hanya meningkatkan efisiensi pengembangan, tetapi juga memungkinkan kami untuk memanfaatkan beberapa fitur HTML5 baru. Saat itu, pasar aplikasi Q+, pusat pesan, wallpaper, widget musik, dan aplikasi lainnya semuanya dikembangkan berdasarkan kernel Webkit.

Proyek Q+ dapat dikatakan telah melakukan lebih banyak upaya di CEF, seperti:

Widget musik yang dikembangkan menggunakan tag audio HTML5;

Beberapa aplikasi menggunakan fungsionalitas offline HTML5 (yaitu, dengan file manifes), tetapi tentu saja ada beberapa liku-liku, dan saya telah mendapatkan banyak pengalaman.

Alat Pengembang Webkit yang Dikemas

Protokol khusus: Misalnya, akses ke protokol qplus:// dapat dialihkan ke folder khusus.

Off Screen Rendering (OSR): Dengan menggunakan rendering di luar layar + Windows Layered Window, jendela halaman web yang tidak teratur dibuat (apa bentuk area buram halaman web, apa bentuk jendela)

Mengapa menyematkan CEF untuk klien?
Dengan begitu banyak contoh, pertanyaan ini jauh lebih mudah untuk diucapkan:

Ini digunakan untuk menampilkan halaman web dan menggunakan berbagai layanan Web;

Gunakan halaman web untuk melakukan UI;

Gunakan fitur HTML5, seperti audio, kanvas, dll., termasuk fitur CSS3.

Rendering Di Luar Layar (OSR):

Yang disebut OSR adalah merender seluruh halaman ke bitmap tanpa membuat jendela nyata. Tentu saja, tidak hanya rendering, tetapi juga serangkaian API untuk menangani peristiwa mouse, keyboard, peristiwa metode input, dll.

Fitur ini sangat berguna ketika jendela asli tidak dapat digunakan, seperti pada Layered Windows, atau saat dirender ke tekstur dalam game.

Dengan menggunakan fitur OSR, beberapa efek menarik dapat dibuat, seperti:

AlloyTeam membuat Webtop, yang menggunakan OSR untuk membuat browser, pemutar, dll.

Ada proyek Awesomium yang juga mendukung OSR, dan sudah ada proyek game yang menggunakan Awesomium untuk merender halaman web dalam game. (Melihat file keluaran Awesomium, itu harus mirip dengan implementasi CEF, itu semua adalah paket Chromium, dan CEF yang dapat dilakukan Awesomium juga harus dilakukan)

Di waktu luang saya, saya membuat demo dan menggunakan CEF untuk merender halaman web di OpenGL Texture, yang dapat dianggap sebagai upaya kecil untuk menerapkan CEF ke game, seperti yang ditunjukkan pada gambar:

demo browser dalam game

Mengapa CEF?
IE

IE telah menjadi kontrol browser tertanam untuk waktu yang lama, dan tepatnya, kami sekarang memiliki banyak alternatif untuk IE.

CEF vs IE:

Kompatibilitas:

IE: Kernel bervariasi dari 6 hingga 10 versi tergantung pada sistem operasi, dan beban kerja pengembangan web agar kompatibel dengan versi ini tidak dapat diremehkan.

CEF: Ini menggunakan kernel Webkit, dan dari sudut pandang karakteristik, versi CEF dapat sesuai dengan nomor versi Chrome, sehingga pengembangan web memiliki serangkaian fitur yang jelas, menghilangkan beban kerja untuk mempertimbangkan kompatibilitas.

Standar HTML5 & Fitur Baru:

IE: Tentu saja, versi IE yang lebih lama tidak mendukung fitur dan standar HTML terbaru.

CEF: Tidak ada keraguan bahwa Webkit dan Chrome berada di garis depan dalam mendukung fitur-fitur baru.

Sumber Terbuka & Lintas Platform:

IE: Bukan open source, terbatas pada platform Windows

CEF: Sumber terbuka, Webkit dan Chromium yang digunakan semuanya open source, open source berarti kemungkinan yang lebih dapat disesuaikan; Dan itu mencakup Windows, Mac, dan Linux.

Rendering di Luar Layar (OSR):

IE: Anda dapat mencapai rendering di luar layar melalui beberapa peretasan, tetapi beban kerjanya tidak kecil, dan tidak didukung secara resmi.

CEF: Ada mode rendering di luar layar khusus dan API yang sesuai.

Penetrasi:

IE: Semua pengguna Windows memiliki IE, yang merupakan keuntungan dari IE (tetapi beberapa pengguna memiliki pengaturan IE yang salah, yang akan menyebabkan ketidakgunaan, seperti jscrip{filtering}t.dll tidak terdaftar, mengakibatkan ketidakmampuan untuk menggunakan Javascrip{filter}t)

CEF: Anda harus menginstal dan mengemasnya sendiri

Webkit

Mengapa sengaja membandingkan CEF dan Webkit?

Baru-baru ini saya membaca artikel bagus tentang apa itu Webkit, apa yang bukan, dan mengapa ada begitu banyak port Webkit: "Apa yang Perlu Diketahui Pengembang Tentang WebKit"

Berikut adalah ringkasan kasarnya:

Webkit adalah mesin penguraian dan pengaturan untuk halaman web, yang dibagikan oleh semua browser berbasis Webkit. Port Webkit default adalah Safari, yang merupakan versi yang diunduh dari kompilasi kode sumber Webkit. Ada port Webkit lainnya, termasuk Chromium, QtWebkit, dll., yang memiliki implementasi berbeda dalam grafik 2D, akselerasi GPU, mesin Javascrip, decoding audio/video, dll.

CEF vs webkit (sebenarnya Chromium vs Webkit)

Mesin V8, rendering 2D skia, implementasi yang dipercepat GPU Chromium, dll., dengan bantuan implementasi Chromium yang sangat baik, CEF juga telah menjadi port Webkit yang sangat baik.

Kekurangan CEF:
Bersikaplah baik, CEF juga memiliki kekurangan dan keterbatasannya sendiri, dan Anda tidak bisa hanya menyebutkan kelebihannya, di sini saya akan memperkenalkan kerugian dan kerugian CEF:

Volume:

Versi terbaru CEF, jumlah semua DLL harus mendekati 40M, dan diperkirakan akan menjadi 10M+ setelah kompresi. Jika proyek Anda sendiri tidak berukuran besar dan tidak dapat menerimanya, maka CEF bukan untuk Anda.

Tentu saja, untuk game yang sekarang dihitung oleh G, volume ini harus tetap dapat diterima.

Untuk proyek klien biasa, itu tergantung pada apakah proyek itu sendiri perlu menggunakan fitur yang diterapkan oleh CEF, dan apakah layak untuk meningkatkan paket instalasi produk begitu banyak. Tentu saja, ada juga beberapa kompromi implementasi di sini, seperti mengunduh setelah instalasi (saya pribadi tidak berpikir ini berarti, lagipula, pengguna yang menginstal paket juga dapat memilih untuk mengunduh perangkat lunak untuk mempercepat)

Cache:

Cache Chrome dirancang untuk hanya memiliki satu proses membaca dan menulis, dan hal yang sama berlaku untuk CEF.

Untuk klien yang perlu dibuka beberapa kali, hanya folder cache yang berbeda yang dapat ditentukan untuk setiap instans proses. Namun, ini tidak diragukan lagi meningkatkan penggunaan hard disk, dan juga menyebabkan beberapa file yang awalnya di-cache diunduh beberapa kali (misalnya, proses A jQuery.js cache, proses B harus meminta dan menyimpan cache sekali karena menyimpan direktori yang berbeda jQueyr.js

OSR:

OSR saat ini tidak seperti mode jendela nyata, yang dapat dipercepat oleh GPU, dan OSR hanya dapat dirender menggunakan perangkat lunak, yang berarti bahwa beberapa efek CSS 3D tidak dapat didukung.

Namun, karakteristik OSR masih ditingkatkan, dan saya pribadi berpikir itu masih layak dinantikan.

Apa yang akan dibagikan nanti
Setelah menulis begitu banyak, itu dapat dianggap sebagai pengantar CEF, dan saya akan menulis beberapa barang kering di masa depan, yaitu cara menggunakan CEF, termasuk:

Akuisisi kode CEF, kompilasi, penyematan, pemrosesan panggilan API halaman dan klien, rendering OSR di luar layar, caching, protokol khusus, CEF1 & CEF3, dll.

Nah, itu saja untuk hari ini.





Mantan:Redis menyiapkan koneksi jarak jauh dan kata sandi akses
Depan:ASP.NET beberapa permintaan di halaman secara bersamaan, ada situasi animasi yang ditangguhkan yang diblokir
Diposting pada 25/02/2019 09.14.24 |
Hebat
 Tuan tanah| Diposting pada 12/08/2023 20.08.02 |
WebView2 (6) Mendistribusikan dan menyebarkan runtime WebView2
https://www.itsvse.com/thread-10372-1-1.html

[WebView2] (5) Memuat sumber daya HTML lokal dari host virtual
https://www.itsvse.com/thread-10367-1-1.html

[WebView2] (4) Web dan WinForm memanggil metode fungsi satu sama lain
https://www.itsvse.com/thread-10365-1-1.html

WebView2 (3) Komunikasi dua arah antara aplikasi Web dan WinForm
https://www.itsvse.com/thread-10364-1-1.html

[WebView2] (2) WinForm memperkenalkan WebView2 untuk menampilkan konten web
https://www.itsvse.com/thread-10362-1-1.html

[WebView2] (1) Pengenalan awal teknologi Microsoft Edge WebView2
https://www.itsvse.com/thread-10361-1-1.html
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com