JumuFENG
小狐狸
小狐狸
  • UID37810
  • 注册日期2011-11-18
  • 最后登录2014-06-30
  • 发帖数28
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:2986回复:1

学习记录——Mozilla应用程序框架

楼主#
更多 发布于:2011-11-24 22:09
今天继续在MDN上翻看文章。有一篇叫做Mozilla Application Framework in Detail的文章,我仔细看了。就当我在写读后感吧!呵呵!
文章简述:
Mozilla的UI
提供一种基于XML的语言XUL来定义应用程序的用户接口。使用CSS来设计UI的样式,使用DTD来将应用程序中使用的文字信息本地化。
提供带有多种语言接口的C++库来实现网络、文件系统、内容、渲染等复杂的功能
Gecko渲染引擎
Gecko包含一个HTML和XML解析器,一个DOM实现,一个CSS解析器和样式系统,还有基于CSS和HTML的渲染布局的代码
Gecko有一个跨平台的结构,非常容易的就可以嵌入到其他应用程序,并且是开源的。它和所支持的丰富的web应用程序可以用在任何支持的平台或设备上。
Gecko还要解释并渲染web上的图像,文本以及脚本,可以在任何计算机平台和设备上的应用程序和服务中嵌入gecko以解释、显示并运行网页内容。
Necko网络库
Mozilla的网络库提供了一个可扩展的平台无关的API,可以用在从传输层到表示层几层中。其提供的通用可扩展的获取URL的框架支持常用的协议(http, ftp, file等),并提供了一种插入自定义协议的方式。Necko also provides an abstract "file descriptor" interface for low-level data access.
Necko特性包括异步I/O, 通用磁盘和内存缓存服务,异步缓存DNS解析,web代理以及HTTPS。下面是necko与其子系统之间的交互关系图:

Necko is powerful, stable and robust, with current development focused on performance and standards-compliance. It has gone through extensive field testing and revision to maximize web site compatibility.

XPCOM, 跨平台组件对象模型
XPCOM有如下特性:
 组件管理component management
 文件抽象file abstraction
 对象消息传递object message passing
 内存管理memory management
使用XPCOM ,可以用C++,JavaScript, Python或者其他语言来开发组件。并且这样开发出来的组件可以在Mozilla本身支持的所有平台上运行。(原文:…special bindings have been created, and compile and run those components on dozens of different platforms, including these and others where Mozilla itself is supported)
例如,网络库是一个XPCOM组件的集合,任何mozilla应用程序都可以访问并使用这个库。文件 I/O, 安全机制,密码管理,以及profile也都是独立的XPCOM组件,可以在开发自己的应用程序时使用。
XPCOM的其他特性:
 XPIDL, a language for defining interfaces in a language-neutral way and the XPIDL compiler can create header files, binary type libraries, documentation, and even generate stub C++ code for your component implementations. Tools including various XPCOM manager interfaces, smart pointers, special string classes, and an extensive collection of macros that make your C++ implementations easy to write and extend.
 A special base class, nsISupports, that helps manage object lifetime and reference counting.
 Sample component implementations you can extend and learn from.
 Documentation.
网络服务Web Services
Mozilla包含有内建的对流行web服务标准的支持。所有的服务都可以使用JavaScript来使用。这使得简单的XUL+JS应用程序都可以利用这些服务。
XPInstall, Mozilla的跨平台安装技术

Other Features

我的感悟:
我认为,文章中提到的Mozilla应用程序确实有其方便之处,这也是我们选择基于firefox来开发的原因,我主要是想要在网页加载过程中,对加载的内容进行一些操作。不知道文章中描述的使用XPCOM组件能否完成。这个确实需要研究研究。如果可以,我就直接开发一个组件就OK了。
另外,如果网页加载并显示这个过程是一个或者几个组件共同完成的,那么我又两种方式来处理。要么修改涉及到的组件本身;要么是自己做一个组件来代替这些组件,而在自己的组件中需要的地方调用原来的组件接口。我觉得前面一种方式可行性要高一点。归根结底还是要把源代码吃透。
I would appreciate it if you could leave a comment.
本人研究firefox源代码,目的是编写一个基于firefox内核的应用程序。希望与大家交流,交流群:81424441欢迎加入交流。我的email:zhcbfly@qq.com
The only thing that never changes is change!
JumuFENG
小狐狸
小狐狸
  • UID37810
  • 注册日期2011-11-18
  • 最后登录2014-06-30
  • 发帖数28
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2011-11-24 22:09
几篇介绍mozilla源代码的比较有用的文章
Mozilla Source Code Directory Structure
Source code directories overview
Gecko:Overview
这一篇是wiki.mozilla.org上的,但是MDN上也有其链接。
今天我大概过了一遍这几篇文章,接下来认真看一下,并稍微整理整理。
I would appreciate it if you could leave a comment.
本人研究firefox源代码,目的是编写一个基于firefox内核的应用程序。希望与大家交流,交流群:81424441欢迎加入交流。我的email:zhcbfly@qq.com
The only thing that never changes is change!
游客

返回顶部