目的
COM 是一种独立于平台的分布式面向对象的系统,用于创建可交互的二进制软件组件。 COM 是Microsoft的 OLE(复合文档)和 ActiveX(已启用 Internet 的组件)技术的基础技术。
Tip
新式 C++ 和 COM: 如果要编写使用 COM 接口的新 C++ 代码,首选智能指针包装器而不是原始 AddRef/Release 调用:
| Approach | 何时使用 | Header |
|---|---|---|
C++/WinRTwinrt::com_ptr<T> |
新的 Windows 运行时 或经典的 COM 代码 |
<winrt/base.h> (C++/WinRT 投影) |
WRLMicrosoft::WRL::ComPtr<T> |
现有代码库,经典 COM,无 C++/WinRT 依赖项 | <wrl/client.h> |
原始 COM (AddRef/Release) |
低级别库、ABI 边界、COM 服务器实现 | <unknwn.h> |
智能指针消除了 COM 中最常见的 bug:引用泄漏、重复释放以及释放后继续使用。 有关详细信息 ,请参阅“通过引用计数管理对象生存期 ”。
如果适用
可以使用各种编程语言创建 COM 对象。 面向对象的语言(如C++)提供简化 COM 对象的实现的编程机制。 这些对象可以位于单个进程中,在其他进程中,甚至在远程计算机上。
运行时要求
有关使用特定接口或函数所需的作系统的信息,请参阅接口或函数文档的“要求”部分。
在本节中
| 主题 | 描述 |
|---|---|
|
COM 基础知识 |
介绍基本概念和编程参考。 |
|
OLE 和数据传输 |
介绍复合文档和数据传输。 |
|
控件和属性页 |
介绍 ActiveX 控件和属性页。 |
|
COM 语言翻译 |
介绍编程语言之间的差异,并介绍如何将 COM 对象语法从一种语言翻译成另一种语言。 |
相关文档
| 主题 | 描述 |
|---|---|
|
COM 基础知识 |
介绍基本概念和编程参考。 |
|
OLE 和数据传输 |
介绍复合文档和数据传输。 |
|
控件和属性页 |
介绍 ActiveX 控件和属性页。 |
|
COM 语言翻译 |
介绍编程语言之间的差异,并介绍如何将 COM 对象语法从一种语言翻译成另一种语言。 |
相关主题
| 主题 | 描述 |
|---|---|
|
组件对象模型 (COM) |
COM 是一种独立于平台的分布式面向对象的系统,用于创建可交互的二进制软件组件。 COM 是Microsoft的 OLE(复合文档)和 ActiveX(已启用 Internet 的组件)技术的基础技术。 |
|
自动化 |
自动化使软件包能够向脚本工具和其他应用程序公开其独特的功能。 自动化使用组件对象模型(COM),但可以独立于其他 OLE 功能(例如就地激活)。 |
|
Microsoft接口定义语言 (MIDL) |
Microsoft接口定义语言(MIDL)定义客户端和服务器程序之间的接口。 Microsoft包括具有平台软件开发工具包(SDK)的 MIDL 编译器,使开发人员能够创建远程过程调用(RPC)接口和 COM/DCOM 接口所需的接口定义语言(IDL)文件和应用程序配置文件(ACF)。 MIDL 还支持为 OLE 自动化生成类型库。 |
|
结构化存储 |
结构化存储通过将单个文件处理为称为存储和流的对象的结构化集合,在 COM 中提供文件和数据持久性。 |
|
COM+ |
COM+ 是Microsoft组件对象模型(COM)和Microsoft事务服务器(MTS)的演变。 COM+ 在使用 COM、MTS 及其他基于 COM 的技术编写的应用程序基础上构建并加以扩展。 |