实现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
浙公网安备 33010602011771号