CEF3可行性
顾名思义,内嵌式CHROME,详细的介绍参阅
http://yogurtcat.com/posts/cef/hello-cef.html
为什么要考虑选择CEF
1、 目前市场上浏览器种类很多,每种的版本也很多,即使我们使用了成熟的UI框架也不能保证每个JS在每种浏览器上都成兼容,程序员也不可能在各种浏览器上调试后再发布
2、 一卡通涉及本地硬件资源操纵(如串口、USB、局域网、UKey),传统方法是制作ActiveX控件,让控件与JS进行交互,这种方法比较脆弱,且安装麻烦,最关键:一般只在IE上正常工作,多数浏览器不能稳定支持ActiveX
参阅:
http://mozilla.com.cn/post/35931/
http://activex-for-chrome.softonic.cn/
CEF在一卡通上如何应用
1、 不需要操纵本地硬件资源的操作员(如增删改查数据、查看报表),可以继续直接使用浏览器访问平台(仍然可能存在兼容性问题)
2、 通过发布安装包,以WINFORM的方式在本地运行程序,固定使用某个版本的CEF,相当于固定使用了某个版本的浏览器,规避兼容性问题。即在一个CS程序中嵌入了浏览器,但平台仍然是以BS为主。
3、 需要操纵本地硬件资源时,由JS通过HTTP向WINFORM(开有HTTP监听)传递消息,执行相关功能,即将原来ActiveX的功能迁移到winform中,规避浏览器兼容ActiveX问题以及解决ActiveX执行不稳定(以及性能低下)的问题
4、 使用VS2013提供的net native功能,将winform程序本地化,提升执行效率,保护软件不轻易被破解。
案例
一卡易就使用了类似的技术
DEMO
提供一个网页,内置2个函数,一个供C#调用,一个通过HTTP调用C#
在CEF程序中打开这个网页,执行相关功能,如下图:
l 点击网页中的第一个按钮
l 点击WINFORM中的TOOL菜单 中的测试菜单
点击页面中的第三个按钮,通过AJAX异步HTTP访问WINFORM
(目前CEF3还不支持直接回调WINFORM,早期的CEF1支持,将来也应该会支持,但是回调不如HTTP访问灵活)