基于CefGlue的桌面应用开发
前言
如果你想使用WEB技術來開發桌面客戶端,并且是想使用的語言也是C#時,那請耐心往下看。使用WEB技術開發桌面客戶端的核心其實就是使用一個能夠獨立運行WEB前端的組件,如WinForm中的WebBrowser,Android平臺的WebView,以及Qt提供的WebView,等等。對于桌面客戶端開發而言,使用WebBrowser空間依賴于客戶端安裝的IE瀏覽器版本,而且IE本身的種種詬病讓人望而生畏。而如今,Chrome瀏覽器突飛猛進的發展大家有目共睹,而且其使用的核心?CEF?和Webkit一樣是開源的。由于Chromium是C/C++開發的,想要在C#中使用需要再次封裝,一些基于Chromium的瀏覽器控件便應運而生。如今,市面上存在的基于Chromium的C#封裝有:
- Xilium.CefGlue
- CefSharp
- O.N.E
- WebKit.NET
- Open-Webkit-Sharp
關于這幾個項目的優劣,?牛A與牛C之間?做了非常細致的比較,請參看?.NET多種WebKit內核/Blink內核瀏覽器初步測評報告?。最終優勝的為?Xilium.CefGlue?。此前,本作者使用過?CefSharp?,感覺很明顯的優點是JS和C#之間的互調非常方便,由于本作者只是使用CefSharp開發一個小工具,所以性能和發布方面的問題暫時未碰到。
值得一提的是CEF有兩個版本CEF1和CEF3。
-
CEF1是單進程的。實現了更多的特性,內存使用更少,與客戶端應用更能完美的結合,使用的是WebKit的API,但是FLASH無法在這個框架中正常播放,不支持html5的音頻和視頻,只支持NPAPI插件。關于NPAPI插件的相關知識,請參閱這里:http://developer.chrome.com/extensions/npapi.html?。
-
CEF3是多進程的。使用異步消息的方式來完成主進程和其他進程的通信(其他進程有可能是Webkit,也有可能是V8的解析引擎進程),使用的是chromium官方- 的內容呈現API,支持NPAPI和PPAPI插件,有一個單獨的進程用于調試,相對于CEF1來說,雖然可以播放FLASH等視頻,但是還有很多問題沒有處理掉,社區里的人認為CEF1更穩定一些。
我們選用的是CEF3和Xilium.CefGlue,Xilium.CefGlue是對CEF項目的.net的包裝,它是用P/Invoke的方式來調用CEF類庫的,請參見:https://bitbucket.org/xilium/xilium.cefglue/wiki/Home。
下面我們就?Xilium.CefGlue?開發桌面應用中需要解決的問題逐一分析。
運行官方Demo
Clone或下載CefGlue
CefGlue的源碼地址為?https://bitbucket.org/xilium/xilium.cefglue/?,里邊除了源碼,還包含Winform和Wpf的Demo。Clone或者下載下來。
下載后,Unload或者刪除其中的?CefGlue.Demo.GtkSharp?項目,這個項目是在Linux平臺使用的。將CefGlue.Demo.WinForms?設為啟動項目。
下載CEF動態鏈接庫
CefGlue依賴的CEF的?版本支持?請參考?http://xilium.bitbucket.org/cefglue/?。CefGlue當前支持的CEF的最新版本為3.1650.1503,也就是當前的CEF的最新版本(不算開發分支),下載地址為?http://cefbuilds.com/?。
CEF同時提供Linux、Mac、Windows平臺的x86、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
轉載于:https://www.cnblogs.com/feelSku/p/10019146.html
總結
以上是生活随笔為你收集整理的基于CefGlue的桌面应用开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java八种排序算法---直接插入排序
- 下一篇: eclipse 更换主题