【转】.NET多种WebKit内核/Blink内核浏览器初步测评报告
第1篇:.NET多种WebKit内核/Blink内核浏览器初步测评报告
本文转自“吾乐吧软件站”,原文链接:http://www.wuleba.com/?p=23590
报告研究时间:2013-10-29——2013-11-04
报告结论意见:Xilium.CefGlue 是最好的.NET WebKit内核浏览器,用它来做二次发开效果是最好的!
感兴趣的,可以加入:WebKit/Blink 内核浏览器开发 QQ交流群:244840771
开发语言为:.NET/C++ 方向
第2篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:导航篇
星级 名称 语言 版本 优点 缺点
★★ Chromium Embedded Framework (CEF) C/C++ 3.1547.1406
1、开源项目,有社区支持 1、C++更新维护成本太高
2、一直都还在更新维护 2、开发难度较大
3、基于CEF二次开发项目多
★★★★ Xilium.CefGlue C# 3.1547.1448
1、基于CEF,DotNET封装 1、参考资料较少
2、继承CEF优良特性 2、可能有些大坑,需要自己解决
3、无需安装多余组件,直接可用 3、已知JS调C#方法,但方法很繁琐
4、CSS3、JS、HTML5 效率高
5、已成功封装类库 Binding’s CLR Object
★★★☆ CefSharp C# 1.25.5
1、基于CEF,DotNET封装 1、要求手动安装VC2012组件
2、继承CEF优良特性 2、此项目是C++与C#混合开发
3、可以实现JS回调C#方法 3、网页加载中关闭,进程不退出
4、CLR OBJ 与 JS 交互非常强 4、CSS3与JS效率比CefGlue略低
5、官方提供的资料比较有用
★ O.N.E C#/VB.NET/DELPHI/C++ 534.x
1、官方提供一定文档资料 1、收费
2、内核、开发语言较全 2、主要是VC资料,C#较少
☆ Node-Webkit C++/JS/HTML5 0.8.0
1、跨平台 1、资料极少
2、用Web技术编写桌面应用 2、学习成本极高,与项目不符
★★ WebKit.NET C# 0.5
1、很多资料都是基于这个开发 1、作者已在2010年停止更新
2、要求手动安装VC2005组件
3、要求安装Apple QuickTime
★★★ Open-Webkit-Sharp C# 3.0.1.0023
1、基于WebKit.NET 0.5开发 1、内核较老,日后可能有问题
2、可以实现JS回调C#方法 2、要求手动安装VC2005组件
3、用法与WebBrowser相似 3、要求安装Apple QuickTime
4、学习成本相对较低,易上手 4、源码编译缺少组件,无法调试
5、只能调用他的DLL进行二次开发
6、低版本内核显示字体有点怪
要点说明:
01、Open-Webkit-Sharp 默认不存在JS对话框,如果需要显示alert box,则需要在ShowJavaScriptAlertPanel进行捕捉,然后显示对话框;
02、Open-Webkit-Sharp 内核较老,所以显示的字体会比较粗(旧版本就是如此),可通过webKitBrowser.Appearance.FontSmoothing缓解,暂时无法根治;
03、以上所有的项目,都必须在X86环境下,才能正常工作,否则运行直接报错;部分项目还需要取消勾选“启动Visual Studio承载进程”;
04、从长远上说,应该选用Xilium.CefGlue,但是这个苦于无法解决“JS调用C#方法”问题,因而被迫选择Open-Webkit-Sharp作为折中方案;
05、在XP环境中,Xilium.CefGlue的JS对话框与默认主题冲突,会错位,换主题可解决;
06、Open-Webkit-Sharp 需要依次安装VC2005、VC2008、VC2010组件之后,才能正常工作,否则会有各种报错;
07、CefSharp 需要安装VC2012 x86 11.0.60610.1组件才能运行,必须是这个版本,其他一律没用;编译代码时需要重新设置“平台工具集”,改成支持XP模式;
08、CefSharp 网页加载过程中(未加载完毕),如果这个时候退出程序,则会导致进程无法退出;此外XP环境下存在较严重的进程不会退出问题;
09、CefSharp 对于CSS3、JS的解析效果不如Xilium.CefGlue,两者相比,会发现CefSharp比较慢、会卡、有细微停顿等问题;
10、Xilium.CefGlue 已经解决“JS调用C#方法”问题,但是需要把JS代码写在程序后台,实现起来非常繁琐,很不灵活;
11、Xilium.CefGlue 已成功封装类库 Binding’s CLR Object,现在只需定义变量名称,然后new class(),就可完成全自动绑定,不再需要后台写JS,非常方便;
12、只要是基于CEF开发的项目,都必须安装NPAPI版本的Adobe Flash组件,否则不能播放动画。Chrome系统默认安装的是PPAPI版本,如果用命令行注册,也可以支持。
下载地址:2016年4月10日 此项目所有源码,以及文档正式开源 244840771 加QQ群下载
【转】.NET多种WebKit内核/Blink内核浏览器初步测评报告的更多相关文章
- 基于Gecko内核的简单浏览器实现
分享一个基于Gecko内核的简单浏览器实现过程. 项目需要需要开发一个简单浏览器,由于被访问的网页中有大量Apng做的动画,使用IE内核的webbrowser不能播放,使用基于WebKit和Cefsh ...
- 如何搞定IE+google双内核的360浏览器表单自动回填兼容问题
最近开发中碰到一个关于表单问题,在用户提交表单时候浏览器会提示是否保存帐号 如果点击保存,在退出帐号切换其他帐号时,浏览器会自动为表单填充数据,为了解决这个自动填充问题时, 主要分2个思路来解决,一个 ...
- js/jQuery判断浏览器名称、内核版本、浏览器壳
1.js方法 /* 判断浏览器名称和版本 目前只能判断:ie/firefox/chrome/opera/safari 2012年5月16日23:47:08 浏览器内核UA:UA; 浏览器内核名称:NV ...
- Linux设备驱动开发详解-Note(5)---Linux 内核及内核编程(1)
Linux 内核及内核编程(1) 成于坚持,败于止步 Linux 2.6 内核的特点 Linux 2.6 相对于 Linux 2.4 有相当大的改进,主要体现在如下几个方面. 1.新的调度器 2.6 ...
- Linux内核之 内核同步
上文我们介绍过进程调度,Linux内核从2.6版本开始支持内核抢占,所以内核很多代码也需要同步保护. 一.同步介绍 1.临界区与竞争条件 所谓临界区(critical regions)就是访问和操作共 ...
- 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程
实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. ...
- Linux 内核开发—内核简单介绍
内核简单介绍 Linux 构成 Linux 为什么被划分为系统空间和内核空间 隔离核心程序和应用程序,实现对核心程序和数据的保护. 什么内核空间,用户空间 内核空间和用户空间是程序执行的两种不同的状态 ...
- 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统
1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: bootcmd=nan ...
- Linux 内核开发 - 内核定时器
时间差的度量 系统的定时器硬件以固定的频率产生时钟中断,产生始终中断的间隔以HZ 常量来决定,通常在50~1200之间,x86默认是1000.HZ能够依据不同的内核来配置. Linux 採用jiffi ...
随机推荐
- My_Python的常用函数.
范围生成函数 class range(object) | range(stop) -> range object | range(start, stop[, step]) -> range ...
- BZOJ 2501 Soda Machine
BIT+离散化. #include<iostream> #include<cstdio> #include<cstring> #include<algorit ...
- 练手CF3-C - Wormhouse
深搜,亮点在那个剪枝,flag代表是否搜索数组从开始到当前一直等于原始数组同位置的数,如果是真,就从原始数组的当前位置的书开始搜,否则就从0开始搜. 见代码. #include <iostrea ...
- Codeforces Round #365 (Div. 2)-D Mishka and Interesting sum(树状数组)
题目链接:http://codeforces.com/contest/703/problem/D 思路:看了神犇的代码写的... 偶数个相同的数异或结果为0,所以区间ans[l , r]=区间[l , ...
- AD管理命令
repadmin /showrepl 显示复制协议 dcdiag /test:dns
- ASP.NET 中DataGrid item 绑定方法
<Columns> <asp:TemplateColumn HeaderImageUrl="../../Images/delete.GIF"> <He ...
- magento缓存系列详解:clean cache
cache是一个很大的概念,涉及的内容方方面面,magento cache是基于zend的,如果你对zend cache理解很深的话,相信magento cache也不再话下,本篇文章着重介绍Flus ...
- Http方法:Get请求与Post请求的区别
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改Get请求的参数会跟在url后进行传递,请求的数据会 ...
- PHP header() 函数详细说明(301、404等错误设置)
原文来自:http://www.veryhuo.com/a/view/41466.html 如果您刚刚开始学习PHP,可能有许多函数需要研究,今天我们就来学习一下PHP Header()的使用方法,更 ...
- 《JavaScript模式》第1章 简介
@by Ruth92(转载请注明出处) 第1章 简介 模式 模式:是指一个通用问题的解决方案. 设计模式 编码模式 反模式:常见的.引发问题比解决的问题更多的一种方法. JavaScript 基本概念 ...