COM、DCOM 和类型库
组件对象模型 (COM) 和分布式组件对象模型 (DCOM) 使用远程过程调用 (RPC) ,使分布式组件对象能够相互通信。 因此,COM 或 DCOM 接口定义 COM 对象的标识和外部特征。 它构成了客户端可以访问对象方法和数据的方式。 使用 DCOM 时,无论对象是存在于同一进程中、同一计算机上还是不同计算机上的不同进程,都能够进行此访问。 与 RPC 客户端/服务器接口一样,COM 或 DCOM 对象可以通过多个接口以多种不同方式公开其功能。
类型库
(.tlb) 类型库是一个二进制文件,它以其他应用程序在运行时可访问的形式存储有关 COM 或 DCOM 对象的属性和方法的信息。 使用类型库,应用程序或浏览器可以确定对象支持的接口,并调用对象的接口方法。 即使对象和客户端应用程序是使用不同的编程语言编写的,也会发生这种情况。 COM/DCOM 运行时环境还可以使用类型库为类型库中所述的接口提供自动跨单元、跨进程和跨计算机封送处理。
接口的特征
可以在接口定义中定义接口的特征, (IDL) 文件和可选的应用程序配置文件 (ACF) :
- IDL 文件指定网络上应用程序接口的特征,即如何在客户端和服务器之间或 COM 对象之间传输数据。
- ACF 文件指定仅与本地操作环境相关的接口特征,例如绑定句柄。 ACF 文件还可以指定如何以与计算机无关的形式封送和传输复杂的数据结构。
有关 IDL 和 ACF 文件的详细信息,请参阅 IDL 和 ACF 文件。
IDL 和 ACF 文件是用 Microsoft 接口定义语言 (MIDL) 编写的脚本,这是 OSF-DCE 接口定义语言 (IDL) 的 Microsoft 实现和扩展。 借助 IDL 语言的 Microsoft 扩展,可以创建 COM 接口和类型库。 编译器Midl.exe使用这些脚本来生成 C 语言存根和头文件以及类型库文件。
MIDL 编译器
根据 IDL 文件的内容,MIDL 编译器将生成以下任何文件。
C 语言代理/存根文件、接口标识符文件、DLL 数据文件以及自定义 COM 接口的相关头文件。 MIDL 编译器在接口属性列表中遇到对象属性时生成这些文件。 有关这些文件的更多详细信息,请参阅 为 COM 接口生成的文件。
编译的类型库 (.tlb) 文件和相关头文件。 MIDL 在 IDL 文件中遇到 库 语句时,会生成这些文件。 有关类型库的一般信息,请参阅自动化程序员参考中的 类型库的内容。
C/C++语言客户端和服务器存根文件以及 RPC 接口的相关头文件。 当 IDL 文件中存在没有 对象 属性的接口时,将生成这些文件。 有关存根和头文件的概述,请参阅 常规生成过程。 有关详细信息,请参阅 为 RPC 接口生成的文件。