桌面系统静态界面技术选型——CEF

2016-09-19 10:20:53来源:oschina作者:沉默狮人点击


# 为什么选择CEF
总所周知桌面程序开发主流能数出来的就是MFC,Delphi,JavaSE,WinForm,WPF,QT等,但是他们都有较高的技术门槛,一般人要上手做出高效漂亮的界面来很难。特别是当需要做复杂的配置界面与控制面板类界面有一种来自内心的无力,毕竟这些技术的职业前端都已经很稀少了。
幸好CEF的出现帮助我们解决了这个问题,选它有几个优点:
- 集成快,cef最简单的就是一个浏览器,使用最基础的静态界面+js+界面的Handler就可完成你想要的功能
- 开发快,web前端技术是门槛最低、库最多的界面技术了
- 利于开发各种复杂界面,对于美工的设计与个人的想法都能很好很简单的实现
- 引入了web众多优秀特性
当然它也存在缺点:
- 需要将cef打包进程序,近百来兆
- 熟练的使用需要些时间研究,而官网的文档很简陋,网上的教程很基础
- 对chromium的版本追得不是那么紧
# C#使用CEF——CEFSharp
其他技术接触过但是了解不多,所以无法论述,本系列是对C#下使用cef封装库CEFSharp使用的经验。cef主要使用方式就是将其自带的浏览器添加到程序界面里面,浏览器只做界面呈现,控制全部通过后台代码实现。
## 使用Winform作为载体
在选择Winform前也是走了弯路,因为觉得WPF更加简洁和高效,所以选择了WPF来作为cef浏览器的载体。这样界面配合起来更好用,但是实践后发现一个残忍的事实:
> 最新的51版本对WPF兼容不太好, 运行时界面渲染会出现闪烁。
另外网上的资料和官方的文档大都以Winfrom作为基础讲解,在学习上也更具有优势。
# 资源访问方式
## 网络资源
直接使用浏览器加载初始指定页面即可,界面点击会自动跳转。网上资料泛滥。
## 本地资源
网上资料往往因为作者只是浅尝则止和文章抄袭,形成了一个误区:
> *“CEF不能打包本地资源(html、js、css、img),只能将其暴露在程序路径下”*。这句话是错误的!
这是种观点是错误的,使用基础的方法通过相对路径+注册类给浏览器的方式确实不能将其打包。但是将资源添加到程序资源中,通过SchemeHandler包装请求与响应的方式可以将二进制资源以流的形式提供给cef浏览器访问(具体方法后面专文讨论)。总的来说,将程序打包是可行的,了解技术使用Google不要被百度的一大抄的文章欺骗。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台