本帖最后由 Admenri 于 2023-5-1 23:11 编辑
前言
2018年,我通过水星浏览器接触了CEF,进而接触了Chromium项目,在黑猫奆佬的基础上改出了点东西
2019年,研究了一段时间的CEF,我对水星浏览器的支持库进行了修改。
2021年,在原来模块的基础上,加上了自己(不知道从哪)学来的东西写出了ACF浏览器 (CEF版) 的模块。
2021-2022这段时间被高三压的很紧所以停更了1年。
在2022年下半年我对ACF(CEF)进行了升级,同时也开始了新的项目:ACF (Chromium)
这个项目开始于2023年初,耗时3个月也终于是把稳定版赶了出来(没错除夕还在写代码)
正式介绍
ACF (Admenri Chromium Framework) 基于Chromium项目开发,与Cef是同一层面的框架(不是cef的封装了好耶)
架构信息
下面先放两张新框架的进程模型与线程模型:
进程上采用了与WebView2同款的异步多进程架构,
与COM组件的WebView2不同,新ACF的全部函数支持多线程调用。
代码风格
新ACF因为线程架构的设计原因,支持多种同步方式,得益于新IPC通信的高效,
同步的开销比较小,并且由于事件与接收不在同一线程,所以用户能够在事件中实现同步取值操作。
使用上步骤相较于Cef大幅缩减,同步创建环境,创建用户,
基本上只有浏览器创建需要异步等待。
而且新框架完美支持设置组件库路径,只需要在运行时指定exe的路径即可。
\
同时创建浏览器也会直接返回浏览器对象,可以使用其他方法在线程中同步等待(不影响内部线程继续响应)
在新窗口处理方面,新ACF保持与WebView2一样的简便方法,
无需与Cef一样强制处理浏览器。
操作方面
新ACF由于全部操作都放在主控线程执行,所以用户无需管理子进程的代码,
相比原ACF大大降低了使用门槛。
同时主控进程只负责消息收发,因此占用非常小:
同时因为架构设计原因,进程通信 可以实现32位易语言程序控制64位浏览器进程,
与原ACF限制于易语言32位程序相比可用性大大增加。
内核方面
没错,是直接基于Chromium修改而来的框架,相比Cef的Content API封装,
新ACF则是在完整的浏览器之上做修改而来,支持全部的浏览器功能:
Chromium自带的浏览器WebUI
支持安装Chrome扩展(UI接口计划增加)
与Chrome一样的跑分,这内核版本应该是论坛目前最新的了吧
与.net的dotbrowser相比支持H264 H265视频解码
保留了全部的Chromium的WebUI,实测Cef的ChromeRuntime砍掉了一些。
图为getUserMedia的对话框。
与WebView2也不一样的是,新ACF对浏览器窗口进行了魔改使其能够适应完整的DevTool:
妈妈再也不用担心我找不到想要的功能了。
后记
本人目前还在读大一,所以更新没那么勤,计划是除指纹外其他全部功能免费使用,
另外ACF(CEF)版也会继续更新,后期WebView2也会更新SDK版本。
(这么说要干的事还不少)
新框架为本人几年的心血,绝大部分功能免费使用,所以不爱别伤害
下载
https://admenri.lanzout.com/b0d5iz9ja
密码:2xyp
|