CDE 基础设施

作者:George Kraft IV

当麻省理工学院 (MIT) 的雅典娜项目引入 X 窗口系统 (X) 时,他们建立了其分布式“开放”窗口协议的机制。然而,他们有意忽略了供他人开发的策略。后来,基于惠普 (HP) 和数字设备公司 (Digital Equipment Corporation) 的技术,开放软件基金会 (OSF) 为 X 开发了 Motif 图形用户界面 (GUI) 的策略。Motif 风格指南为其“以人为中心”的窗口行为制定了严格的准则;然而,Unix 桌面仍然缺乏数据类型、对象方法、即插即用和超文本帮助等服务。

Unix 系统实验室授权 Destiny Desktop 与 System V.4 一起使用,惠普为 HP-UX 开发了 HP Vue,IBM 为 AIX 发布了 IXI 的 X.desktop。尽管这些桌面提供了 X 和 Motif GUI 中未提供的服务,但它们导致了开放系统市场的分化。集成成本和保持可移植性的需求使许多开发人员无法迁移到这些桌面。

Red Hat (Red Hat CDE, Don Kuenz,LJ 1997 年 1 月), Xi Graphics (AcceleratedX CDE and Display Server for PC Unix, Bradley Willson,LJ 1997 年 11 月) 和 Caldera 这三家主要的 Linux 发行商提供了 Linux 版 CDE。

通用桌面环境

通用桌面环境 (CDE) 是惠普、IBM、Sun 和 Novell 之间合作为建立统一的开放系统桌面而合作的成果。他们从现有环境中提取了“最佳”技术,然后设计、实施并交付了新级别的 Unix 桌面服务,开发人员可以依赖这些服务。

CDE 编程基础设施

CDE 的应用程序编程接口 (API) 超越了基本的 Motif GUI。CDE 提供了数据类型、对象方法、打印、拖放、附加小部件、即插即用消息传递和超文本帮助系统。这套新的桌面级系统服务保证适用于所有符合 CDE 标准的系统。开发人员现在可以更轻松地生成一致的应用程序,并减少特定于开发人员的核心解决方案的数量。

Motif GUI

Motif 赢得了开放系统 GUI 之战;然而,供应商一直在维护和增强各种版本的 Motif。尽管 Motif 成为 GUI 标准,但如果使用了任何供应商的修饰,可移植性就会变得有风险。幸运的是,CDE 的创建者通过合并他们的 Motif 源代码库以重建库存 GUI,帮助消除了这些问题。

桌面服务

CDE 超越了 GUI,提供了桌面范围的对象和方法,供应用程序使用和调用。应用程序不再需要依赖旧的和有限的数据库,例如邮件程序和 Web 浏览器等应用程序使用的 mime-types 和 mailcap。

列表 1 显示了一个消息对话框程序,该程序使用桌面初始化自身,并加载桌面的数据类型和方法数据库。然后,它只是创建一个消息对话框并提示用户。当您选择“电子邮件”按钮时,应用程序在文件对象上调用桌面的 Compose 方法。桌面使用文件对象生成邮件程序,文件对象最终显示在那里并准备好被寻址。

拖放

桌面提供了一个方便且一致的拖放 API,用于解释跨桌面的数据传输。文本、文件名和缓冲区可以从拖动的图标传输到放置区。拖动的数据类型决定了拖动图标的外观和配置。由于 Motif 可以区分不同类型的数据,因此应用程序具有更强大的拖放行为。

桌面 GUI

桌面的 DtWidget 库有助于弥合当前 CDE 在当前 Motif 和 Motif 2.0 中的差距。开发人员无需等待 Motif 2.0,因为微调框、菜单按钮和编辑器小部件都在 CDE 中。与往常一样,为了保持二进制兼容性,开发人员应特别注意在使用 XmResolvePartOffset 从一个小部件子类化到另一个小部件时;否则,更新的共享库可能会导致不可预测的结果。

帮助

CDE 提供了标准的帮助 API 和 GUI 对话框,但与万维网上使用的更有限的 HTML DTD 相比,它还提供了一个功能丰富的 SGML DTD(文档类型定义)。CDE 的帮助链接支持超文本、定义、手册页、执行和应用程序定义的链接。CDE 文档经过预处理以加快加载速度。由于这些二进制格式的文档不可人工读取,因此它们的附加好处之一是它们在复制时无法被逆向工程,从而防止了版权侵权。以 HTML 格式提供文档的发布商处于不利地位,因为可以从大多数浏览器制作完整的未删节副本。

ToolTalk 即插即用

CDE 的 ToolTalk 是一个消息代理系统,使应用程序能够在彼此没有直接知识的情况下相互通信。应用程序客户端和服务器可以独立开发、混合和匹配,并通过即插即用独立升级。注册处理消息请求的应用程序充当广播其请求的应用程序的服务器。消息代理是超越文件共享、点对点和 ICCCM 客户端间通信的进化步骤。

