您的位置:首页 > 其它

想写一篇关于.net下COM工作原理的文章

2006-12-11 17:23 351 查看
今天想写一篇关于.net下COM工作原理的文章。花了大概3个小时,文章也写的差不多了,可是越写到后来越发现自己的观点以及想法越错误。
边写边查MSDN,最后不得不放弃发布这篇文章了。虽然花了好几个小时,最后什么也没有,但还是学到了不少东西。
总结一下.net下是如何实现与COM(或者ActiveX)交互的吧。

记得也是在博客园上看到有一篇文章关于用C#写ActiveX的文章,与其说是.net写ActiveX不如说是.net如何使用它们。
首先应该明确以下几个问题:
1、在.net平台下,没有真正的COM或者ActiveX,它们都只是.net下的一个封装。
2、它的封装是通过COM Interop对托管对象向传统COM进行一个接口暴露。反之,也是通过COM Interop对传统COM进行一个.net包装,使.net可以像访问普通对象一样的访问传统COM。而传统的COM仍然要在目标机器上注册。
3、不管是.net访问传统COM,还是通过COM访问.net对象,最终都是离不开.net 平台的。
4、通过传统的COM来访问.net对象,其实是用.net下的几个工具,先从.net下的对象中取得一些源数据,转化成COM数据类型,然后注册给Windows,同时也可以暴露给其它应用程序(如C++,当然它是二进制的,但只是一些数据和接口的定义,不是真正的代码)。当COM对象来生成.net对象时,用户是不知道他所要的对象是从哪来的,其实是.net的COM Interop生成,交给传统的COM,然后由COM返回经过COM Interop封装后的.net对象。当然,用户还是把它当传统COM来使用,.net为我们完成了数据转化工作。
有兴趣的读者可以查一下MSDN里的托管与非托管代码的混合编程这方面的知识,内容还是很多的。
大概就总结这些,有机会还是把那篇文章写完,说真的,辛辛苦苦的写了好几个小时,结果理解都是有偏差的,真还让人有点郁闷。还好及时发现,不至于发表出来䚶误人子弟。多写些文章还有是帮助的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: