IDL : Interface Define Language, 接口定义语言; 从广义上理解--两个模块之间接口通信的标准。
当跨语言跨平台跨主机调用时,往往由于堆栈构造的差异而失败,及需要一种机制可以进行跨**的通信。
IDL 由三部分组成: Proxy(代理), Pipe(管道), Stub(存根)。
下面解析IDL机制
调用方: 客户 (包含Proxy, Pipe)
被调用方: 对象 (包含 stub, Pipe)
1)客户通过调用代理来调用对象的方法;
2)代理并不是直接调用对象方法,而是将对象方法的标示,参数等堆栈信息 序列化(消除字节序等平台影响)的传送到Pipe;
3) Stub读取Pipe内容并解析调用对象的方法,(需重新构建对象环境下的与客户逻辑一致的堆栈信息);
4)Stub将返回结果序列化到Pipe;
5)Proxy 读取Pipe的返回值信息,并压栈到客户堆栈