天天看點

首次接觸CefSharpCefSharp

無疑是我最拿手的開發工作。可是作為一個想成為全能騎士的程式員

首次接觸CefSharpCefSharp

,當然要能滿足各種開發需求。 但是界面這種東西不讓我用前端來做心裡會很憋屈的

首次接觸CefSharpCefSharp

。是以在各種需求面前我都會找是否能與HTML混合開發。

我使用過的混合開發平台

C# WebView

追溯到最早我的混合開發還是在C#中。使用的是WebView控件,在布局中加入一個WebView, 然後很友善的就可以和控制浏覽器一樣控制它。不過它有一個很大的問題,浏覽器核心使用的是系統核心。使用IE問題并不大, 但是無法控制版本就會導緻在不同系統中運作效果不同,如果做桌面應用還需要那麼大費周章做相容是很煩人的。 當然,優點也不是沒有,控件這種形式很容易控制,很容易做多标簽頁這種東西,而且互相不幹擾。

nw.js

接觸到第二個這種開發模式的就是nw.js了,在我剛接觸的時候它還叫node-webkit。這是一個讓我豁然開朗的開發平台, 以Node.js為基礎開發可視化桌面應用,整個程式就是以JS來控制。它是以Webkit作為核心運作的, 因為有着自己的核心是以在不同的環境下可以有着相同的效果。它可以輕易的使用node.js的功能和JS擴充, 不過C++擴充就搞得我有點懵逼了。

首次接觸CefSharpCefSharp

自己編寫C++擴充更是從來沒成功過(不過我的C++b本來就不熟悉)。 兩次自定義桌面都是使用nw.js來做,不過窗體句柄操作是寫的外部程式通過nw.js調用而并非擴充。

Adobe AIR

Flash是一個我一直希望它能發展的東西。在很多遊戲平台總是能看到很多國外大神們的優秀Flash遊戲作品。 這也是讓我體會到了開發工具不分好壞,隻有是否合适之說。Adobe AIR是使用Flash AS3來開發桌面應用的工具, 它所給出的功能在我看來并不亞于node.js,并且Flash在流媒體上有着較大的優勢。在Adobe AIR中有一個HTMLLoader控件。 就如同C#的Webview一樣是一個控件,不過差別在于它使用的是自己獨立的核心。雖然它說支援到HTML5但是實際上差距比較大, 對canvas和svg這樣的html5核心标簽并不支援,并且部分表單樣式上差異較大。不過它可以跨平台,并且支援度還不錯, 曾經用它開發過安卓通過wifi控制列印機的app。

PhoneGap

前面介紹的都是以桌面開發為主的混合開發平台,而PhoneGap則是主要開發移動端的混合開發平台。 因為沒有IOS機,是以不清楚IOS方面的問題。在安卓端這邊的話使用的是webkit核心,測試下應該是使用系統自帶的核心, 在不同機型上會有不同的效果,且安卓4.3和安卓4.4差距天壤之别。不過可以使用crosswalk擴充來達到效果的統一和優化 (使用後效果将有很大差距),但是APP的容量一下子增加了18M左右。作為安卓混合開發的話就現在的使用體驗我覺得該架構算是最佳選擇。

CefSharp

首次接觸CefSharpCefSharp

CefSharp是我最近接觸到的一個C#的HTML混合開發擴充,至于為什麼接觸了那麼多桌面混合開發平台還會學這個擴充, 最主要還是因為各有所長吧。在大部分的需求中開發桌面應用我應該都是首選nw.js的,但是CefSharp卻可以彌補nw.js對于我而言的短處。 我并不會很好的開發nw.js的C++擴充,但是很多時候我開發桌面應用都離不開windows API。比如句柄和記憶體操作(做外挂

首次接觸CefSharpCefSharp

) 、比如序列槽通訊(物聯網)這些方面,我更願意直接使用C#來編寫。

嘗試配置CefSharp

跟着網上的教程,我試着配置了一下CefSharp

1.首先我将我還在用的vs2012更新到了2013(貌似最新版需要)

2.建立一個WindowsForms項目

3.右鍵進入NuGet管理器,安裝CefSharp擴充

首次接觸CefSharpCefSharp

4.這裡遇到了和網上不一樣的問題,我現在實際上并沒有引入到CefSharp擴充,但是項目下面出現了packages檔案夾。 在VS中手動引入CefSharp.Common和CefSharp.WinForms檔案夾下相應系統的dll檔案,這樣就成功引入内容了。

5.在Forms初始化内容中寫入如下代碼

CefSharp.Cef.Initialize(); ChromiumWebBrowser wb = new ChromiumWebBrowser("http://www.360.com/"); wb.Dock = DockStyle.Fill; this.panle.Controls.Add(wb);

6.此時的我還是無法運作,在經過一番查找之後發現還需要其他内容的支援,我将packages檔案夾下另外兩個檔案夾中x64系統的CEF檔案打開。 将内容複制到Debug檔案夾下,并把x64檔案夾裡的dll剪切到Debug根目錄。倒騰了好一會總算是成功運作。

一些需要注意的東西

成功之後嘗試着做了一些開發,發現了一些問題

1.實際使用時API和網上的一些教程不太一樣,應該是新版本的原因。

2.推薦在切換位址時進行URLencode,我的本地路徑中有特殊符号#導緻頁面打不開,調試了一下才發現是這個問題。

3.載入本地HTML貌似不能使用相對路徑

文章為原創内容并且是個人觀點和見解,如有錯誤或問題歡迎指出

本文的位址為 :  http://evillcg.com/blog/item/1463048277/

首次接觸CefSharpCefSharp
首次接觸CefSharpCefSharp
首次接觸CefSharpCefSharp
首次接觸CefSharpCefSharp
首次接觸CefSharpCefSharp