Kontrol WPF WebBrowser berbasis Internet Explorer mengalami beberapa masalah keyboard dan fokus dan masalah kebocoran memori . Sebagai solusi alternatif untuk masalah ini, kami mempertimbangkan opsi yang tersedia untuk hosting Chromium alih-alih kontrol WebBrowser dalam proyek WPF / C # kami yang berbasis pada pengeditan HTML. Pertanyaan serupa telah diajukan di sini sebelumnya. Saya telah membaca jawaban dan melakukan penelitian sendiri, tetapi saya berharap mendapatkan lebih banyak umpan balik dari orang-orang yang benar-benar menggunakan salah satu opsi berikut dalam proyek-proyek berkualitas produksi :
Kelihatannya sangat tepat, tetapi saya tidak suka fakta bahwa proyek ini bukan open-source dan sumber lengkapnya tidak mudah tersedia. Juga, ini mungkin merupakan pekerjaan berat untuk proyek kami, karena rendering di luar layar bukanlah sesuatu yang benar-benar kami andalkan.
Chromium Embedded Framework (CEF) dan .NET binding untuk CEF
Ini mungkin opsi terbaik yang saat ini tersedia. Proyek ini tampaknya hidup dan aktif, saat ini sedang disinkronkan dengan Chrome v27. CEF3 menggunakan arsitektur multi-proses Chrome. Sepertinya Adobe juga memberikan beberapa dukungan .
Walaupun tujuan awalnya adalah untuk menjadi plugin HTML5 untuk IE dan Firefox, sebenarnya berfungsi sebagai kontrol ActiveX mandiri juga, jadi saya bisa membungkusnya untuk digunakan dengan WPF. Itu memperlihatkan API yang cukup untuk interaksi dengan halaman web bagian dalam ( onmessage, addEventListener/removeEventListener, postMessage
). Saya sadar Google akan menghentikan Chrome Frame, tetapi saya berasumsi sumbernya akan tetap ada di repositori Chromium. Seharusnya tidak sulit untuk memperbaruinya dengan kode Chromium terbaru saat ini, dan kami akan memiliki kontrol penuh atas ini.
Tidak persis berbasis Chromium dan tidak menggunakan mesin V8, jadi itu bukan pilihan.
Apakah ada opsi lain yang mungkin saya abaikan?
Saya akan sangat menghargai jika seseorang membagikan pengalamannya dengan salah satu opsi di atas untuk kehidupan nyata, proyek WPF berkualitas. Apakah Anda memiliki implikasi integrasi, lisensi, atau penyebaran? Terima kasih.
[Diedit] Saya juga ingin mengucapkan terima kasih kepada artlung karena memberikan pertanyaan ini dorongan dengan memberikan tawaran karunia yang murah hati.
sumber
Kami memiliki tantangan yang persis sama beberapa waktu lalu. Kami ingin pergi dengan perpustakaan open source CEF3 yang berbasis WPF dan mendukung .NET 3.5.
Pertama, penulis CEF sendiri mendaftar untuk bahasa yang berbeda di sini .
Kedua, kami melanjutkan dengan open source .NET CEF3 mengikat yang disebut Xilium.CefGlue dan sukses dengan itu. Dalam kasus di mana sesuatu tidak berfungsi seperti yang Anda harapkan, penulis biasanya sangat responsif terhadap masalah yang dibuka di built-in bitbucket tracker
Sejauh ini hal itu telah membantu kami dengan baik. Penulis memperbarui perpustakaannya untuk mendukung rilis CEF3 terbaru dan perbaikan bug pada basis reguler.
sumber
Ini satu lagi:
http://www.essentialobjects.com/Products/WebBrowser/Default.aspx
Yang ini juga didasarkan pada mesin Chrome terbaru tetapi jauh lebih mudah digunakan daripada CEF. Ini adalah .NET dll yang dapat Anda referensi dan gunakan.
sumber
Lihatlah DotNetBrowser perpustakaan dikembangkan oleh tim saya. Ini memberikan kontrol browser WPF dan WinForms berbasis Chromium, yang cukup mudah untuk dimasukkan ke dalam aplikasi .NET. Ini mendukung semua standar web modern termasuk HTML5, CSS3 dan JavaScript. Halaman yang dirender terlihat persis seperti di Google Chrome.
Perpustakaan mewarisi arsitektur multi-proses Chromium - setiap halaman web dirender dalam proses Chromium yang terpisah, dan aplikasi akan terus bekerja bahkan setelah plugin crash atau kesalahan tak terduga lainnya terjadi pada halaman web.
Berikut adalah beberapa fitur berguna lainnya, yang disediakan oleh DotNetBrowser: dimungkinkan untuk mendengarkan memuat acara, menangani aktivitas jaringan, mengkonfigurasi proxy, mensimulasikan tindakan pengguna, bekerja dengan cookie, mengakses dan memodifikasi DOM, mendengarkan acara DOM, memanggil JavaScript dari .NET dan sebaliknya, menggunakan kamera web dan mikrofon di halaman web, mengatur komunikasi berbasis WebRTC, dan banyak lagi .
Lihat Referensi API untuk lebih jelasnya.
Cuplikan kode di bawah ini menunjukkan cara membuat BrowserView, menanamkannya ke dalam Formulir, dan memuat URL:
Setelah Anda menjalankan contoh di atas, Anda akan mendapatkan output berikut:
Perpustakaan bersifat komersial. Lisensi komersial termasuk paket dukungan untuk ukuran tim yang berbeda. Dimungkinkan juga untuk membeli kode sumber perpustakaan.
Selain halamannya sendiri, komponen tersedia sebagai paket NuGet dan sebagai paket VSIX di Visual Studio Marketplace.
sumber
Saya telah menggunakan Awesomium.NET. Meskipun saya tidak suka fakta bahwa itu bukan open-source, dan juga fakta bahwa ia menggunakan mesin rendering Webkit yang cukup lama, itu sangat mudah digunakan. Itu tentang satu-satunya dukungan yang bisa saya berikan.
sumber
PEMBARUAN 2018 MEI:
Atau, Anda dapat menyematkan browser Edge, tetapi hanya menargetkan windows 10.
Ini solusinya.
sumber
Saya memiliki masalah yang sama dengan WPF RSS reader saya, saya awalnya menggunakan Awesomium (saya pikir versi 1.6) Awesomium hebat. Anda mendapatkan banyak kontrol untuk caching (gambar dan konten HTML), eksekusi JavaScript, intersepsi unduhan dan sebagainya. Ini juga sangat cepat. Proses isolasi berarti ketika browser mogok itu tidak crash aplikasi.
Tapi itu juga berat, bahkan rilis build menambahkan sekitar 10-15mb (tidak dapat mengingat angka pastinya) dan karenanya penalti awal yang sedikit. Saya kemudian menyadari, satu-satunya masalah yang saya miliki dengan kontrol browser IE adalah ia akan membuang kesalahan JavaScript setiap saat. Tapi itu diperbaiki dengan cuplikan berikut.
Saya hampir tidak menggunakan aplikasi saya di XP atau Vista tetapi pada Win 7 dan di atasnya tidak pernah crash (setidaknya bukan karena saya menggunakan kontrol browser IE)
sumber
IWebBrowser2
antarmuka batin .Microsoft merilis kontrol WPF " Microsoft Edge WebView2 " yang akan memberi kita pilihan bagus dan gratis untuk menanamkan Chromium di Windows 10, Windows 8.1, atau Windows 7. Ini tersedia melalui Nuget sebagai paket
Microsoft.Web.WebView2
.sumber