IONA Orbix 2000 V2.0技术白皮书 - 3 Orbix 2000 标准版


(by huihoo.com fat1 , Allen 整理)

3 Orbix 2000 标准版

除了提供 Orbix 2000 标准的 CORBA 2.4 规范(可用于 C++ 和 Java)中的功能外,还提供了在下列各节中说明的功能。

3.1.1 安全接口层/传输层安全性 (SSL/TLS)

图 3 显示了安全套接字层 (SSL) 是如何为在网络中通信的应用程序提供数据完整性。SSL/TLS (传输层安全性) 是一个位于不同应用程序协议和 TCP/IP 之间的安全协议。Orbix 2000 提供了对 TLS V1.0 和 SSL V3.0 的支持。



图 3 安全套接字层


Orbix 2000 应用程序使用 CORBA 标准 Internet ORB 内部协议 (IIOP) 与应用程序进行通信。该应用程序层协议位于传输层协议 TCP/IP 之上。SSL/TLS 应用程序使用 SSL/TLS 之上的 IIOP 进行通信。

SSL/TLS 提供具有三个基本属性的连接安全性:

。身份验证:可以使用不对称的或公用的密钥或加密系统对连接进行验证。TLS 支持基于 RSA 和带有 X.509v3 证书的 Diffie-Hellman/DSS 的身份认证。

