想写一篇关于.net下COM工作原理的文章
今天想寫一篇關于.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里的托管與非托管代碼的混合編程這方面的知識,內容還是很多的。
大概就總結這些,有機會還是把那篇文章寫完,說真的,辛辛苦苦的寫了好幾個小時,結果理解都是有偏差的,真還讓人有點郁悶。還好及時發現,不至于發表出來?誤人子弟。多寫些文章還有是幫助的。
轉載于:https://www.cnblogs.com/WuCountry/archive/2006/12/11/589047.html
總結
以上是生活随笔為你收集整理的想写一篇关于.net下COM工作原理的文章的全部內容,希望文章能夠幫你解決所遇到的問題。