COM

来源:互联网 发布:淘宝商品拍摄价格 编辑:程序博客网 时间:2024/06/02 07:31

COM——Component Object Model (件对象模型)

是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。

COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等

 

COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。

 

COM,即组件对象模型,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。

 

使用组件的好处:http://www.kuqin.com/baike/20081006/21124.html

 

 

总结:

1。COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。

2。COM组件必须以二进制的形式发布,必须将其实现的语言隐藏,必须是动态链接的,可以动态的插入或卸出应用,自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序

3。COM组件不是一种计算机语言;不是DLL,只是利用DLL来给组件提供动态链接的能力,不是一个API函数集;

4。COM中的接口是一组由组件实现的提供给客户使用的函数。

  COM中接口是一个包含函数指针数组的内存结构,数组元素是一个由组件实现的函数地址。

5。IUnKnown是一个接口。所有COM接口都继承IUnKnown。IUnKnown的定义在WIN32 SDK中的UNKNWN头文件中。

[

         ///IUnKnown的定义

  interface IUnKnown

  {

  virtual HRESULT __stdcall QueryInterface(const IID& iid,void **ppv)=0;

  virtual ULONG __stdcall AddRef()=0;

  virtual ULONG __stdcall Release()=0;

  }

]

6。QueryInterface是IUnKnown的成员函数,客户可以通过此函数来查询组件是否支持某个特定的接口。

 QueryInterface函数可以使用if…then…else语句、数组、散列表、树来实现。

 

7。COM接口在C++中是用纯抽象基类实现。一个COM组件可以支多个接口。

  一个C++类可以使用多重继承来实现一个支持多个接口的组件。