6、COM 组件开发中的接口定义语言(IDL)详解

COM 组件开发中的接口定义语言(IDL)详解

1. 传统复用问题与 COM 基础

在软件开发中,传统上复用问题通过使用软件库来解决,这些库可以是内部编写的,也可以从第三方软件供应商购买。然而,这种解决方案存在诸多问题。通过一系列 C++ 编程技术,可以解决原始问题以及过程中出现的新问题。最终发现,遵循动态链接和二进制封装这两种编程范式,能够开发出可随时间演变的可复用二进制组件,这两种范式构成了组件对象模型(COM)的基础。

2. 为何需要新语言定义接口

在开发可复用组件时,需要将接口与实现细节分离。之前章节将接口定义为 C++ 类,这让供应商可以选择自己的 C++ 编译器,客户端也能选择供应商。但在定义 COM 架构时,COM 委员会有超越 C++ 编译器独立性和供应商独立性的目标,C++ 语言不足以定义满足这些目标的接口,因此引入了接口定义语言(IDL)。

2.1 编程语言独立性

虽然 C++ 是非常有用的编程语言,但还有其他更适合特定任务的编程语言。限制开发者仅使用 C++ 并不合理,因为客户端和组件不应知晓彼此的实现细节,双方都应能使用自己选择的编程语言。

如果用 C++ 定义接口,会迫使客户端使用 C++。虽然可以提供工具将 C++ 接口定义翻译成其他编程语言,但 C(以及扩展的 C++)存在诸多歧义。例如, long* plValue; 既可以指单个长整型的指针,也可以指长整型数组的起始位置。而且,当它作为方法参数时,无法表明是输入值、输出值还是两者皆是。这些歧义使得将 C++ 风格的接口定义映射到其他语言不太理想。

2.2 远程透明性
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值