博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

史上最小的基于IE内核的多标签、多进程浏览器

Posted on 2011-11-05 11:36  一桶浆糊  阅读(3267)  评论(3编辑  收藏  举报

    大约在四年前,CHROME浏览器刚刚面世不久,我尝试了一下,立即被它简洁的界面所吸引。当时市面上除了它和IE8,还没有多进程浏览器出现,不像现在,各种多进程浏览器横行。正因为CHROME,才激发了我做一个基于IE内核的多进程浏览器出来。大约在3年前,该浏览器完工,并取名Raptor。想验证执行效果的童鞋,可以下载这个资源(不需要资源分);希望了解和学习源码的童鞋,下载这个资源(完整的VC工程源码,可直接编译。需要资源分的哦,不希望自己的代码变成市场里的白菜)。

 

    Raptor 浏览器并不是一个真正成熟的浏览器,还有很多细节没有实现,只是作为一个技术验证工具,用来验证两个目标:一是用IE内核也能做出多进程浏览器,二是用V8脚本引擎替换IE自带的JSCRIPT引擎,用以比较两者的性能差别。关于第二个目标,在本文中并不详述,在下载的资源里也排除了V8引擎。

 

    Raptor 有几个明显的特性:

  • 非常小巧。一个EXE执行文件只有400多K大小,不需要依赖任何其它库。
  • 绿色。不需要安装,不需要注册,不写注册表,删除即卸载。
  • 界面简洁。整个窗口非常干净,只有几个常用的工具栏按钮和浏览标签,外加一个用于提示信息的状态栏,其它窗口空间都留给浏览器自己。操作的入口就是打开一个新标签,所有可用的操作在初始页面里,包括地址栏。
  • 通用插件。插件采用通用方式创建,并使用COM接口。在资源里,未包含用作测试的插件。
  • 多进程互操作。主窗口占用一个进程,所有插件占用一个进程,每个浏览窗口占用一个进程。通过改变编译条件,可以把插件合并到主进程中。

 

    可以从 Raptor 源码中获得下述技术的实现:

  • 如何加载浏览器控件并响应事件。
  • 如何让不同的进程执行不同的功能。
  • 如何通过 COM 技术实现多进程互操作,它不一定是最佳的多进程通信方式,但一定是最简洁的。
  • 如何实现进程外COM组件的免注册和启动。
  • 如何注册自定义的MIME协议。在 Raptor 的实现中,注册了 raptor: 协议。事实上,在地址栏输入“raptor:newtab”可打开新建标签页面,“raptor:history”可打开浏览历史页面,“raptor:product”可打开自我介绍页面。
  • 学习具有AERO效果的TAB控件,可以在TAB标签的左右加入工具栏按钮。源码实现中的TAB标签的绘制图片完全来自CHROME,本人不是美工,做不出漂亮的图片,只好出此下策,希望谷歌海涵,呵呵。
  • 工具栏按钮有一点小的动画效果,其它的没什么东东值得说的……

 

    这是浏览器的一些截图。

新标签默认页面:

 

Raptor 自述页面:

 

历史浏览记录页面:

 

多进程证据: