如果你从头读过:
COM原理与应用(潘SIR)、COM本质论(DAN BOX)就明白了。
接口实际上是软件之间进行通讯、交互的桥梁、规范!实现一个接口就
意味着实现了功能,就可以和其他组件、系统合作,多接口存在意义就是
提供更多的处理能力(如果你实现的话)
个人理解,仅供参考。

解决方案 »

  1.   

       根本不提倡使用多接口技术,COM已发展经发展成了分布式的COM(DCOM, COM+)。如果你使用了多接口,那么你每使用一个接口,就要创建多接口实现类的一个实例。因为带来系统资源的浪费。
       另外,在COM+环境中,COM是可以有状态的,COM的生存期不是简单的由引用计数来决定。因为在分布式环境中,要虑到客户端异常,中断连接的情况。“闲置”的COM(虽然引用计数不用0)系统仍然可以释放它以节约系统资源。在这种情况下,多接口情况下的状态保存比单接口要复杂得多。
       
      

  2.   

    《深入理解windows2000分布式系统》(潘爱民译,david chappell著 清华大学出版社出版
    )
    该书第五章是com概述,很简洁,很容易理解!你能找到很好的解释!
    也借此向大家推荐这本好书!
    David chappell的书通俗易懂
    《understanding .net:a tutorial and analysis》
    Don box 
    《essential .net: the clr》期盼着两本书的引进!
      

  3.   

    《深入理解windows2000分布式系统》(潘爱民译,david chappell著 清华大学出版社出版
    )
    该书第五章是com概述,很简洁,很容易理解!你能找到很好的解释!
    也借此向大家推荐这本好书!
    David chappell的书通俗易懂
    《understanding .net:a tutorial and analysis》
    Don box 
    《essential .net: the clr》期盼着两本书的引进!
      

  4.   

    Wither说的有问题,多接口并不代表多实例。接口同实例完全是两个不同的概念,
    接口时访问实例的方法,实例可以有一个也可以有多个接口,这要看具体的COM类
    是怎么实现的。多接口有很多存在的意义,如为不同的环境提供不同的使用方式,
    为兼容以前的旧版再扩充新的功能等等。多接口怎么说呢,用C++来解释,一个接口就是一个特殊的纯虚基类,然后,某些
    实现多接口的COM类就是一个继承了多个虚基类(接口)的子类。你可以对这个子类
    的实例用它的任何虚基类(接口)来调用他的功能。现在经常用到的双接口就是多接口的一个典型,目前多数COM都提供双接口,可以
    在不同的场合、环境中使用不同的接口,但是并不代表双接口的构件,每使用一
    个借口,就会构造一个新的实例。
      

  5.   


    To XiDao(小刀): 
    我并不是说访问不同接口要创建不同的实例,而是指多接口的实现类会有更多的数据成员,用户在使用其中一个接口的并不需要访问其中某些成员。
      

  6.   

    multiple interfaces 的意义在于
    1: 用C++实现的自然
    2: 平滑维持组件的生命力
      

  7.   

      因为COM是基于跨平台的,用什么样的语言开发的COM,要可以在任何环境下使用。但是各种语言的规范不一样,尤其是VB,JAVA这样的语言,它不支持指针,不能用指针调用COM的方法和属性,就要对这样的语言支持多接口(最少要多一个IDispatch接口)。
      虽然,我说的可能和权威说的不太一样,但我想意思应该是这样的。:-))
      
      

  8.   

    有收获。
    再问一个:对于一个com+对象,在asp中怎样调用不同的接口?
      

  9.   

    to finalwish(gogo):
    VB,JAVA是不支持指针,但是不代表他们只能调用IDispatch接口,他们一样可以调用
    vtable类型的接口的。而且特别是java 先天就对vtable类型接口支持的好。只有asp中的脚本语言不能调用vtable接口类型,COM类一定要实现IDispatch接口,或
    双接口,asp才能调用。
      

  10.   

    : XiDao(小刀) 同意你的观点!
    学习中.........
      

  11.   

    多接口有几个用途,一个是功能的划分,第二个是版本的升级,一般都是使用Dual接口这就意味着用户有两种方式调用接口里的方法,如果只有IDispatch方式来调用方法的话,即后绑定,升级接口时无需再新建接口只要将新的方法添加到接口中就可以了,但是为了支持类型库方式的调用即前绑定
    他要求接口不变性以免客户端瘫痪,所以只能再加一个新的接口,然后以后再升级客户端,
    第三就是作为聚合模型使用,其实这不算是多接口,只是将其他的组件的接口直接暴露给用户而已,本质就是完全的二进制重用.