深入了解OpenOffice.org之一——技术架构

豆豆网   技术应用频道   2007年03月12日  【字号: 收藏本文

本文详细介绍深入了解OpenOffice.org之一——技术架构

  OpenOffice.org正在全球获得非常广泛的应用。这与它本身优秀的技术架构,开放、可扩展、标准化的XML文件格式规范,以及社区成员的广泛参与密不可分的。OpenOffice.org的分层架构、UNO组件模型、基于IDL的API和SDK等都是使其获得广泛应用和好评的技术优势所在。

  本文主要介绍OpenOffice.org的发展轨迹、若干易产生误解的问题、OpenOffice.org的应用概述、社区的结构和运作机制、志愿者和团体参与社区建设的途径、社区的通讯和协作方式,以及与之关系较为密切的若干开源软件社区;OpenOffice.org的技术架构、编程语言、组件对象模型、应用程序接口、二次开发包以及与其他组件的关系;

  OpenOffice.org的XML文件格式规范、基于XSLT的文件过滤器、与OASIS Open Office XML格式的关系。希望能够通过这些介绍,使开发者对OpenOffice.org的技术特点有更深入的了解,有更多的志愿者参与到OpenOffice.org社区的建设中来,共同推广OpenOffice.org的发展与应用。

  OpenOffice.org本身优良的性能促进了它的应用。现在世界范围内几乎所有的Linux发行版都附带了OpenOffice.org或其衍生软件。OpenOffice.org的使用者还建立了一些组织和网站来推广OpenOffice.org的应用,比如OpenOffice.org文档项目、OpenOffice.org论坛、关于附件和模板的OpenOffice.org Extras、关于宏的OpenOffice.org Macros、OpenOffice.org帮助在线、Taming OpenOffice.org。

  GetOpenOffice.org、ByteBot.net、ClueSheets、Itrainonline和Digital Distribution等网站也已经开始提供OpenOffice.org的在线培训服务。

  网上书店上关于OpenOffice.org的使用类书籍已经有几十本,并且还在不断增加。关于OpenOffice.org的技术类书籍也已经出版了一些,例如关于XML文件格式要义的《OpenOffice.org XML Essentials》和《OpenOffice.org Macro Explained》。

  实际上,OpenOffice.org之所以获得如此广泛的应用,是与它本身优秀的技术架构,开放、可扩展、标准化的XML文件格式规范,以及社区成员的广泛参与密不可分。

  这里扼要介绍一下OpenOffice.org的技术体系结构。

  分层架构

  OpenOffice.org所基于的技术架构能够提供在Unix和类Unix系统上丰富的办公软件功能,并且这种架构能够被移植到其他很多的平台上。这是因为整个架构就是在平台无关性的思路下实现的。

  整个OpenOffice.org中实际上只有不到10%的代码是与平台相关的,这些代码为上层的组件模块提供一个系统抽象层。由于C++编译器存在于每一个主要平台上,所以OpenOffice.org采用了C++作为主要的编程语言(最底层的部分代码由于效率等原因是C语言编写的)。这种实现方式允许OpenOffice.org移植到非常广泛的不同的平台上,采用面向对象语言也使得OpenOffice.org具有面向对象的技术架构。

  图1是OpenOffice.org的分层架构图,总体上分为四层,每层由若干不同的子层/库组成,在图中用小方框表示。每层和每个子层/库都完成不同的功能。需要注意的是每个子层/库很可能不是对应于具体的某个源代码模块,而是相关的若干个模块。

  图 1 OpenOffice.org的分层架构图

  OpenOffice.org的源码模块众多,刚发布的时候还不到100个代码模块,而最近发布的OpenOffice.org 1.1.2已经到了150左右。

  模块之间的相互依赖关系可能是很复杂的,而且随着版本发布的更新不断有变化。从总体上把握OpenOffice.org分层模型的功能结构和依赖关系,对于掌握整个OpenOffice.org的技术架构是很有帮助,也是至关重要的。

  分层简介

  在OpenOffice.org 1.1.2源代码模块的约150个模块当中,有将近30个模块是从其它开放源码社区获得的源代码。需要注意的是,不同版本的OpenOffice.org包含的模块数目可能有不同,或有增删,而且有些模块也正在变更当中。

  大致上讲:

  ◆系统抽象层(System Abstraction Layer)封装了所有系统相关的API并提供了共同的面向对象的API以平台无关的方式访问系统资源;

  ◆基础设施层(Infrastructure Layer)构建应用程序同平台无关的环境,为了向上提供组件和服务,这一层完整地包含了面向对象平台所需面向对象API的很多方面,包括组件模型、脚本解释、复合对象等等;

  ◆构架层(Framework Layer)为在不同应用间能够实现复用,提供每个应用和所有共享功能(例如公共对话框、文件访问或者配置管理等)所需的架构和环境;

  ◆应用层(Application Layer)提供所有的OpenOffice.org应用,这些应用的交互方式是基于若干底层的。 OpenOffice.org的分层架构、UNO组件模型、基于IDL的API和SDK等都是使OpenOffice.org获得广泛应用和好评的技术优势所在。

作者:路广    责编:豆豆技术应用

正在加载评论...