Microsoft 组件对象模型 (COM) 是一个独立于平台的面向对象的分布式系统,可用于创建可以交互的二进制软件组件。 COM 技术是 Microsoft OLE(复合文档)和 ActiveX(支持 Internet 的组件)以及其他组件的基础技术。
要理解 COM(以及所有基于 COM 的技术),关键是要理解它不是一种面向对象的语言,而是一种标准。 COM 也没有指定应用程序的结构;语言、结构和实现细节留给应用程序开发人员。 相反,COM 指定对象模型和编程要求,使 COM 对象(也称为 COM 组件,有时简称为
对象
)能够与其他对象进行交互。 这些对象可以在单个进程中,也可以在其他进程中,甚至可以在远程计算机上。 它们可以以不同的语言编写,并且它们在结构上可能大相径庭,这就是为什么 COM 被称为
二进制标准
的原因;在程序转换为二进制计算机代码后应用的标准。
COM 唯一的语言要求是,代码是用一种可以创建指针结构并通过指针显式或隐式调用函数的语言生成的。 面向对象的语言(如 C++ 和 Smalltalk)提供简化 COM 对象的实现的编程机制,而 C、Java 和 VBScript 等语言可用于创建和使用 COM 对象。
COM 定义 COM 对象的基本性质。 通常,软件对象由一组数据和操作数据的函数组成。 COM 对象是专门通过一组或多组相关函数来访问对象数据的对象。 这些函数集被称为
接口
,接口的函数被称为
方法
。 此外,COM 要求访问接口方法的唯一方法是通过指向接口的指针。
除了指定基本的二进制对象标准外,COM 还定义了某些基本接口,这些接口提供了所有基于 COM 的技术所共有的功能,并提供了所有组件所需的少量功能。 COM 还定义了对象如何在分布式环境中协同工作,并添加了安全功能来帮助提供系统和组件完整性。
本节中的以下主题介绍与设计 COM 对象相关的基本 COM 问题:
COM 对象和接口
使用和实现 IUnknown
COM 库
管理内存分配