• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            COM與DLL

            com英文為Component Object Model(組件對(duì)象模型),是微軟生產(chǎn)軟件組件的標(biāo)準(zhǔn)。
            它是構(gòu)造二進(jìn)制兼容軟件組件的規(guī)范,不管組件應(yīng)用何種語(yǔ)言編寫(xiě)只要遵循com規(guī)范就可以
            相互直接通信。提出com規(guī)范主要是為了滿足: 
            1.程序的快速開(kāi)發(fā),可以將一個(gè)大型的工程分成若干個(gè)com組件同時(shí)開(kāi)發(fā)。 
            2.可以動(dòng)態(tài)的插入或卸載com組件。 
            3.可以隱藏或封裝com組件內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。
            com組件可以由不同的語(yǔ)言進(jìn)行編寫(xiě),但com組件之間的通信是通過(guò)組件的接口來(lái)實(shí)現(xiàn)的,
            com組件接口的實(shí)現(xiàn)是統(tǒng)一的,它采用的是虛擬函數(shù)表(VTBL)形式。虛擬函數(shù)表中包含了
            組件函數(shù)的一組指針,我們可以通過(guò)這組指針來(lái)獲取我們想要通信的組件函數(shù)的內(nèi)存地址。 
            dll(動(dòng)態(tài)鏈接庫(kù))是包含函數(shù)和數(shù)據(jù)的模塊的集合。它可以導(dǎo)出數(shù)據(jù)也可以導(dǎo)出函數(shù)以供
            其它的dll調(diào)用。dll的加載可以通過(guò)靜態(tài)鏈接和動(dòng)態(tài)鏈接兩種方式。 
            1.靜態(tài)鏈接時(shí)將所要鏈接的dll模塊以二進(jìn)制的形式編譯進(jìn)其他模塊。 
            2.動(dòng)態(tài)鏈接指調(diào)用模塊在運(yùn)行時(shí)加載DLL,使用LoadLibrary函數(shù)或LoadLibraryEx
            函數(shù)將dll 加載到進(jìn)程的地址空間,并調(diào)用GetProcAddress函數(shù)以獲取導(dǎo)出的 DLL 
            函數(shù)的地址。 
            動(dòng)態(tài)加載dll的優(yōu)點(diǎn): 
            1.DLL可節(jié)省內(nèi)存并減少交換。通過(guò)在內(nèi)存中共享 DLL 的單個(gè)副本,多個(gè)進(jìn)程可以同時(shí)
            使用一個(gè)DLL。相比之下,對(duì)于使用靜態(tài)鏈接庫(kù)構(gòu)建的每一個(gè)應(yīng)用程序,Windows 都要
            在內(nèi)存中為其加載庫(kù)代碼的一個(gè)副本。 
            2.DLL 可節(jié)省磁盤(pán)空間。 多個(gè)應(yīng)用程序可以共享磁盤(pán)上的一個(gè) DLL 副本。相比之下,
            使用靜態(tài) 鏈接庫(kù)構(gòu)建的每一個(gè)應(yīng)用程序都需要讓鏈接到程序文件映像的庫(kù)代碼作為一個(gè)
            單獨(dú)的專用副本。 
            dllcom的關(guān)系:com是一種規(guī)范,按照是com規(guī)范實(shí)現(xiàn)的dll可以被視為com組件,
            例如我們用mfc建立的Active X控件工程其中的接口封裝是靠idl描述的所以可以視為
            com組件。而且從上面關(guān)于comdll的說(shuō)明可以看出com組件的接口是一組具有特定規(guī)范的
            函數(shù),所以com組件可以別視為dlldll不一定是com組件。 
            comDLL最大的區(qū)別就是: dll是以函數(shù)集合的方式來(lái)調(diào)用的是編程語(yǔ)言相關(guān)的VC必須
            加上extern "C"...COM是以interface的方式提供給用戶使用的是一種二進(jìn)制的調(diào)用
            規(guī)范,是與編程語(yǔ)言無(wú)關(guān)的,它使用idl接口定義語(yǔ)言來(lái)描述自己使用類繼承來(lái)實(shí)現(xiàn)自己的功能
            和方法.DLL只有DLL一種形勢(shì),里面可任意定義函數(shù)無(wú)限制,只能運(yùn)行在本機(jī)上 而COM 
            DLLEXE兩種存在形勢(shì): COM所在的DLL中必須導(dǎo)出四個(gè)函數(shù): 
            dllgetobjectclass, dllregisterserver, dllunregisterserver, 
            dllunloadnow 
            這四個(gè)函數(shù)各有作用,有些是提供給COM管理器用的,通過(guò)CLSIDIID來(lái)使用,有些是提供
            給注冊(cè)機(jī)用的. 
            COM結(jié)合MTS,就是COM+, DCOM的高級(jí)版本,提供了更為強(qiáng)大和安全的分布式COM服務(wù), 
            DCOM運(yùn)行在不同的機(jī)器上 用proxystub來(lái)實(shí)現(xiàn)遠(yuǎn)程接口的本地映射 二者從執(zhí)行速度來(lái)
            說(shuō) 二者相差無(wú)幾 但是啟動(dòng)速度DLL要比COM快!

             

            posted on 2011-01-10 12:37 肥仔 閱讀(1612) 評(píng)論(0)  編輯 收藏 引用 所屬分類: COM

            国产福利电影一区二区三区久久久久成人精品综合 | 欧美激情精品久久久久久| 久久国产精品99久久久久久老狼 | 久久亚洲日韩精品一区二区三区| 亚洲一级Av无码毛片久久精品| 久久99精品国产麻豆不卡| 欧美亚洲日本久久精品| 国产毛片欧美毛片久久久| 欧美一区二区三区久久综| 久久99国产精品久久99果冻传媒| 国产99久久九九精品无码| 中文成人无码精品久久久不卡| 亚洲级αV无码毛片久久精品| 99热成人精品热久久669| 久久久久国产一级毛片高清板| 亚洲欧美日韩精品久久亚洲区| 久久婷婷色综合一区二区| 国内精品伊人久久久久av一坑| 国产视频久久| 无码人妻精品一区二区三区久久久| 狠狠色丁香久久婷婷综| 久久午夜福利电影| 国产精品久久国产精麻豆99网站| 久久久久国产视频电影| 99久久这里只有精品| 久久91精品国产91久| 国产99久久久国产精品~~牛 | 婷婷久久综合九色综合绿巨人 | 国产综合久久久久久鬼色| 久久精品女人天堂AV麻| 久久久久亚洲av无码专区喷水| 久久毛片免费看一区二区三区| 久久综合九色综合网站| 久久精品视频一| 久久AAAA片一区二区| 久久久久久久尹人综合网亚洲 | 国产成人无码精品久久久免费| 久久久无码一区二区三区| 久久只有这里有精品4| 欧美久久亚洲精品| 精品久久久久久国产三级|