• <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>
            隨筆 - 20, 文章 - 0, 評(píng)論 - 45, 引用 - 0
            數(shù)據(jù)加載中……

            COM組件簡介

                     面向?qū)ο蟮乃枷腚y以適應(yīng)這種分布式軟件模型,于是組件化程序設(shè)計(jì)思想得到了迅速的發(fā)展。 按照組件化的程序設(shè)計(jì)的思想,復(fù)雜的應(yīng)用程序被設(shè)計(jì)成一些小的,功能單一的組件模塊,這些組件模塊可以運(yùn)行在同一臺(tái)機(jī)器上,也可以運(yùn)行在不同的機(jī)器上。 為了實(shí)現(xiàn)這樣的應(yīng)用軟件,組建程序和組建程序之間需要一些極為細(xì)致的規(guī)范, 只有組件程序遵守了這些共同的規(guī)范,然間系統(tǒng)才能正常運(yùn)行。 為此,OMG和Microsoft分別提出了CORBA(Common Object Request Breaker Architecture)和COM(Component Object model)標(biāo)準(zhǔn),目前CORBA模型主要應(yīng)用于UNIX操作系統(tǒng)平臺(tái)上,而COM 則主要應(yīng)用于Microsoft Windows操作系統(tǒng)平臺(tái)上。

             COM的概念:

                   COM是一個(gè)說明如何建立可動(dòng)態(tài)互變組件的規(guī)范。它提供了為保證鞥能夠互操作,客戶和組件應(yīng)遵循的一些標(biāo)準(zhǔn)。COM規(guī)范就是一套為組件架構(gòu)設(shè)置標(biāo)準(zhǔn)的文檔。COM并不是一種計(jì)算機(jī)語言,COM所說明的是如何編寫組件,但具體選用說明語言來編寫則完全是自由的。

             COM組件的概念:

                    COM組件時(shí)以win32 Dll 或 exe 形式發(fā)布的可執(zhí)行代碼組成的,是一些小的二進(jìn)制可執(zhí)行文件。COM組件是遵循COM規(guī)范編寫的。COM組件不是DLL,只是利用DLL來給組件提供動(dòng)態(tài)鏈接的能力。實(shí)際上,利用Dll動(dòng)態(tài)鏈接能力最佳的方法是COM。對(duì)于可用Dll解決的任一問題,均可以用COM組件更好地加以解決。

             對(duì)COM組件的要求:

            一、組件必須動(dòng)態(tài)鏈接。

            二、隱藏其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。對(duì)于一個(gè)應(yīng)用程序或組件,如果它使用了其他組件,那么我們稱之為一個(gè)客戶,客戶通過接口同其他組件進(jìn)行連接。如果接口保持不變,客戶和組件雖然改變了,但不會(huì)影響彼此的通信。要實(shí)現(xiàn)信息封裝也就是說組件及客戶內(nèi)部實(shí)現(xiàn)細(xì)節(jié)不能反映到接口中。這種將客戶同組件實(shí)現(xiàn)相應(yīng)隔離開來要求對(duì)組件加上一些限制。

            1)  組件必須將其實(shí)現(xiàn)所用的編程語言封裝起來。在一個(gè)與語言無關(guān)的架構(gòu)中,任何人均可以編寫組件,并且這些組件不會(huì)因?yàn)榫幊陶Z言的發(fā)展而過時(shí)。這種架構(gòu)將極大的促進(jìn)軟件市場的繁榮。

            2)  組件必須以二進(jìn)制的形式發(fā)布。

            3)  組件必須可以在不妨礙已有用戶的情況下被升級(jí)。這種向后兼容的能力是組件必須具有的。將某個(gè)組將升級(jí)使之適應(yīng)新應(yīng)用程序的需要、同時(shí)使其能支持老的應(yīng)用程序。

            4)  COM組件可以透明地在網(wǎng)絡(luò)上被重新分配位置。

             使用組件的優(yōu)勢:

            1)  應(yīng)用程序可隨時(shí)間的流逝而發(fā)展進(jìn)化,即使用組件可以對(duì)已有應(yīng)用程序的升級(jí)更加方便和靈活。如應(yīng)用程序定制。

            2)  快速應(yīng)用程序開發(fā)。這個(gè)優(yōu)點(diǎn)可以使開發(fā)人員從某個(gè)組件庫中取出所需要的組件并將其快速地組裝到一塊以構(gòu)造應(yīng)用程序,如同搭積木一樣。

            3)  簡化分布式應(yīng)用程序開發(fā)。

             COM基本術(shù)語

            1.interface:一個(gè)接口可以看做是一組稱為方法的函數(shù)。接口名以"I"打頭,如"IShellLink",在C++中,接口即是一個(gè)只含有純虛函數(shù)的抽象基類。

            2.coclass:component object class的簡稱。coclass用來實(shí)現(xiàn)接口。一個(gè)COM對(duì)象是coclass在內(nèi)存中的一個(gè)實(shí)例(instance)。注意COM"class"跟 C++"class"不是一個(gè)東西,雖然COM class 的實(shí)現(xiàn)通常都是C++ class。

            3.COM Server:含有一個(gè)或多個(gè)coclass的二進(jìn)制模塊(DLL或者EXE)。

            4.Registration:向Windows注冊,登記COM Server的位置和入口。Unregistration是一個(gè)相反的過程:從Windows中移除掉這個(gè)登記。

            5.GUID:globally unique identifier。一個(gè)128位的數(shù)。COM使用語言無關(guān)的GUID作為標(biāo)識(shí)。每一個(gè)interface和coclass都有一個(gè)GUID,因?yàn)?GUID是全世界范圍內(nèi)唯一的。所以避免了名字沖突。有時(shí)候GUID也被稱為UUID(universally unique identifier)。一個(gè)coclass的class ID稱為CLSID;一個(gè)interface的interfaceID稱為IID。

            6.HRESULT:一個(gè)整數(shù)類型的值,COM使用它來返回成功或者錯(cuò)誤碼。可以使用Windows錯(cuò)誤碼查詢來獲取HRESULT所代表的字符含義。


            參考文獻(xiàn):

            COM技術(shù)內(nèi)幕


             

            posted on 2011-04-30 20:08 Kenny Jiang 閱讀(2041) 評(píng)論(0)  編輯 收藏 引用 所屬分類: COM

            91精品无码久久久久久五月天| 久久99精品久久久久久| 久久精品无码一区二区三区日韩| 国内精品久久久久影院亚洲| 久久99国产精品久久99| 国产三级精品久久| 久久国产免费观看精品| 久久国产高清一区二区三区| 99久久无码一区人妻| 亚洲国产成人久久综合碰| 久久国产成人亚洲精品影院| 模特私拍国产精品久久| 精品久久久一二三区| 久久精品国产影库免费看| 久久亚洲视频| 99久久综合国产精品免费| 狠狠狠色丁香婷婷综合久久五月| 亚洲伊人久久综合中文成人网| 国产精品天天影视久久综合网| 久久精品毛片免费观看| 99re久久精品国产首页2020| 精品久久久久久久久免费影院 | 国产精品九九久久精品女同亚洲欧美日韩综合区 | 欧美久久综合性欧美| 久久精品中文闷骚内射| 婷婷久久综合| 亚洲精品无码久久毛片| 久久久久久久久久久| 久久香综合精品久久伊人| AV狠狠色丁香婷婷综合久久 | 久久99久久成人免费播放| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 亚洲va久久久噜噜噜久久男同 | 久久国产成人精品麻豆| 午夜天堂av天堂久久久| 久久久久国产精品人妻| 2020国产成人久久精品| 偷窥少妇久久久久久久久| 亚洲国产成人精品无码久久久久久综合| 久久久国产精品网站| 伊人热人久久中文字幕|