实现COM组件访问.Net组件的方法

当我们项目中同时应用了COM技术及.NET技术时候,其最重要是解决它们之间如何通信、调用的问题,按理论来说,作为非托管代码(UnManaged Code)COM组件与托管代码(Managed Code).Net组件是无法相互调用的,COM组件根本不能在CLR基础构造上运行,受托管的.Net代码也要求其相互作用的代码也必须运行在CLR基础下。既然我们无法做到COM.Net之间的直接调用,那我们就需要创建一个相当于代理的中间介质,它叫做可调用COM包装器(COM callable wrapper (CCW),以下简称为CCW)

 

如果使用CCW包装器来实现COM.Net之间的调用问题?

1. 开发可在COM组件调用的.Net组件,其中要遵守的两个前提条件。

1.1必须用托管代码创建接口,并确保接口在类中实现。

1.2允许COM组件调用的方法必须定义为Public

创建.Net组件,并通过强名工具进行签名注册。
sn –k sample.snk
将创建一个新的密钥文件

2. 部署可在COM组件调用的.Net组件。

2.1 为你的.net组件创建一个类型库,该.net组件的类型库含有与COM组件相同的元数据,类型库文件扩展名为“.tlb”(工具:tlbexp
   方法:tlbexp sample.dll /out: sample.tlb

2.2 注册.net组件(工具:regasm
   方法:regasm /tlb sample.tlb sample.dll

2.3.net组件安装到全局装配件缓存(GAC)中(工具:gacutil
   方法:gacutil /i sample.dll

版权声明:本文为webq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/webq/archive/2006/07/09/446727.html