C++ 简而言之,COM(组件对象模型)是什么?
COM对象似乎是由操作系统管理的通用对象。对象遵循严格的接口,允许您查询对象以确定信息。这是COM对象吗?< P> com是一种机制,它开发了允许人们分发二进制文件的二进制文件,即使调用方使用另一个厂商的C++编译器,或(最终)完全不同的语言,二进制文件也可以重用。 如果您想对COM有一个很好的介绍,read by.是一种允许重用对象(或者更确切地说是组件)的机制,它独立于实现该组件的程序员和使用该组件的程序员所使用的语言,并且独立于组件是在客户端程序中还是在机器(或网络)的其他地方实现的 广义地说,每个COM组件都提供一个或多个接口的实现。这些接口是以与语言无关的方式使用定义的。例如,COM中的一个基本接口定义如下:C++ 简而言之,COM(组件对象模型)是什么?,c++,com,C++,Com,COM对象似乎是由操作系统管理的通用对象。对象遵循严格的接口,允许您查询对象以确定信息。这是COM对象吗?< P> com是一种机制,它开发了允许人们分发二进制文件的二进制文件,即使调用方使用另一个厂商的C++编译器,或(最终)完全不同的语言,二进制文件也可以重用。 如果您想对COM有一个很好的介绍,read by.是一种允许重用对象(或者更确切地说是组件)的机制,它独立于实现该组件的程序员和使用该组件的程序员所使用的语言,并且独立于组件是在客户端程序中还是在机器(或网络)的其他地方实现的 广义
interface IUnknown
{
virtual HRESULT QueryInterface(REFIID riid, void **ppvObject) = 0;
virtual ULONG AddRef(void) = 0;
virtual ULONG Release(void) = 0;
};
这个小接口是COM的基础,因为每个COM组件都必须实现它。它定义了COM机制的两个重要方面:
允许调用代码获取已知接口的实现。在COM中,接口由GUID(也称为接口标识符,IID)引用。如果一个对象实现了多个接口,那么客户端代码就是通过这种方式获得对每个接口的引用的。如果你愿意的话,它就像一种施法操作符QueryInterface
和AddRef()
实现COM对象的内存管理机制。顾名思义,最常见的模型是引用计数机制,在该机制中,在最后一个客户端释放对实例的引用后,实例将被销毁Release()
- 确保组件安装在可触及的位置。大多数情况下,它位于运行应用程序的系统上,但COM+还允许组件存在于远程计算机上
- 知道给定组件的GUID。有了这个GUID,客户机就可以要求系统实例化组件(在C中,这样做的函数称为
)。您可以在注册表中的CoCreateInstance()
下查看:其中的每个GUID(很可能)都有一个COM组件或接口的标识符,该键下面的条目告诉系统应该如何实例化它HKEY\U CLASSES\U ROOT\CLSID
随着.NET的出现,COM逐渐被淘汰。最后一行的来源是什么?