一个大型系统程序的开发必然会分为若干个模块,然后将每一个模块与实现分离,并进一步能为一个接口提供多个实现,如此一来,接口与实现的分离就要求将模块的私有部分归属到实现的一方,接口与实现之间不再简单的通过相同的名字进行匹配。这样,客户程序仅仅依赖于对象接口,而不是对象实现,这也正是依赖接口编程的体现。
在CORBA模型中,对象实现对外提供信息和服务,客户程序利用这些信息与服务完成某些功能,这些信息与服务是对象实现与客户程序之间的一种合约。其中OMG(对象管理组织)的接口定义语言就是这种合约的标准语言。
接口定义语言(IDL):是一种说明性的语言,IDL用于定义由远程对象所提供服务的接口,包括分布式对象的服务能力以及由客户程序和服务程序共享的复杂数据类型,其特点除了具有面向对象的设计风格以为还独立于特定的硬件系统。
在不同的分布式应用系统中存在很多不同类型的接口,常见的对象接口包括:
1、操作型:常用于操纵单个对象实体。
2、工厂型:用于创建和撤销对象。
3、查找与选择型:用于确定对哪个对象进行操纵。
4、管理型:常用于在一个调用中操纵多个对象实例。
在IDL中描述的一系列模块、接口、类型、常量和异常等,这些定义均存放在一个IDL文本文件中,这些对象接口定义也可由一个库服务来存储或管理,我们将IDL文件编译成可运行的接口库服务,由该服务提供对象接口的相关信息。
接口库更常见的用法是查找对象引用的所有接口定义,利用接口库获取一个编译时未知类型的对象引用的接口信息,为利用动态调用接口或动态框架接口调用对象作准备。
下一篇博客我们介绍CORBA中间件服务端程序中的可移植对象适配器和纽带机制。