总在很多地方看到COM的相关的东西,但是一直以来对COM的理解只是局限于知道它的全称:Component Object Model。为此,专门读了一下《COM技术内幕》的第一章,力求先对COM有一个初步的了解,随着学习的深入,肯定会进一步对COM进行研究。
COM是什么?
COM是一个说明如何建立可动态互变组件的规范。它提供了为保证能够互操作,客户和组件应遵循的一些标准。
COM规范就是一套为组件架构设置标准的文档。遵循COM规范编写的组件能够满足对组件构架的所有需求。
COM组件是以Win32动态链接库(DLLs)或可执行文件(EXEs)的形式发布的可执行代码组成的。COM组件是动态链接的,必须还是封装的。
COM不是什么?
COM并不是一种计算机语言。
将COM同DLL相比或相提并论也是不合适的。实际上COM是使用了DLL来给组件提供动态链接的能力。除了支持COM组件以外,在其他地方一般不会用到DLL。
COM不是像Win32 API那样的一个函数集。COM更主要的是一种编写能够按面向对象API形式提供服务的组件的方法。COM给开发人员提供的是一种开发与语言无关的组件库的方法,但COM本身没有提供任何实现。
COM库
COM具有一个被称作是COM库(COM Library)的API,它提供的是对所有客户及组件都非常有用的组件管理服务。
COM方法
我们可以将COM作为一种编写程序的方法。
COM使用DLL来提供可在运行时被替换掉的组件。COM借助于以下一些手段保证这些组件可以充分利用动态链接所带来的各种好处:
提供了一个所有组件都应该遵守的标准。
允许使用组件的多个不同版本,而且这一点对于用户而言几乎是透明的。
使得可以按相同的方式来处理类似的组件。
定义了一个与语言无关的架构。
支持对远程组件的透明链接。
参考文献:《COM技术内幕》 Rogerson.D 杨秀章译