组件对象模型

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 问题: