2009年1月5日星期一

[转] GNOME Platform 概述

GNOME Platform 概述 zhangf

1 写在前面的 这篇概述是根据[1]总结而来的。如果想学习和了解gnome,将[1]作为入手的第一篇文章应该是个明智的选择。关于gnome的历史本文不做赘述。

2 什么是gnome 一般提到gnome,我们有两层意思。第一层,gnome是一种桌面环境(desktop enviroment),而且基本上是unix/linux操作系统上的dextop enviroment, 这一层面上类似于KDE,另一种linux上的流行桌面环境。gnome的第二层意思是一种完善的开发平台,也就是说gnome为开发者构建好了一个平 台,提供了丰富完善的支持,开发者可以在这个平台上开发自己的应用,当然尤其使图形应用。对于一般计算机用户而言,提到gnome时往往指的时第一层的意 思。而对于程序员更多的是指第二层面的意思。 Gnome平台是由众多的模块组成的。这些模块可以被划分为三类,核心(Core Tech),进程间通信与网络(IPC and Networking),和桌面(Desktop Tech)。下面分别介绍。

3 Core Technologies 顾名思义,这部分是gnome的核心和基本架构。包括这些部分:Graphical Interfaces, Virtual File System, Configuration and Lockdown, Internationalization, Accessibility, Multimedia, and Printing.

3.1 Graphical Interface(图形接口) Graphical Interface提供向屏幕绘制图形和与用户交互的能力。Gnome的Graphical Interface由几个很出名的模块组成。

GTK+ GTK+提供了丰富的UI(user interface) controls(控件)和widgets(窗口部件)。例如,各种按钮,输入框,和对话框等。更为重要的是,GTK+提供了一套算法,使得增加新的控件有章可循,从而减轻开发者的工作量。

Libglade 通过Libglade可以从XML描述中动态构造用户界面。这使得构造复杂布局的图形接口变得容易。另外对于图形接口生成器之类的辅助编程工具,Libglade也是值得关注的。

Pango Pango是负责处理字体的模块。

GDK -- GIMP Drawing Kit GTK+依赖GDK与系统的图形设备和输入设备打交道。在linux系统上,这通常是对X系统的一层封装。实际中应用程序员应该很少直接用到GDK。

Cairo Cairo是一个能力强大的关于2D Graphic的库。如果你对2D Graphic有较高的或特殊的需求,可能需要熟悉一下Cario。

GLib GLib是一个通用库,它首先提供了对操作系统一般API的抽象和封装,弱化了应用程序源码对操作系统的依赖。例如它抽象定义了自己数据类型,定义了自己 的内存管理。 其次,平台的提供了一组通用工具函数和对通用数据结构的支持。另外,特别重要的是,虽然是用C语言编程的,GLib中却实现了GObject的架构,它引 进了类似C++中class和Interface机制的支持,除了对GObject的支持,GLib中还实现了signal机制。

3.1.2 其它 还有其它一些库也可以归入到Core Technologies这部分。例如, GnomeVFS提供了一个虚拟文件系统(Virtual File System),基于这个VFS的开发不必再具体考虑不同操作系统的文件系统的差异。 GConf库提供了存取配置信息的能力。有点让人想到Windows的Registry,虽然不完全相同。 Gnome提供了对国际化的支持,它的机制这里不赘述,有详细的文档可以研究学习。 ATK框架(Accessibility ToolKit Framework)解决的是Gnome的accessibility问题。 如果对Gnome的多媒体问题感兴趣,CStreamer绝对需要研究。 Gnome中与打印有关的会涉及到libgnomeprintui库和CUPS (Common UNIX Printing System)。

4 IPC and Networking 这部分负责的功能包括进程间通信和网络。

4.1 Clipboards 和 Drag and Drop Gnome的clipboard和Drag and Drop都支持内容协商(content negotation),也就是宿应用和源应用可以动态协商内容的格式,按需传递内容。

4.2 D-BUS 通过D-BUF机制不同的应用之间,底层部件之间可以传送事件和消息,实现跨桌面(cross desktop)的消息机制。

4.3 Bonobo和CORBA Bonobo基于CORBA,解决部件重用问题。

4.4 Zeroconf Zeroconf实现了网络中查询定位指定服务的功能。

4.4 XML和Web Services 不赘述(todo)。

5 Desktop Technologies 不赘述(todo)。

------------ 6.参考与连接 ------------ 1.http://developer.gnome.org/doc/guides/platform-overview/platform-overview.html 2. 3.

没有评论: