第2章.常见问题

内容
一般性问题
常规编码的问题
本章回答关于 ORBit 和 Corba 的问题

一般性问题

什么是 CORBA?

CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。

  • 用不同的程序设计语言书写
  • 在不同的进程中运行
  • 为不同的操作系统开发
更详细的描述在 http://www.omg.org/corba/whatiscorba.html

什么是 ORBit?

ORBit 是 CORBA 的一个实现,它在 GNOME 计划(和其他应用)中被使用。

为什么你不用 ILU/MICO/TAO?

GNOME 大部分是用 C 语言写的,由于性能的原因,加之 C++ 仍然不是可移植和广泛的获得的。因此要使用 IDL C 映射来与 CORBA 集成,GNOME 计划排除了 TAO 和 MICO。ILU 被排除是因为它的许可证对于自由软件来说束缚太多。(译注:MICO 和 TAO 也是开放源代码的 CORBA 的实现)

ORBit 稳定吗?

ORBit 被使用在相当多的 GNOME 应用程序中,这就对已被使用了特征进行了大量测试,其他特征还很少或未经测试。

ORBit 是否可与其他 ORB 一起工作?

是的。这是 CORBA 的首要的特征,通过 Internet ORB 间协议(the Internet Inter-ORB Protocol,缩写 IIOP)获得。有一个圈套: ORBit 有一个专有的安全机制用于客户认证。如果需求互操作性,你可能必须为此想出一项周边工作。(figure out a work around)

ORBit 的许可证以及对我的作用?

IDL 编译器在 GPL 许可证之下。库在 LGPL 许可证之下。从 IDL 编译器生成的代码不受限制。基本上,这意味着你可以在自己的应用程序(包括专有的应用程序)中使用 ORBit,唯一的限制是得到你发布的自己制作的代码的人必须可以任意变更 ORBit 库。如果你希望更改并发布 ORBit IDL 编译器你必须在 GPL 下发布所做更改。 

为什么我的 cc 编译器不能编译 ORBit?

ORBit 0.4.0 使用了一些 gcc 所允许的扩展,包括对类型强制转换的赋值(assignment to casts)和对 void * 指针的运算,最当前版本的 ORBit 将去处这些,最终 ORBit 将可以在所有 ANSI C 编译器下编译。

你可以安装 gcc 并使用它。这就永远可以工作了。

什么是语言绑定?

一个语言绑定定义在一个编程语言中如何使用 IDL 操作。客户方的映射说明如何调用操作,服务器方的映射说明如何实现它们。客户方的映射在相当大的程度上是与实现无关的。

在服务器方,不同的 ORB 提供者提供不同对象适配器,ORBit 只实现了可移植的对象适配器(POA),它允许在 CORBA 实现间的可移植性。

ORBit 提供那些语言绑定?

当前只有 C 绑定。Python 和 Perl 绑定正被认真的谈论着。 ILU 有大量的绑定,所以值得一看。

ORBit 是否有 DII 和 DSI?

有。但要当心使用在一些要求使用 dynAny 的情况下 DII 和 DSI 的使用,因为 dynAny 还未被支持。

ORBit 是否提供一个接口仓库?

还没有,但不久就会有的。

ORBit 是否提供一个命名服务?

是的。除此之外,使用第三方的命名服务器也是可能的,例如使用 --ORBNamingIOR 命令行参数。可互操作命名规范还未被支持。

能否加密一个 CORBA 连接?

Frank O'Dwyer 正在为 ORBit 做这项工作。 请查看主页 http://www.brd.ie/orbitssl/