COM还不止这些,包容和聚合可以很方便的重用代码,线程公寓让客户与组件的线程独立出来,连接点使客户与组件的交互更为直观,可执行组件可以建立更为健壮的松散耦合模块,MTS,异步组件,消息队列,队列组件等可以方便开发分布式系统。另外,COM+把这些东西揉合起来,让开发别的更加直接容易。

解决方案 »

  1.   

    **************************************************
    COM接口的设计意图是实现二进制级的程序复用而产生的。
    直接用class或函数是属于源码级的复用,这两个方向不可相提并论。
    *************************************************************> 如果是为了从C++中调用还真不如搞成dll方便,dll也可以搞成类的形式,当然有时候操纵别的程序如Word等,不得不用ComCOM的设计目的之一:为了让C++调用方便
    不同的C++编译器,实现方式不一样。dll解决了C语言的二进制共用问题,但连命名方式,几乎每个C++编译器都不一样,更不用说类的二进制布局了。> 让VB或其他的语言方便调用为了让VB等其它语言方便调用,COM增加了IDispatch接口,以便不支持VTable的语言可以调用。
      

  2.   

    > 让VB或其他的语言方便调用为了让VB等其它语言方便调用,COM增加了IDispatch接口,以便不支持VTable的语言可以调用。
    不支持IDispatch接口的COM对象,VB等不支持VTable的语言几乎是很难调用(对于一般人而言是不可能调用得来的)
    因此首先COM接口不是为方便VB而产生的。
      

  3.   

    大家在自己程序的内部是否也用COM的方法在不同的模块中传递和交互呢?
      

  4.   

    To: Bill1212(Bill)
    如非必要,我一般不这么做,毕竟麻烦嘛,而且有时会影响可读性。
    不过我的意见仅供参考,不要被我误导。
      

  5.   

    感谢各位的热心回复,特别是Muf(沐枫),
    我想知道大家在使用COM的时候,有多少是出于软件工程的角度?有多少是因为别的模块用了COM相关技术,自己不得已才使用COM?