COM Vs .NET (Qt ActiveQt) - 番茄雞蛋面 - 博客園
COM Vs .NET (Qt ActiveQt)
這些天在學習Qt的ActiveQt功能,由于對于COM和ActiveX知識的缺乏,雖然讀了Qt ActiveQt相關的文檔很多遍,
很多的東西的理解都不是很徹底。于是決定補充一下COM的相關知識。
在網上查了相關的書籍,看到潘愛民老師翻譯的 Essential COM, 評論非常不錯,而且我也看過原作者的 Essental .NET ,感覺確實不錯,決定要買。?忽然又看到潘老師的自己的著作 COM原理與應用 ,就先訂購這本書,等看完了在班本質論。
看完書的前三章,真是有種醍醐灌頂的感覺,很多模糊的概念和詞匯逐漸變的清晰起來,
COM的概念,in-process Vs. out-of-process server,COM component, COM Object,
COM interface, EXE,? DLL(Dynamic Link Library), QueryInterface, IUnknown, GUID.
今天在查資料,看到了以前down的chm電子文檔, From CPP to COM ,又豁然開朗了一把,Google查了一下,原來是MSDN上得一篇文章。這本書又把我對COM的認識提升了一層,而且是從C++方面。很多模糊的概念和詞匯又清晰了一些,比如
?-declspec (dllexport) dumpbin,?尤其是dll。
雖然我知道在windows平臺上對類庫的引用有兩種 static library(LIB) 和 shared library(DLL),Qt也可以以這兩種模式編譯,但是這兩種是怎么來的卻不是很清楚。看了COM的書后我錯誤的認為.NET以前的dll都是COM組件。
dumpbin工具可以查看dll的信息。
Dumpbin
The Microsoft COFF Binary File Dumper (DUMPBIN.EXE) displays information about 32-bit Common Object File Format (COFF) binary files. You can use DUMPBIN to examine COFF object files, standard libraries of COFF objects, executable files, and dynamic-link libraries (DLLs).
Qt CPP COM Interoperation (ActiveQt)
Qt的ActiveQt Frmaework包括兩個部分,一部分是AxServer,可以把Qt應用程序轉換為ActiveX Server,另外一部分是AxContainer,用來調用COM組件。這樣 C++寫的Qt應用程序通過ActiveQt技術就可以和COM交互上了。
.NET COM Interoperation ( Wrapper?mechanism ,RCW and CCW)
由于公司同時使用.NET, Qt技術,在Qt里面找到了和COM交互的ActiveQt,.NET怎么和COM交互了,查詢了網上的幾篇文章,對他們之間的交互有了一個大概的了解。由于COM和.NET都是微軟自己的核心技術,對于這兩個技術之間的interoperation,微軟還是提供了解決方案,想想也是,否則是自砸招牌。
.NET和COM之間的互調實際上原理是一樣的,加了一個中間層wrapper class,分別是Runtime Callable Wrapper和COM Callable Wrapper.
Regasm
The Assembly Registration tool reads the metadata within an assembly and adds the necessary entries to the registry, which allows COM clients to create .NET Framework classes transparently. Once a class is registered, any COM client can use it as though the class were a COM class. The class is registered only once, when the assembly is installed. Instances of classes within the assembly cannot be created from COM until they are actually registered.
Tlbexp
Tlbimp
.NET COM comparison ( .NET is a better COM)
Assembly
(To be continued)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
