OpenOffice_org系列讲座(二)

本文详细介绍了OpenOffice.org的技术架构,包括其分层架构、UNO组件模型、基于IDL的API和SDK。OpenOffice.org采用C++作为主要编程语言,通过系统抽象层实现了平台无关性,确保在多种平台上运行。文章还提到了OpenOffice.org的源代码模块功能描述,以及各层的功能,如系统抽象层、基础设施层、构架层和应用层,展示了其跨平台和可扩展性。
摘要由CSDN通过智能技术生成
  1. OpenOffice.org技术架构

上一篇简单介绍了OpenOffice.org的发展轨迹、许可证问题、应用范围等情况。实际上,OpenOffice.org之所以获得如此广泛的应用,是与它本身优秀的技术架构,开放、可扩展、标准化的XML文件格式规范,以及社区成员的广泛参与密不可分的。

本篇将主要介绍OpenOffice.org的技术体系结构,它的分层架构、UNO组件模型、基于IDLAPISDK,以及UNO与其它组件模型的互操作。

  1.  
    1. 分层架构

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

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

1OpenOffice.org的分层架构图,总体上分为四层,每层由若干不同的子层/库组成,在图中用小方框表示。每层和每个子层/库都完成不同的功能。需要注意的是每个子层/库很可能不是对应于具体的某个源代码模块,而是相关的若干个模块。因为OpenOffice.org的源码模块众多,刚发布的时候还不到100个代码模块,而最近发布的OpenOffice.org 1.1.2已经到了150左右。模块之间的相互依赖关系可能是很复杂的,而且随着版本发布的更新不断有变化。所以从总体上把握OpenOffice.org分层模型的功能结构和依赖关系对于掌握整个OpenOffice.org的技术架构是很有帮助,也是至关重要的。

框1

1OpenOffice.org 1.1.2源代码模块的功能描述表。在约150个模块当中,有将近30个模块是从其它开放源码社区获得的源代码。这些模块依照字母顺序排列,它们的功能描述尽管比较粗略,也会对理解整个OpenOffice.org的体系结构很有帮助。需要注意的是不同版本的OpenOffice.org包含的模块数目可能有不同,或有增删,而且有些模块也正在变更当中。

大致上讲,

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

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

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

  • 应用层(Application Layer)提供所有的OpenOffice.org应用,这些应用的交互方式是基于若干底层的。

2OpenOffice.org 1.1.2源代码模块依赖关系树状图。这张图所描述的是OpenOffice.org中各个模块的编译依赖关系,实际的模块编译顺序也是根据这个依赖关系产生的。从图中我们大致可以看出OpenOffice.org的分层结构。最底部比较密集的区域是系统抽象层,在此之上非常密集的区域内的模块组成基础设施层,上部比较稀疏的区域是构架层,最顶部的若干模块组成应用层。

下面逐层描述它们的功能。

  1.  
    1.  
      1. 系统抽象层

分层的系统架构是OpenOffice.org能够轻松移植到广泛而不同的系统平台上的重要因素之一。为此目的,OpenOffice.org架构中特别定义了一个称作“系统抽象层”的虚拟层。所有平台相关的实现都在这一层下发生,或者作为可选模块存在。所以理想状况下只要实现了系统抽象层提供的功能再把上面诸层所属的模块重新编译,OpenOffice.org就能够在新的平台上运行了。但如果想要实现所有功能,可选的平台相关模块也要进行移植。为了减少移植工作量,系统抽象层所提供的功能被缩减到每个平台上可用的最小集合。当然在某些平台上系统抽象层必须模拟某些不存在的功能,比如在没有本地多线程的环境下支持“用户境”线程。1

系统抽象层包括如下四个子层/库:

  • 操作系统层(Operating System LayerOSL)封装了用来访问和使用系统资源(例如文件、内存、套接字、管道等)的操作系统功能。OSL是具有面向对象API的很薄的一层,和上层不同的是这里的面向对象APIC语言实现的APIC语言API的优势在于允许将该层用不同的实现语言移植到不同的平台上去,比如对于嵌入式系统或者互联网应用设备来

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值