首页 > 代码库 > COM原理

COM原理

 

COM对象是建立在二进制可执行代码级的基础上,而C++等语言中的对象是建立在源代码级基础上的, COM对象是独立于编程语言的。

 

COM带来的不仅仅是一项技术,更是一种软件结构的实现。 COM提供了程序互连的基础,程序之间的通信有了统一的标准,而且这种通信可以从桌面环境扩展到网络环境,甚至是异构网络。

 

 

组件之间的接口是组件软件的关键, 在同一软件中的组件必须使用相同的接口标准才能保证组件之间可以进行通信。

 

COM是以对象为基本单元的模型,一个组件程序可以包含一个或多个组件对象。

程序与程序之间进行通信时,通信的双方应该是组件对象,也叫做COM对象,而组件程序是提供COM对象的载体。

 

一个组件可以包含多个COM对象,并且每个COM对象可以实现多个接口。  COM对象其实是一个类的实例,只不过这是个遵守COM规范的类。

每个COM对象可以实现多个接口。

 

COM中的两个关键: <1> COM接口标准   <2> COM对象标准(也是遵守COM规范的类的标准)

 

COM标准包括 规范实现 两大部分。

规范部分定义了组件和组件之间通信的机制,这些规范不依赖与特定的语言和操作系统,只要按照该规范,任何语言都可使用;

实现部分是COM库, COM库位COM规范的具体实现提供了一些核心服务。

 

COM是面向对象的软件模型

 

COM对象的概念类似于C++中对象的概念, 即某个类的一个实例。

 

类则是一组相关的数据和功能组合在一起的一个定义。   使用对象的应用或另一个对象称为客户。

 

接口是一组逻辑上相关的函数集合,其函数也被称为接口成员函数。

 

客户/服务器软件模型

 

COM是以客户/服务器模型为基础。

 

 

COM库,包括一些核心的系统级代码,也正是这部分狠心代码,才使得对象和客户之间可通过接口在二进制代码级进行交互。

在Windows下,这些库以DLL文件形式存在,其中包括以下内容:

  1. 提供了少量的API函数实现客户和服务器端COM应用的创建过程。
  2. COM通过注册表查找本地服务器即EXE程序,以及程序名与CLSID的转换等。
  3. 提供了一种标准的内存控制方法,使应用控制进程中的内存的分配。

 

COM原理