基于.net開(kāi)發(fā)chrome核心瀏覽器【二】
一:
上一篇的鏈接:
基于.net開(kāi)發(fā)chrome核心瀏覽器【一】
二:
相關(guān)資源介紹:
chrome Frame:
讓IE有一顆chrome的心,看起來(lái)不錯(cuò),但我沒(méi)有深入研究這個(gè)東西。
http://www.google.com/chromeframe?hl=zh-CN&quickenable=true
https://developers.google.com/chrome/chrome-frame/
WebKit.Net
已經(jīng)有一段時(shí)間沒(méi)人更新這個(gè)開(kāi)源項(xiàng)目了,沒(méi)有研究過(guò)
http://sourceforge.net/projects/webkitdotnet/
CEF
研究過(guò),很不錯(cuò)的類庫(kù),但是是C和C++寫的
https://code.google.com/p/chromiumembedded/
http://www.cnblogs.com/think/archive/2011/10/06/CEF-Introduce.html(園友譚振林寫的相關(guān)文章)
Xilium.CefGlue
基于CEF,用.net包裝過(guò),很不錯(cuò),我就用的這個(gè)類庫(kù)(Xilium.CefGlue/3)
https://bitbucket.org/xilium/xilium.cefglue/wiki/Home
O.N.E
國(guó)內(nèi)的人開(kāi)發(fā)的,沒(méi)研究過(guò),貌似收費(fèi)的。
node-webkit
園子里的人開(kāi)發(fā)的,非常不錯(cuò)的點(diǎn)子,node和chromium的結(jié)合,贊
https://github.com/rogerwang/node-webkit/
http://www.cnblogs.com/zhchbin/
qt
我在這方面花費(fèi)了大量的時(shí)間和精力,結(jié)果是一個(gè)坑跟著一個(gè)坑,但到現(xiàn)在還是不忍放棄
http://qt-project.org/downloads
另外
這里說(shuō)到的很多資源都是園友在上一篇文章中提到的。
謝謝你們。
三:
CEF有兩個(gè)版本,CEF1和CEF3
CEF1是單進(jìn)程的,實(shí)現(xiàn)了更多的特性,內(nèi)存使用更少,與客戶端應(yīng)用更能完美的結(jié)合,使用的是WebKit的API,但是FLASH無(wú)法在這個(gè)框架中正常播放,不支持html5的音頻和視頻,只支持NPAPI插件。關(guān)于NPAPI插件的相關(guān)知識(shí),請(qǐng)參閱這里:http://developer.chrome.com/extensions/npapi.html(好像要翻墻)
CEF3是多進(jìn)程的,使用異步消息的方式來(lái)完成主進(jìn)程和其他進(jìn)程的通信(其他進(jìn)程有可能是Webkit,也有可能是V8的解析引擎進(jìn)程),使用的是 chromium官方的內(nèi)容呈現(xiàn)API,支持NPAPI和PPAPI插件,有一個(gè)單獨(dú)的進(jìn)程用于調(diào)試,相對(duì)于CEF1來(lái)說(shuō),雖然可以播放FLASH等視頻,但是還有很多問(wèn)題沒(méi)有處理掉,社區(qū)里的人認(rèn)為CEF1更穩(wěn)定一些,CEF3的issues列表,請(qǐng)參閱這里:https://code.google.com/p/chromiumembedded/issues/list
我們選用的是CEF3和Xilium.CefGlue,Xilium.CefGlue是對(duì)CEF項(xiàng)目的.net的包裝,它是用P/Invoke的方式來(lái)調(diào)用CEF類庫(kù)的,請(qǐng)參見(jiàn):https://bitbucket.org/xilium/xilium.cefglue/wiki/Home
還有一個(gè)CEFSharp的項(xiàng)目,是用C++/CLI的方式來(lái)調(diào)用CEF類庫(kù)的,請(qǐng)參見(jiàn):https://github.com/chillitom/CefSharp
四:
下載最新版的CEF的動(dòng)態(tài)鏈接庫(kù)
下載地址為:http://xilium.bitbucket.org/cefglue/
一定要在這個(gè)頁(yè)面來(lái)下載!因?yàn)橹挥羞@個(gè)頁(yè)面給出的動(dòng)態(tài)鏈接庫(kù)才是Xilium.CefGlue所支持的
目前看到的是3.1353.1236版本(我沒(méi)有下載debug版本的)
五:
下載最新的Xilium.CefGlue代碼
下載地址:https://bitbucket.org/xilium/xilium.cefglue/overview
右側(cè)點(diǎn)“下載”就可以了
六:
把下載到的兩個(gè)壓縮包都解壓縮
把\cef_binary_3.1453.1236_windows_xilium\Release目錄里的文件復(fù)制出來(lái)
粘帖到:\xilium-xilium.cefglue-50e94efc4182\CefGlue.Demo.WinForms\bin\Debug目錄下
七:
打開(kāi)\xilium-xilium.cefglue-50e94efc4182\目錄下的解決方案文件
把CefGlue.Demo.WinForms設(shè)為啟動(dòng)項(xiàng)目
注意事項(xiàng):
1.
把程序集CefGlue.Demo.GtkSharp卸載掉,
這個(gè)程序集是給mono平臺(tái)用的,你也可以把WPF相關(guān)的程序集也卸載掉
2.
右鍵單擊CefGlue.Demo.WinForms程序集,點(diǎn)屬性,選擇調(diào)試,
取消選中“啟用visual studio承載進(jìn)程”,
因?yàn)镃EF3是基于多進(jìn)程的,VS無(wú)能力承載,所以只有取消掉這個(gè)選項(xiàng)
3.
右鍵單擊CefGlue.Demo.WinForms程序集,點(diǎn)屬性,選擇生成,把目標(biāo)平臺(tái)改成X86
(這一項(xiàng)如果編譯不通過(guò)再來(lái)修改也無(wú)礙)
八:
編譯并執(zhí)行,你就可以看到CefGlue為你寫的DEMO了。
你如果線這個(gè)DEMO里的代碼比較復(fù)雜,你也可以看看CefGlue.Client這個(gè)程序集這個(gè)程序集是個(gè)比較簡(jiǎn)單的DEMO,你也可以按照上面的步驟讓這個(gè)DEMO跑起來(lái)。
九:
上面的DEMO看起來(lái)是這個(gè)樣子的:

在這個(gè)DEMO的samples菜單中有幾個(gè)簡(jiǎn)單的示例
這給開(kāi)發(fā)者提供方便的,開(kāi)發(fā)者在寫自己的程序時(shí),經(jīng)常會(huì)看這幾個(gè)DEMO
但幾個(gè)DEMO實(shí)在是太少了。
十:
打開(kāi)cef_binary_3.1453.1236_windows_xilium目錄中的工程文件
(這才是CEF項(xiàng)目,前面說(shuō)的是基于CEF開(kāi)發(fā)的CefGlue項(xiàng)目)
編譯并運(yùn)行
你會(huì)看到一個(gè)類似這樣的界面:

這個(gè)DEMO中,主菜單中的test是為開(kāi)發(fā)人員準(zhǔn)備的DEMO
明顯比CefGlue要多一些!
如果你有一些C和C++功底(不用很高)也能看懂這里的例子
十一:
說(shuō)實(shí)在的,這個(gè)項(xiàng)目還是有挺多的坑的,我已經(jīng)碰到了好幾個(gè)。
跌跌撞撞總算走過(guò)來(lái)了,我一步一步的把我的經(jīng)驗(yàn)都分享給園友。















 
 
 
 
 
 
 