接口封送
除非确信接口永远不会在单元、线程或进程边界之间使用,否则需要决定如何为接口提供封送支持。 可通过三种方法提供封送支持:
- 编写自己的代理/存根代码来调用 COM 通道,后者会调用 RPC 运行时库。 从理论上讲,这种做法可行,但实际上,不付出大量努力,几乎无法实现。
- 使用接口定义语言 (IDL) 文件描述接口,并使用 MIDL 编译器生成代理/存根 DLL。 此方法在可接受的数据类型方面提供最佳性能和最大的灵活性。 使用 MIDL 生成的代理存根,不仅可以控制内存管理,甚至可以跨不同平台控制复杂数据类型封送和拆收。
- 使用 MIDL 生成系统用于在运行时提供封送支持的类型库。 这是实现封送支持最简单的方法。 只需生成类型库并注册。 接口必须自动化兼容(即 oleautomation 或 dual),这样可以用作方法参数的数据类型会存在一些限制。 但是,在大多数情况下,能够用以其他语言(如 Microsoft Visual Basic 和 Java)编写的程序访问接口的优势会超过数据类型限制。
相关主题