CORBA 规范不会强制 ORB 供应商对 IDL 编译器产品使用统一的命名约定。
此外,它不会定义这些产品应该包含的内容。因此,在 IBM® Rational® Rhapsody® 中创建了一组属性来解决此问题。
所有 IDL 编译器将生成规范文件(只有函数头和签名)和实现文件(有函数定义和主体)。对于给定的 CORBA 接口,IDL 编译器可能会创建以下代码:
- 框架代码 - 服务器端代码。可能由两个文件构成,一个用于规范,一个用于实现。
- 存根代码 - 客户机端代码。可能由两个文件构成,一个用于规范,一个用于实现。
这表示 IDL 编译器可能会创建四个文件,其名称都从 IDL 文件名派生。
例如,使用 TAO 编译名为 X.idl 的 IDL 文件就会产生以下三个文件:
- X.hh(规范文件)
- XS.cpp(框架实现文件)
- XC.cpp(存根实现文件)
使用另一个 IDL 编译器(例如,Visibroker)编译相同的 X.idl 文件会产生以下文件:
- X_s.hh(框架规范文件)
- X_c.hh(存根规范文件)
- X_s.c(框架实现文件)
- X_c.c(存根实现文件)
在 Rational Rhapsody 中创建了以下属性,以定义 IDL 编译器文件命名行为:
- ImplementationExtension 指定实现文件的扩展名。缺省值是 .cpp。
- SkeletonImplementationName 是用于定义框架实现文件的命名行为的字符串。缺省值是 $interfaceS。
- SkeletonSpecificationName 是用于定义框架规范文件的命名行为的字符串。缺省值是 $interfaceS。
- SpecificationExtension 是用于指定规范文件的扩展名的字符串。缺省值是 .h。
- StubImplementationName 是用于定义存根实现文件的命名行为的字符串。缺省值是 $interfaceC。
- StubSpecificationName 是用于定义存根规范文件的命名行为的字符串。缺省值是 $interfaceC。