到底COM是个啥?
COM(Component Object Model) 定义了一个在运行时可复用组件直接进行二进制的交互时的标准。说白了,就是进程、组件之间数据交换的标准。只要按照这个标准来实现,进程、组件就可以跨越机器的界限交换数据,包括函数调用,参数传递等等。既然是二进制标准,那就应该是跟语言无关的,不管你用C++,C还是Java或者Python都可以在Linux或者其他系统上实现一套COM,然后跟现在微软的COM进行通信,事实上COM对语言有一点要求,就是必须支持function pointer,那C是可以的,Java就不行了。 为什么COM必须要求语言支持function pointer呢?因为指针可以隐藏实现的细节,比如,你现在有一个interface pointer,你是不知道到底它指向什么的,只有执行起来,才知道调用哪个实现。那为什么不用引用或者Java中类似的方法呢?引用不能调用方法啊! 首先看COM是由哪些部分组成的: host system提供run-time environment能够满足COM标准的要求; Interfaces 定义了feature contracts,component实现了这些interface,也就是实现了feature; Server 负责把component提供给host system,client则使用component提供的feature;