COM是一种编写软件组件的新方法。它使你能够创建动态链接到运行时上的可复用的软件模块。每一个COM对象都有一个或多个做实际工作的接口。
这些接口不过是方法或经由虚函数表指针引导的函数的集合。
由于使用了GUID,每一个COM对象和接口都是被唯一标识的。当然,你必须为你的COM对象生成GUID。
你使用GUID或IID访问COM对象、接口以及与其他程序员共享COM对象和接口。这些接口无非是通过一个虚函数表指针来进行引用的方法或
函数的集合(就是说有一个指针指向一个虚函数表)。
如果你创建一个新的COM对象来升级旧的,你必须与新接口一起实现旧接口。这是一条非常重要的原则:
所有基于COM对象的程序无须重新编译,在新版本的COM对象下仍将正常运行(你要做的仅仅是给你的用户新的COM对象)。
COM是一个能够被任何语言在任何机器上实施的通用技术规范。唯一的要求是COM对象的二进制形式必须于由MicrosoftVC编译器生成的虚类的二进制形式相同。
然而COM可以使用在别的机种上,像Mac,SGI等等。只要它们遵守建立和使用COM对象的规范。
最后,COM通过其组件级通用架构,增进了创建大型计算机程序(数十亿行规模)的可能。而且当然,DirectX、OLE,和AcriveX都是基于COM的,所以你需要理解COM。