组件对象模型
*,*的百科全书
组件对象模型(英语:Component Object Model,缩写COM)是微软的一套软件组件的二进制接口标准。这使得跨编程语言的进程间通信、动态对象创建成为可能。COM是多项微软技术与框架的基础,包括OLE、OLE自动化、ActiveX、COM+、DCOM、Windows shell、DirectX、Windows Runtime。COM与实现语言种类无关,如此使用它实现的对象可用在不同于开发它的环境,甚至跨越机器边界。对制作良好的对象,COM使对象得以重复使用,而无须知道其内部实现,因为它强制实现者提供与实现分离、确切定义的接口。各语言不同的存储配置语义使组件对象模型用对象引用计数(Reference counting)管理其自身的产生与销毁。不同接口间类型转换的铸型用 QueryInterface 方法。
COM Interop
COM Interop 是一种让 .NET Framework 的程序能够和 COM 的程序相互操作的一种桥接技术,是 .NET Framework 互通性的一环,COM Interop 可以让 .NET Framework 的程序使用 COM 组件,也可以让 COM 程序使用 .NET Framework 的组件,例如可以使用 .NET Framework 开发应用程序给 ASP 的应用程序使用,或是把旧有的 ActiveX 组件让 .NET Framework 的程序调用。
COM Interop 的服务是由 System.Runtime.InteropServices 名字空间中的类别来提供,其中最重要的是 Marshal 类别,它提供了 managed code 和 unmanaged code 之间的资料格式与指针转换,对于互通性来说具有相当大的帮助。[1]
在 .NET Framework SDK 中提供了可由 COM 类型库中产生 .NET 组件 的 tlbimp.exe,以及让 .NET 组件产生类型库的regasm.exe两个工具程序[2]。