基於CefGlue的桌面應用開發

前言

若是你想使用WEB技術來開發桌面客戶端,而且是想使用的語言也是C#時,那請耐心往下看。使用WEB技術開發桌面客戶端的核心其實就是使用一個可以獨立運行WEB前端的組件,如WinForm中的WebBrowser,Android平臺的WebView,以及Qt提供的WebView,等等。對於桌面客戶端開發而言,使用WebBrowser空間依賴於客戶端安裝的IE瀏覽器版本,並且IE自己的種種詬病讓人望而生畏。而現在,Chrome瀏覽器日新月異的發展你們有目共睹,並且其使用的核心 CEF 和Webkit同樣是開源的。因爲Chromium是C/C++開發的,想要在C#中使用須要再次封裝,一些基於Chromium的瀏覽器控件便應運而生。現在,市面上存在的基於Chromium的C#封裝有:html

關於這幾個項目的優劣, 牛A與牛C之間 作了很是細緻的比較,請參看 .NET多種WebKit內核/Blink內核瀏覽器初步測評報告 。最終優勝的爲 Xilium.CefGlue 。此前,本做者使用過 CefSharp ,感受很明顯的優勢是JS和C#之間的互調很是方便,因爲本做者只是使用CefSharp開發一個小工具,因此性能和發佈方面的問題暫時未碰到。前端

值得一提的是CEF有兩個版本CEF1和CEF3。html5

  • CEF1是單進程的。實現了更多的特性,內存使用更少,與客戶端應用更能完美的結合,使用的是WebKit的API,可是FLASH沒法在這個框架中正常播放,不支持html5的音頻和視頻,只支持NPAPI插件。關於NPAPI插件的相關知識,請參閱這裏:http://developer.chrome.com/extensions/npapi.html 。git

  • CEF3是多進程的。使用異步消息的方式來完成主進程和其餘進程的通訊(其餘進程有多是Webkit,也有多是V8的解析引擎進程),使用的是chromium官方- 的內容呈現API,支持NPAPI和PPAPI插件,有一個單獨的進程用於調試,相對於CEF1來講,雖然能夠播放FLASH等視頻,可是還有不少問題沒有處理掉,社區裏的人認爲CEF1更穩定一些。github

咱們選用的是CEF3和Xilium.CefGlue,Xilium.CefGlue是對CEF項目的.net的包裝,它是用P/Invoke的方式來調用CEF類庫的,請參見:https://bitbucket.org/xilium/xilium.cefglue/wiki/Home。web

下面咱們就 Xilium.CefGlue 開發桌面應用中須要解決的問題逐一分析。chrome

運行官方Demo

Clone或下載CefGlue

CefGlue的源碼地址爲 https://bitbucket.org/xilium/xilium.cefglue/ ,裏邊除了源碼,還包含Winform和Wpf的Demo。Clone或者下載下來。windows

下載後,Unload或者刪除其中的 CefGlue.Demo.GtkSharp 項目,這個項目是在Linux平臺使用的。將CefGlue.Demo.WinForms 設爲啓動項目。api

下載CEF動態連接庫

CefGlue依賴的CEF的 版本支持 請參考 http://xilium.bitbucket.org/cefglue/ 。CefGlue當前支持的CEF的最新版本爲3.1650.1503,也就是當前的CEF的最新版本(不算開發分支),下載地址爲 http://cefbuilds.com/ 。瀏覽器

CEF同時提供Linux、Mac、Windows平臺的x8六、x64版本,本做者全部的實驗均在Windows平臺完成,使用的系統爲 Windows8 x64 。若是你的機器是x64的,那麼x64和x86的CEF版本都可使用。惟一的區別是,若是你使用的是x86的版本,你須要將CefGlue項目的CefGlue.Demo.WinForms 工程屬性下的 Build 選項的Platform target設置爲x86,而非默認的AnyCPU。咱們以x64平臺爲例,假設下載下來的文件件爲cef_binary_3.1650.1544_windows64。

  • 將 cef_binary_3.1650.1544_windows64/Release/ 或者 cef_binary_3.1650.1544_windows64/Debug/ 下的內容拷貝到CefGlue項目下的 CefGlue.Demo.WinForms/CefGlue.Demo.WinForms/bin/Debug/ 目錄下。固然,在實際項目中咱們可能將這些文件拷貝到工程目錄的一個文件夾中,而後使用工程屬性下的Build Event選項將這些文件拷貝到Debug目錄下,具體作法能夠參考 怎麼用CefGlue開發一個最簡單的瀏覽器 。

  • 將 cef_binary_3.1650.1544_windows64/Resources/locales 目錄下的文件拷貝到CefGlue.Demo.WinForms/CefGlue.Demo.WinForms/bin/Debug/locales 目錄下。

 

轉自:http://www.tuicool.com/articles/MZRnqae

相關文章
相關標籤/搜索