COM Vs .NET (Qt ActiveQt) - 番茄雞蛋面 - 博客園
COM Vs .NET (Qt ActiveQt)
這些天在學(xué)習(xí)Qt的ActiveQt功能,由于對(duì)于COM和ActiveX知識(shí)的缺乏,雖然讀了Qt ActiveQt相關(guān)的文檔很多遍,
很多的東西的理解都不是很徹底。于是決定補(bǔ)充一下COM的相關(guān)知識(shí)。
在網(wǎng)上查了相關(guān)的書籍,看到潘愛民老師翻譯的 Essential COM, 評(píng)論非常不錯(cuò),而且我也看過原作者的 Essental .NET ,感覺確實(shí)不錯(cuò),決定要買。?忽然又看到潘老師的自己的著作 COM原理與應(yīng)用 ,就先訂購(gòu)這本書,等看完了在班本質(zhì)論。
看完書的前三章,真是有種醍醐灌頂?shù)母杏X,很多模糊的概念和詞匯逐漸變的清晰起來,
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上得一篇文章。這本書又把我對(duì)COM的認(rèn)識(shí)提升了一層,而且是從C++方面。很多模糊的概念和詞匯又清晰了一些,比如
?-declspec (dllexport) dumpbin,?尤其是dll。
雖然我知道在windows平臺(tái)上對(duì)類庫(kù)的引用有兩種 static library(LIB) 和 shared library(DLL),Qt也可以以這兩種模式編譯,但是這兩種是怎么來的卻不是很清楚。看了COM的書后我錯(cuò)誤的認(rèn)為.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包括兩個(gè)部分,一部分是AxServer,可以把Qt應(yīng)用程序轉(zhuǎn)換為ActiveX Server,另外一部分是AxContainer,用來調(diào)用COM組件。這樣 C++寫的Qt應(yīng)用程序通過ActiveQt技術(shù)就可以和COM交互上了。
.NET COM Interoperation ( Wrapper?mechanism ,RCW and CCW)
由于公司同時(shí)使用.NET, Qt技術(shù),在Qt里面找到了和COM交互的ActiveQt,.NET怎么和COM交互了,查詢了網(wǎng)上的幾篇文章,對(duì)他們之間的交互有了一個(gè)大概的了解。由于COM和.NET都是微軟自己的核心技術(shù),對(duì)于這兩個(gè)技術(shù)之間的interoperation,微軟還是提供了解決方案,想想也是,否則是自砸招牌。
.NET和COM之間的互調(diào)實(shí)際上原理是一樣的,加了一個(gè)中間層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)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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