COM —— Component Object Model即组件对象模型,是一种以组件为发布单元的对象模型。
COM是建立在二进制可执行代码级的基础上的,C++等语言中的对象是建立在源码基础上的,因此COM对象是语言无关的。
与COM深有渊源的是OLE(Object linking and embedding)对象链接和迁入。OLE使得Windows OS上的Application具有极强的交互性。OLE技术就是以COM规范为基础发展起来的。
COM的表现形式:在Windows平台上,有可能是一个DLL或者一个EXE文件。一个组件程序可以包含多个COM对象,每个COM对象又可以实现多个接口。当另外的组建或者程序——统称client调用组件的功能时,它首先创建一个COM对象或者通过其他的途径获取一个COM对象,然后通过该对象调用它所提供的服务。所有服务结束后,Client应该释放掉对象所占用的资源和对象本身。
COM结构
COM是面向对象的软件模型,所以对象是COM的基本要素之一。在COM模型中,对象本身对于客户来说是不可见的,客户请求服务时,只能通过接口进行。每一个接口都有一个128位的GUID来标志。 客户通过GUID获取接口指针,再通过接口指针就可以调用其相应的成员函数。