在实际项目过程中,我们使用cef和C++交互,肯定不可能像之前文章demo那么简答。但是C++是强类型管理,如果我们按照C++ dll标准规范定义接口,那么将导致我们每次扩展功能的时候都需要修改Cef相关模块。这样会导致维护和扩展性变差。所以定义接口的时候我们需要预定一些条例和规则,然后双方按照规则来。 例如(本例多标签浏览器)我们做了如下约定( CJSHandler::Execute实现约定): 函数调用: 所有请求异步处理。此时我们会进行数据打标投递到Browser进程。 Browser进程处理Msg,处理完成之后投递到Render进程。 消息处理流程: 当然在实际过程中我们应该根据自己的应用场景合理的定制协议约定,这样的话web端,C++端就可以很好的根据协议处理各自业务。(具体可参考demo) |
|