一直以来,我非常的希望,可以有自己的万维网浏览器 --- 一个有别于现有的……万维网浏览器。
09年初我做一个浏览器应用项目的时候,遇到了一个问题 --- 为何WebBrowser控件功能如此的有限,其稳定性与我要求的有差距?于是,我开始花时间找出原因,终于,我看到了一个名字 --- trident(虽然这个名字我最先想起的是以前某显示卡芯片、继而想到的是希腊神话里的海皇波塞冬……)。才发现,原来trident浏览器引擎(IE 使用的mshtml的代号)还有很多我未知道的地方:接口、结构、Winapi等等。
突然一大堆的新概念出现在我的面前,还好我已成功地学会了c#语言。在互联网络上,我找到了很多关于trident的信息(c#和vc差别不算很大很大),花了几个月的梳理和调试,最后基本明白到一个道理 --- trident还是不能满足我的要求 --- 稳定性。
这时,已经是初夏,我依然很想做好之前的那个浏览器应用项目,但是对trident的了解越多,遇到的迷惑也越多。在六月的某个中午,我把腰闪了(~ 痛)。也就在那个休息的星期,我找到gecko引擎(Firefox使用的引擎),由于当时对.NET了解还是不多,尤其对com和interface的使用体验有限,又花了2个月学习gecko,最后又发现了一个道理 --- 虽然gecko稳定,但是兼容性不如trident,而且我的vc没学好,学习c#越多,对c#开发环境的依赖性越深。但此时回头再研究trident,又了解多了一点。
到了8月份,我终于找到了webkit引擎入门(Safari使用的引擎),也由于之前在trident和gecko方面的研究,相对较轻松地了解到webkit的门径。觉得webkit很好(当时的第一印象),因为,无论是其文档(不像msdn和mozilla上的那样深奥和纠结),还是模型的定义方面都较容易理解,这时又一个事情我必须做的 --- 学习vc,唯有唤醒心里不大想唤醒(其实早该如此的)c++和java初学时的记忆,其实我是明白winapi的一点点知识的,于是在vs2005、 vs2008、cygwin等环境中切换来回数次。
到了9月份,我又有了新的想法,对比trident、gecko和webkit,其实还有很多我未知的信息隐藏其中。但是怎样才能让它们对齐我的开发要求呢?唯有向着一个标准的浏览器模型努力,但是三者的命名空间、创建、消除等逻辑大相径庭,这时候,我想,定一个模型,采用单一的命名空间,让三个引擎都重新映射在其中 --- ONE 就这样诞生了!
其实ONE这个名字还是最近两个月才琢磨出来的,9月-12月之间游走于三个引擎之间的体验真是难忘啊(现在每几天就来回逛逛)!还好,现在基本的部分已经找到北了。
毕竟,ONE是我的一点总结,只是一个浏览器的.NET接口引擎,不算一个商业浏览器,也无法跟它们相比,不过,我相信会有它的作用的。
这样一折腾就大概一年了。