COM接口类型
COM技术内幕:调度接口与自动化笔记—————— 自定义接口:custom interface (vtbl接口/常规COM接口) 使用自定义接口时,由接口定义的那些方法都被定义在一个vtable中。对于vtable来说,只有那些方法入口才是有用的。 方法的顺序被定义在接口中。低级的vtbl接口可给C++程序员提供对组件进行有效聚合所需要的额外信息 调度接口:diapatch interface 脚本客户端不能处理自定义接口,它们只能使用调度接口。一个调度接口是一个 IDispatch接口的实现,它可以被脚本客户端理解,所以在编译时不需要知道接口的内存布局。 从方法名获得其ID,以及通过ID调用方法的这些映射机制是需要花时间的。而且除了这种映射机制,还有数据转换的过程。 Invoke仅接受一个参数,这个参数内包含的参数需要通过转换才能用来调用目标方法。 IDispatch::Invoke开销与参数调整的开销导致对于进程内组件效率远低于低级接口(100倍)对于进程外组件(2.5倍)远程组件(~1) 双重接口:dual interface 自定义接口可以提供最佳的性能,而调度接口可以被脚本客户端调用。为了两全其美,微软设计出了双重接口。双重接口从IDispatch接口派生,但是添加了一些新的方法到vtable中