首次接触CefSharp

无疑是我最拿手的开发工作。可是作为一个想成为全能骑士的程序员,当然要能满足各种开发需求。 但是界面这种东西不让我用前端来做心里会很憋屈的。所以在各种需求面前我都会找是否能与HTML混合开发。

我使用过的混合开发平台

C# WebView

追溯到最早我的混合开发还是在C#中。使用的是WebView控件,在布局中加入一个WebView, 然后很方便的就可以和控制浏览器一样控制它。不过它有一个很大的问题,浏览器内核使用的是系统内核。使用IE问题并不大, 但是无法控制版本就会导致在不同系统中运行效果不同,如果做桌面应用还需要那么大费周章做兼容是很烦人的。 当然,优点也不是没有,控件这种形式很容易控制,很容易做多标签页这种东西,而且相互不干扰。

nw.js

接触到第二个这种开发模式的就是nw.js了,在我刚接触的时候它还叫node-webkit。这是一个让我豁然开朗的开发平台, 以Node.js为基础开发可视化桌面应用,整个程序就是以JS来控制。它是以Webkit作为核心运行的, 因为有着自己的核心所以在不同的环境下可以有着相同的效果。它可以轻易的使用node.js的功能和JS扩展, 不过C++扩展就搞得我有点懵逼了。自己编写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

CefSharp是我最近接触到的一个C#的HTML混合开发扩展,至于为什么接触了那么多桌面混合开发平台还会学这个扩展, 最主要还是因为各有所长吧。在大部分的需求中开发桌面应用我应该都是首选nw.js的,但是CefSharp却可以弥补nw.js对于我而言的短处。 我并不会很好的开发nw.js的C++扩展,但是很多时候我开发桌面应用都离不开windows API。比如句柄和内存操作(做外挂) 、比如串口通讯(物联网)这些方面,我更愿意直接使用C#来编写。

尝试配置CefSharp

跟着网上的教程,我试着配置了一下CefSharp

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

2.创建一个WindowsForms项目

3.右键进入NuGet管理器,安装CefSharp扩展

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/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值