源代码开放浏览器设计与实现
[10-10 20:38:44] 来源:http://www.88dzw.com 其它电路 阅读:8758次
文章摘要:有段时间,我们还曾考虑过Mozilla, 它是继网景浏览器之后推出的一种源代码开放浏览器,但最终因反对声过多而放弃了它,只因为Mozilla过于庞大了。Mozilla 版本的GTK+窗口部件(不包括邮件、新闻等)在不装入任何网页的情况下需要多达12M字节,这比目前的ViewML浏览器要大6倍。GTK+窗口部件集合也很大,与FLTK的100k相比,它至少有2M字节。www.88dzw.com易置换的类集到目前为止,在考虑使用那一种窗口部件时,争论最多的是KDE 1.0窗口部件使用的QT窗口部件集合。如果我们可以对最初的设计目标做一些妥协,那么QT窗口部件将由于好几种理由而成为这一方案的一个合乎逻
源代码开放浏览器设计与实现,标签:电路设计,http://www.88dzw.com有段时间,我们还曾考虑过Mozilla, 它是继网景浏览器之后推出的一种源代码开放浏览器,但最终因反对声过多而放弃了它,只因为Mozilla过于庞大了。Mozilla 版本的GTK+窗口部件(不包括邮件、新闻等)在不装入任何网页的情况下需要多达12M字节,这比目前的ViewML浏览器要大6倍。GTK+窗口部件集合也很大,与FLTK的100k相比,它至少有2M字节。
www.88dzw.com易置换的类集
到目前为止,在考虑使用那一种窗口部件时,争论最多的是KDE 1.0窗口部件使用的QT窗口部件集合。如果我们可以对最初的设计目标做一些妥协,那么QT窗口部件将由于好几种理由而成为这一方案的一个合乎逻辑的选择。其中之一是,尚没有MICrowindows版本的QT采用了一种独特的编码风格,它允许用运行在另一工具套件上的改进版类方便地置换原有的类,这一工具套件具有Microwindows和X版本。
这一事实降低了QT API的总体大小,因为我们不再需要所有的类。你可得到一个免费的QT版本作为编码参考。
我们最终选择的是可同时在Microwindows和X上运行的唯一窗口部件集合FLTK,这一工具套件也采用C++编写。选择它的另外一个好处是这一工具套件在对QT API和后端FLTK进行集成时相对较简单。
在选择了核心显示引擎之后,我们创建了一个分层软件体系结构,这一结构严格地定义了每一个浏览器模块以及每一模块应该完成的功能。我们也必须定义一些新模块,一旦开发出更小的模块,或因采用图形化视窗系统而需要对某些模块进行更改,就可以置换旧模块。我们集成的模块包括:浏览器应用层、万维网的WWWLib库、KHTML View和窗口部件模块、QT兼容层、IMLIB 图形库和FLTK应用框架。
ViewML浏览器应用层很小,并完全用C++ FLTK应用框架编写,它提供了基本的图形用户界面布局。我们尽量将这一层做得很小,以便应用工程师能够很容易地为某个特定嵌入式应用环境修改ViewML浏览器,而无需深入了解整个浏览器。在一些嵌入式应用环境中,可能根本没有用户界面,只显示一个全屏幕的浏览器页面。这一层也可以处理网络和本地文件存取需求。
我们选用了万维网协会的WWWLib库来执行所有的异步网络输入/输出和HTTP获得(HTTP get)功能,因为它比较容易使用。我们发现WWWLib库基本上要比实际所需要的大,因此它可能将被改写。不过,就目前而言,它使我们不必在这一专门领域花费太多精力就可迅速获取初始版浏览器的功能。
KHTML View和窗口部件模块由原始的未经修改的KDE 1.0 HTML窗口部件代码构成,这一未经修改的源代码被上层的用户界面应用层调用,仍认为是在和下层的QT应用框架通信。KHTML窗口部件处理所有的HTML语法分析、作图和基本的布局操作,它并不直接处理屏幕滚动或显示框架的操作,而是把这些任务授权给KHTML View去做。
QT兼容性层提供未经修改的HTML窗口部件和FLTK应用框架(而不是QT框架)之间的接口。C++ QT类在这一层被改写,以保持相同的公共接口,这些类包括图形窗口部件(编辑控制、按钮等)、类集及字符串类,用于窗口部件内部通信的非标准QT信号机制不得不从零开始进行编码。所有的类集和字符串类在标准C++库中实现,这些库包括:堆栈、列表、字典(哈希表)和常见字符串类,除了QT在其类集合中使用的新型自动删除机制以外,这些类完全是标准的。
对图象而言,Gnome项目中的IMLIB曾用于X视窗系统,IMLIB库允许实现QT类型图象的显示功能,包括自动检测图象类型、自动缩放图象、以及将图象显示在屏幕上。尽管IMLIB库也有一些不足之处,例如大小,但最主要的缺点是它不适用于Microwindows。因此,对于该环境,我们直接将图形图象支持功能增加到Microwindows中,这样就较好地解决了这一问题,同时使该模块仍保持较小的尺寸,并且允许增加新的图像解码器。
根据视窗系统的不同,可以采用两个不同版本的FLTK应用框架。标准版本的FLTK包括对Win32和X的支持。我们和Microwindows项目开发人员一起将FLTK移植到Microwindows已有的Nano-X API中,这一技术支持允许与Microwindows服务器进行客户-服务器交互,就如同采用Xlib模型一样。由于FLTK和Microwindows都能支持X Window系统,因此它是一个很不错的选择。
《源代码开放浏览器设计与实现》相关文章
- › 源代码开放浏览器设计与实现
- 在百度中搜索相关文章:源代码开放浏览器设计与实现
- 在谷歌中搜索相关文章:源代码开放浏览器设计与实现
- 在soso中搜索相关文章:源代码开放浏览器设计与实现
- 在搜狗中搜索相关文章:源代码开放浏览器设计与实现