COM 互操作介绍 (Visual Basic)
组件对象模型 (COM) 允许对象向其他组件和主机应用程序公开自己的功能。 虽然 COM 对象多年来一直是 Windows 编程的基础,但为公共语言运行时 (CLR) 设计的应用程序具有许多优势。
.NET Framework 应用程序最终将取代那些用 COM 开发的应用程序。 在此之前,可能必须通过 Visual Studio 来使用或创建 COM 对象。 借助与 COM 的互操作性(即 COM 互操作),你可以使用现有的 COM 对象,同时按自己的节奏过渡到 .NET Framework。
通过使用 .NET Framework 创建 COM 组件,你可以使用免注册 COM 互操作。 这样,你就可以在计算机上安装了多个 DLL 版本时控制启用哪个版本,并允许最终用户使用 XCOPY 或 FTP 将你的应用程序复制到其计算机上可以运行该应用程序的适当目录中。 有关详细信息,请参阅免注册 COM 互操作。
托管代码和数据
为 .NET Framework 开发的代码称为托管代码,其中包含 CLR 使用的元数据。 .NET Framework 应用程序使用的数据称为托管数据,因为运行时管理与数据相关的任务,例如分配和回收内存以及执行类型检查。 默认情况下,Visual Basic .NET 使用托管代码和数据,但你可以使用互操作程序集访问 COM 对象的非托管代码和数据(本页后面将介绍)。
程序集
程序集是 .NET Framework 应用程序的主要构建基块。 它是作为包含一个或多个文件的单个实现单元进行生成、版本控制和部署的功能集合。 每个程序集都包含一个程序集清单。
类型库和程序集清单
类型库描述 COM 对象的特征,例如成员名称和数据类型。 程序集清单对 .NET Framework 应用程序执行相同的功能。 它们包括有关以下内容的信息:
程序集标识、版本、区域性和数字签名。
构成程序集实现的文件。
构成程序集的类型和资源。 这包括从中导出的类型和资源。
对其他程序集的编译时依赖关系。
程序集正确运行所需的权限。
有关程序集和程序集清单的详细信息,请参阅 .NET 中的程序集。
导入和导出类型库
Visual Studio 包含实用工具 Tlbimp,该工具允许你将信息从类型库导入到 .NET Framework 应用程序。 你可以使用 Tlbexp 实用工具从程序集生成类型库。
有关 Tlbimp 和 Tlbexp 的信息,请参阅 Tlbimp.exe(类型库导入程序)和 Tlbexp.exe(类型库导出程序)。
互操作程序集
互操作程序集是在托管代码和非托管代码之间架起桥梁的 .NET Framework 程序集,它将 COM 对象成员映射到等效的 .NET Framework 托管成员。 Visual Basic .NET 创建的互操作程序集处理使用 COM 对象的许多细节,例如互操作封送处理。
互操作封送处理
所有 .NET Framework 应用程序共享一组通用类型,无论使用哪种编程语言,这些类型都可以实现对象的互操作性。 COM 对象的参数和返回值有时使用的数据类型与托管代码中使用的数据类型不同。 互操作封送处理是指在 COM 对象之间移动参数和返回值时将其打包成等效数据类型的过程。 有关详细信息,请参阅互操作封送处理。