图形 Korn Shell

图形桌面 Korn Shell 提供了桌面的大部分 Motif GUI、服务、帮助、工作区管理、会话管理和 ToolTalk 即插即用。开发人员可以使用标准的 ksh93 脚本语言进行原型设计和部署。这意味着可以编写中小型的程序,然后在任何符合 CDE 标准的系统上解释执行,而无需任何额外的工作。

列表 2 中的 dtksh shell 脚本是先前说明的 C 程序的转换。与流行的 Tcl/Tk shell 和 GUI 不同,dtksh 具有几乎一对一的迁移路径到本机 Motif 以获得性能。使用 dtksh,代码可以轻松迁移,开发人员发现他们的知识可以在 C 和 dtksh 之间轻松转移。

桌面的基础设施

CDE 不仅提供了一组新的 Motif、拖放、桌面小部件、帮助、ToolTalk 和 DtKsh API,而且还提供了应用程序可以参与和遵循的系统服务。桌面服务提供登录管理器、会话管理器、颜色服务器、工作区管理器和 ToolTalk 服务器。在大型软件包中提供这些功能是很诱人的;但是,如果开发人员试图模仿这些桌面服务,那么宝贵的开发时间和精力就会从创建实际产品中被夺走。

登录管理器

桌面登录管理器提供基本的 X 显示管理器协议 (XDMCP) 来管理网络上 X 终端和桌面上工作站的登录会话。登录管理器在位图显示器上启动 X 服务器;它还启动会话管理器。

会话管理器

会话管理器使用一组约定和协议,使桌面能够保存和恢复用户从一个登录会话到下一个登录会话的会话。使用会话管理器,用户还可以配置一组 sessionetcsessionexit 脚本,分别在登录和退出时调用。这使得可以在登录和注销时执行用户定义的任务。

应用程序的关键责任是当桌面被用户关闭时,确认 WM_SAVE_YOURSELF 消息,如 列表 3 所示。WM_SAVE_YOURSELF saveProc 例程为应用程序整理,然后设置 WM_COMMAND 属性以供保存并稍后由会话管理器重用以重新启动终止的应用程序。

颜色服务器

会话管理器充当颜色服务器,控制前景色和阴影颜色,限制颜色使用并限制在颜色映射中创建颜色。使用符合颜色服务器的应用程序可以减少颜色映射的耗尽并协调桌面的配色方案。如果颜色映射确实耗尽,则通常会在某个地方潜伏着一个“不合群”的应用程序。

工作区管理器

桌面窗口管理器 (dtwm) 用作桌面的默认窗口管理器,并扩展了 Motif 窗口管理器的功能。它为桌面提供了一个控制面板来启动应用程序。它的多个屏幕或工作区允许用户在屏幕之间切换。

桌面通常被认为是互斥的端点解决方案,例如 Web 浏览器或协作软件包。但是,CDE 将它们视为由桌面基础设施管理和服务的应用程序组或工作区。桌面窗口管理器非常适合管理 Internet 套件和协作工具的工作区。

ToolTalk 服务器

ToolTalk 服务器可以依靠它来代理客户端和服务器消息以实现客户端间即插即用。通用对象请求代理架构 (CORBA) 运动背后有着巨大的力量。但是 ToolTalk 是轻量级的,可以完成工作,并且是 CDE 的组成部分,CDE 部署在各种 Unix 平台上。ToolTalk 从方法服务器获取消息处理注册,然后保存该信息,直到客户端应用程序广播请求这些注册的服务。由于 ToolTalk 在异构系统之间互操作,因此不需要平台网关。

行动起来

CDE 的功能远不止表面所见。应用程序和工作区开发人员都拥有一个功能丰富的基础设施,可以基于它进行构建。就像过去一样,我们仍然依赖于经过尝试和测试的 X 和 Motif;然而,现在我们可以依靠通用桌面环境的开发库和桌面管理基础设施。

如果您正准备编写一个新的应用程序,或者只是在考虑改进您一直在做的事情,请考虑如何使您的应用程序通过更少的代码变得功能更丰富且对桌面更友好。

有关 CDE 参考资料列表,请访问 IBM 的 CDE 网页:http://www.rs6000.ibm.com/software/OS/CDE/further.html。

CDE Infrastructure
George Kraft 是 IBM 网络计算机部门的咨询软件工程师。他之前曾在 IBM RS/6000 部门从事 CDE V2.1 和 V1.0 的工作。他最初于 1987 年开始在普渡大学计算中心使用 X 窗口系统。他拥有普渡大学计算机科学和数学学士学位。可以通过电子邮件 gk4@cactus.com 与他联系。
加载 Disqus 评论