• <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

            欧美日韩精品久久久久| 色婷婷久久久SWAG精品| 麻豆成人久久精品二区三区免费| 久久国产成人精品国产成人亚洲| 久久综合久久综合久久综合| 久久久久久毛片免费播放| 波多野结衣久久| 看全色黄大色大片免费久久久| 国产精品午夜久久| 久久久久综合网久久| 精品久久久噜噜噜久久久| 亚洲成色WWW久久网站| 伊人久久国产免费观看视频| 久久人人爽人人爽人人片AV麻烦 | 久久久久成人精品无码中文字幕 | 久久国产欧美日韩精品 | 精品久久久久久亚洲| 久久精品中文字幕有码| 久久午夜无码鲁丝片秋霞| 婷婷久久香蕉五月综合加勒比| 精品无码久久久久国产| 国产精品成人久久久久久久| 国产一区二区久久久| 26uuu久久五月天| 蜜臀久久99精品久久久久久小说| 精品999久久久久久中文字幕| 狠狠色综合网站久久久久久久| 国产精品久久久久jk制服| 一级a性色生活片久久无| 国产精品伊人久久伊人电影| 精品久久久久久无码专区| 久久99国产精品久久99小说| 婷婷综合久久中文字幕| 久久综合九色综合网站| 青草久久久国产线免观| 99国内精品久久久久久久| 热久久这里只有精品| 99久久精品费精品国产| 久久九九全国免费| 久久国产成人| 亚洲国产精品久久电影欧美|