。保密性:连接是保密的。在首次握手后,密钥用于定义密钥。将对称密码系统用于数据加密(例如 DES、Triple DES、RC4、IDEA 等。支持不同的加密程度,其中包括 40 位、56 位、128 位和 168 位加密。

。完整性:连接是可靠的。消息传输中包括了使用键控消息身份认证代码 (MAC) 进行的消息完整性检查。将安全哈希函数(例如,SHA1、MD5)用于 MAC 计算。

通过使用单一配置文件和一系列用于定义策略的 SSL/TLS 实用工具来建立安全策略。程序员只需要将几行代码添加到标准的 Orbix 2000 应用程序就可以启用 SSL/TLS。因为实用标准的 Orbix 2000 进行通信,为程序远隐含了 SSL/TLS 协议的细节。但是 SSL/TLS 还是提供了一个允许程序员在其自己的应用程序中调整 SSL/TLS 使用情况的 API。

特定的 Orbix 2000 TLS 功能包括:

。基于 CORBASEC 级别 2 接口的完善的、中性机制的 API

。基于配置的策略,可以按照每 ORB、每线程、每 POA 或每对象引用来指定。

。用于客户机和服务器的插件集合,它为 IIOP/TLS 协议提供了完整的支持

。同时支持能够识别安全性和不能识别安全性的应用程序。

。同时支持能够识别安全性和不能识别安全性的应用程序。

。每客户机或服务器多个信任状

。与任何符合 IIOP 1.1 TLS 的 ORB 实现互操作

。活动连接管理。

。会话高速缓存

。独立密钥分布机制 (KDM) 组件。Orbix 2000 可以分发 pass 子句以自动启动服务器应用程序。服务器使用这些 pass 子句对相关的保密密钥进行解密。KDM 通信具有完全的 TLS 安全性(能够保证加密、保密和完整性)。

。X.509 证书是随 CORBASEC IDL 附带的

。X.509 V3 扩展支持

。PKCS#12 容器格式支持

。OpenSSL 实用程序 这些开放代码工具是与 Orbix 2000 集成在一起,并与成品一起提供。

Orbix 2000 TLS 还为新的加密算法提供了框架(例如 AES 支持)以容易地集成到规范中。Orbix 2000 TLS 即时可用解决方案将 LDAP 用于身份验证和验证目的,另外,IONA 当前与 Netegrity、Entrust、Norcom、Evidian、Hitachi Software 和 2AB Inc 结成了伙伴关系。IONA 计划增加能够提供安全解决方案的伙伴的数目,以增加客户的选择余地。

最后,Orbix 2000 的安全机制还可以与 IONA’s iPortal Application server 的机制实现共享。因为 Orbix 2000 和 iPortal Application 都使用相同的 ART 插件爱实现这些机制,因此它们使用相同的身份验证和验证服务。从而可以在 CORBA 和 EJB 应用程序之间容易地共享安全环境。

3.1.2 Orbix 2000 基础结构的安全

Orbix 2000 基础结构通过使用底层 SSL 层进行验证实现了自身的安全性。系统管理员可以限制对核心 IONA Orbix 2000 服务的访问。默认情况下,只有经过严格的身份验证的认证用户才可以访问“配置仓库”、“激活器”、“定位器”和“命名服务”。

3.2 事件服务

OrbixEvents 实现了 CORBA 事件服务规范。该规范为 ORB 应用程序之间的通信定义了异步模型,它是客户机服务器应用程序通常使用的同步请求/响应模型的补充。



图 4 事件通道


CORBA 事件服务将事件的概念引入了 CORBA 通信。如图 4 所示,事件发源于事件供应者,传送到一定数量的事件消费者。供应者和消费者是完全分离的:供应者对消费者的数量以及他们的身份一无所知,消费者也不知道哪个供应者生成了特定的事件。 为了支持该模型,CORBA 事件服务引入了称为事件通道的新结构元素(请参阅图 4)。事件通道按照如下方式协调供应者与事件消费者之间的

事件传输:

1 .事件通道允许消费者在事件中感兴趣的事件,并存储注册信息。

2 .通道从供应者接受传入事件。

3 .通道将供应者生成的事件转发到注册的消费者。

供应商和消费者连接到事件通道,而不是相互直接连接。从供应者的角度来看,事件通道是作为单一消费者出现的;从消费者角度来看,事件通道是作为单一供应者出现的。因此,事件通道隔离了供应商和消费者。

3.3 COM-CORBA 集成

Orbix 2000 提供了高性能的动态桥接功能,它使诸如 Visual Basic、PowerBuilder、Delphi、Microsoft Office 或 Active Server Pages 等工具编写的 COM 应用程序能够访问运行在 Windows、UNIX 和 OS/390 上的 CORBA 应用程序。

3.3.1 COM 和 CORBA 协同工作

Orbix 2000 COMet 是 IONA OMG COM/CORBA Interworking 规范的实现。该规范定义了一个模型,实现了 CORBA 和 COM/Automation 之间的透明协作。

例如,COM 或 Automation 客户机可以调用 CORBA 服务器上的对象。因为 COM 和 CORBA 都支持分布,所以客户机和服务器可以在不同的计算机上。

3.3.2 使用 Orbix 2000 COMet

Orbix 2000 COMet 桥接功能是作为 DLL 集合实现的,它能够实现两个对象模型之间的动态映射。该桥接功能并没有参与在简单对象模型的客户机与服务器之间发送请求。

Orbix 2000 COMet 桥接功能使用另一个称为类型库的 Orbix 2000 COMet 组件。该组件将关于您的系统中的所有 COM 和 CORBA 类型的信息提供给该桥接功能。使用 MIDL 来定义 COM 类型。使用 OMG IDL 定义 CORBA 类型。Orbix 2000 COMet 类型库在缓存中以中间二进制格式保留了 MIDL 和 IDL 类型信息。

在运行时,OrbixCOMet 使用 COM 类型库和 CORBA 接口库获得在系统中定义的类型信息。要提高性能,类型库包括了一个复杂的缓存系统,该系统可以避免对类型库或“接口库”进行不必要的检查。

Orbix 2000 COMet 类型库管理器是一个图形化的工具,可以使用它控制并管理类型库中的内容。Orbix 2000 COMet 还包括一个命令行实用工具的对等集合。

3.4 代码生成工具包

Orbix 2000 开发工具包中包括 IONA Code Generation Toolkit,它是一套用于应用程序快速开发工具。该工具包的核心是 IDL 编译程序,以及 Tcl 脚本编制语言。“即时可用 (out-of-the-box)”的脚本可以从 IDL 文件自动生成完整的可执行的客户机服务器应用程序。它还提供了有用的调试工具:可以使用自动生成的服务器对客户机进行调试,反之亦然。高级用户可以自己编写代码生成脚本,实现大型应用程序中重复编码的自动完成。



图 5 IDL 编译程序的结构

如图 5 所示,一个 IDL 编译程序通常包含三个主要组件。分析器处理一个输入 IDL 文件并构建一个称为分析树的内存中的表示。然后,后端处理器穿过该分析树并生成 C++ 存根代码。

Orbix Code Generation Toolkit 是一个称为 IDLgen 的可执行文件,它在该方式中运用了一个变体。IDLgen 使用 IDL 分析器并创建一个分析树,它不具有生成存根代码的后端,而是具有一个用于脚本编制语言 Tcl 的后端解释器。

已经扩展了IDLgen 中的 Tcl 解释器,从而能够操纵 IDL 分析器和带有 Tcl 命令的分析树。如图 6 所示,通过使用 Tcl 脚本,可以配置从 IDLgen 获得的输出。



图 6 使用 Tcl 脚本配置 IDLgen 输出


Orbix 代码生成脚本(也称为 genies)是一些 Tcl 脚本,它们使用 IONA 的解释器扩展来创建基于 IDL 文件的代码。通常,这些脚本构建 IDLgen 来分析 IDL 文件,操纵生成的分析树,然后生成代码。

Orbix Code Generation Toolkit附带了一系列现成可用的代码生成脚本。只需简单地运行这些脚本,就可以完成诸如从 IDL 文件创建完整的客户机/服务器应用程序,创建打印 IDL 数据类型的函数等的一般性任务。该工具包还包括了 Tcl 过程库,这些过程库允许用户创建自己的定制代码生成脚本。

3.5 多线程支持

Orbix 2000 为多线程应用程序提供了出色的支持。Orbix 2000 库是多线程的,并且具有线程安全性。Orbix 2000 提供标准的 POA 策略来启用服务器中的多线程操作。ORB 创建了一个线程池,它会根据所需的负载进行缩放。无需任何编码就可以通过配置的设置控制线程池大小、增长和请求队列。

多线程应用程序自身必须是线程安全的。虽然大多数平台提供相似的线程同步功能,但是其接口的差别却很大。Orbix 2000 包括了一个面向对象的线程同步可移植库,它允许用户编写可移植多线程代码。这个库只是每个平台上本地线程接口之上的一个层,所以不存在与直接使用本地接口的其它可移植库或应用程序的冲突。

3.6 配置和日志接口

应用程序可以将它们自己的配置信息存储在 Orbix 2000 配置域中,因为它利用了 ORB 配置的基础结构。IDL 接口允许应用程序代码对 ORB 配置信息进行访问。

应用程序也可以利用 Orbix 2000 日志子系统,而不是使用 IDL 接口来记录诊断消息。可以将这些消息记录到日志流对象向 ORB 注册的任何目的地。Orbix 2000 提供了本地输出日志流、文件日志和系统日志(UNIX syslogd 或 Windows 事件服务)。应用程序开发人员还可以利用他们自己的日志流来捕获 ORB 和应用程序诊断信息,并将他们发送到所需的任何目的地。

3.6.1 可互操作的命名服务和负载平衡扩展

Orbix 2000 支持“互操作命名服务”规范,它是原始 CORBA 命名服务的超集。“互操作命名服务”能够添加一些易用的功能并为 CORBA 对象引用提供标准的URL 格式以简化 CORBA 服务的配置和管理。

Orbix 2000 命名服务支持 OrbixNames 3 的特定 IONA 负载平衡扩展。可以使用单一的名称注册一组对象;命名服务以一种特别的方式发布对客户机的引用,这样可以将客户机负载平衡到整个组中所有的对象上。最后,Orbix 2000 提供了一种新的,首选的基于定位符的负载平衡机制。

3.6.2 持续状态服务

Orbix 2000 包括持续状态服务 (PSS) 的实现,它是一个在服务器和持续数据之间提出了基于 CORBA 的抽象层的 CORBA 服务。Orbix 2000 的 PSS 实现是与 Berkeley DB 集成的,它是一个包括在 Orbix 2000 中的高效嵌入式数据库。

PSS 通过特定语言的实现或存储对象化身实现了存储对象。存储对象的化身绑定到了数据仓库中的存储对象,并提供了对存储对象的状态的直接访问。因此,更新存储对象化身还会更新数据仓库中相应的存储对象。

Orbix 2000 在其内部操作中广泛地使用了 PSS。另外,PSS 接口可以供应用程序使用。