COM 对象 和 接口

原创 2003年08月24日 16:56:00

COM Objects and Interfaces

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

一个对象实现一个接口,他的意思就是该对象使用代码实现了接口的每个方法

并且为这些函数通向com库提供了com的二进制指针。然后com使这些函数运行在

请求了一个指向该接口的任何客户端。

 

Interfaces and Interface Implementations

 

COM 在接口的定义和实现上有根本的差别。一个接口实际上是由一组定义了用法的相

联系的函数原型组成,只是他不能够被实现。这些函数原型就相当于C++中含有纯虚拟函数的基类。一个接口定义制定了接口的成员函数、调用方法、返回类型、他们的参数的数量和类型,这些函数要干什么。但是这里并没有与接口实现相关的东西。一个接口的实现就是程序员在一个借口定义上提供的执行相关动作的代码。

    一个接口的实现就是程序员在一个借口定义上提供的执行相关动作的代码。客户调用完全是决定于接口的定义。

 

Interface Pointers and Interfaces

 

接口实现的一个实例,实际上就是一个指向一组方法的指针,即是指指向一个接口的函数表,该函数表引用了该接口所有方法的实现。

    每个接口,是一个固定的一组方法的集合,在运行时通过globally unique interface identifier (IID) 来定位。这里,IIDcom支持的globally unique identifier (GUID)的特殊的实例。这样做就不会产生单一系统上相同名字、接口的多个版本的COM之间的冲突了。

  • 一个COM接口与C++类是不一样的;

  • 一个COM接口不是一个对象——他只是简单的关联一组函数,是客户和程序之间通信的二进制标准。只要他提供了指向借口方法的指针,这个对象就可以用任何语言来实现他。;

  • COM接口十强类型的——每个接口有他自己的借口标识符;

·         COM接口的不变性——你不能够用老版本的接口标识符定义新的版本,接口的IID定义的接口合同是明确的、唯一的

 

IUnknown and Interface Inheritance

 

    继承在COM 里并不意味着代码的重用。因为接口没有实现关联,借口继承并意味着代码继承。他的意思仅仅是,一个接口同一个合同关联,就像C++的纯虚拟基类的创建和修改样,可以添加方法或者更进一步的加强方法的使用。在COM里没有选择性继承。如果一个接口由另一个接口继承的话,他就包含了另一个接口定义的所有的方法。

 

Using and Implementing IUnknown

 

    COM 为实现和使用对象和对象的内部通信提供了一个丰富的标准集合。对IUnknown接口的实现和使用的细节,请参见下面主题:QueryInterface: Navigating in an Object。 

   

Rules for Implementing QueryInterface

 

管理实现一个COM对象的IUnknown::QueryInterface方法的三个主要规则:

    1.对象必须要有一个标识符; 

    2.一个对象实例的接口集合必须是静态的(static); 

    3.在对象中从任何一个其他的接口查询此接口都应该成功。

 

 

通过引用计数来管理对象的生命周期

    使用 AddRef()    //增加引用

         Realase()   //减少引用

COM组件的接口和对象

一、 前言 在COM规范中,最基本的两个要素就是对象与接口,因为COM就是由这两者来共同实现的。COM对象在组件中是被封装起来的,客户代码只能通过接口来访问COM对象并享受其服务,由于客户与COM...
  • u010523811
  • u010523811
  • 2017年02月07日 17:21
  • 2075

18.可连接对象和连接点原理

讲解可连接对象和连接点原理,说明实现一个可连接对象需要做的事情。
  • wenzhou1219
  • wenzhou1219
  • 2016年07月16日 21:04
  • 767

COM组件开发(一)—— 对象与接口

一.前言        在COM规范中,最基本的两个要素就是对象与接口,因为COM就是由这两者来共同实现的。COM对象在组件中是被封装起来的,客户代码只能通过接口来访问COM对象并享受其,由于客户与C...
  • q5806622
  • q5806622
  • 2015年01月19日 23:08
  • 3692

调用 COM 对象

调用 COM 对象 大多数 Windows 程序员都熟悉组件对象模型(Component Object Model,COM)。在某程度上,.NET 框架 就是为了替换 COM,但是,系统仍然...
  • hadstj
  • hadstj
  • 2014年06月23日 16:41
  • 1207

【COM原理和应用】2、COM对象和接口

1、COM对象 在客户程序与组件交互的过程中,COM组件将以COM对象形式封装的实体提供给客户程序。...
  • shaqoneal
  • shaqoneal
  • 2015年02月04日 17:56
  • 874

COM对象和接口

        我们将详细介绍COM规范,尤其是COM对接口使用的约定,这部分内容是COM标准的核心。COM接口是建立在二进制一级的标准。COM的一些高级特性如多线程模型、分布式COM等都以此为基础。...
  • cl007
  • cl007
  • 2001年07月16日 22:47
  • 1356

COM对象与C++对象的区别

 ATL(ActiveTemplate Library,活动模板库)是微软开发的一套 COM(ComponentObject Model,组件对象模型)支持库。通常,脱离所支持的对象而讨论类库意义不大...
  • barech
  • barech
  • 2009年02月15日 12:37
  • 1885

C#中COM操作(二)---接口查询

    上一篇末留下的一个疑问这一回来作个解答吧。大家看了下面的图就清楚了:    结论就是t1,t2,t3是三个不同的引用,也就是说在.NET里面代表了三种不同的类型,但是三种类型的GUID却是一样...
  • bindsang
  • bindsang
  • 2008年08月18日 23:30
  • 4168

COM组件 IDispatch 及双接口的调用

一、前言 前段时间,由于工作比较忙,没有能及时地写作。其间收到了很多网友的来信询问和鼓励,在此一并表示感谢。咳......我也需要工作来养家糊口呀...... 上回书介绍了两种方法来写自动...
  • CNHK1225
  • CNHK1225
  • 2016年01月21日 15:41
  • 1796

Com对象的解释

⊙ 第一章 概述   COM 是什么   COM 对象与接口   COM 进程模型   COM 可重用性⊙ 第二章 COM 对象模型   全局唯一标识符 GUID   COM 对象   COM 接口...
  • EdisonGG
  • EdisonGG
  • 2007年12月26日 10:47
  • 1913
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:COM 对象 和 接口
举报原因:
原因补充:

(最多只允许输入30个字)