• <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, 評論 - 45, 引用 - 0
            數據加載中……

            COM組件簡介

                     面向對象的思想難以適應這種分布式軟件模型,于是組件化程序設計思想得到了迅速的發展。 按照組件化的程序設計的思想,復雜的應用程序被設計成一些小的,功能單一的組件模塊,這些組件模塊可以運行在同一臺機器上,也可以運行在不同的機器上。 為了實現這樣的應用軟件,組建程序和組建程序之間需要一些極為細致的規范, 只有組件程序遵守了這些共同的規范,然間系統才能正常運行。 為此,OMG和Microsoft分別提出了CORBA(Common Object Request Breaker Architecture)和COM(Component Object model)標準,目前CORBA模型主要應用于UNIX操作系統平臺上,而COM 則主要應用于Microsoft Windows操作系統平臺上。

             COM的概念:

                   COM是一個說明如何建立可動態互變組件的規范。它提供了為保證鞥能夠互操作,客戶和組件應遵循的一些標準。COM規范就是一套為組件架構設置標準的文檔。COM并不是一種計算機語言,COM所說明的是如何編寫組件,但具體選用說明語言來編寫則完全是自由的。

             COM組件的概念:

                    COM組件時以win32 Dll 或 exe 形式發布的可執行代碼組成的,是一些小的二進制可執行文件。COM組件是遵循COM規范編寫的。COM組件不是DLL,只是利用DLL來給組件提供動態鏈接的能力。實際上,利用Dll動態鏈接能力最佳的方法是COM。對于可用Dll解決的任一問題,均可以用COM組件更好地加以解決。

             對COM組件的要求:

            一、組件必須動態鏈接。

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

            1)  組件必須將其實現所用的編程語言封裝起來。在一個與語言無關的架構中,任何人均可以編寫組件,并且這些組件不會因為編程語言的發展而過時。這種架構將極大的促進軟件市場的繁榮。

            2)  組件必須以二進制的形式發布。

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

            4)  COM組件可以透明地在網絡上被重新分配位置。

             使用組件的優勢:

            1)  應用程序可隨時間的流逝而發展進化,即使用組件可以對已有應用程序的升級更加方便和靈活。如應用程序定制。

            2)  快速應用程序開發。這個優點可以使開發人員從某個組件庫中取出所需要的組件并將其快速地組裝到一塊以構造應用程序,如同搭積木一樣。

            3)  簡化分布式應用程序開發。

             COM基本術語

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

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

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

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

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

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


            參考文獻:

            COM技術內幕


             

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

            日本精品一区二区久久久| 久久精品国产99久久香蕉| 色欲综合久久中文字幕网| 人妻少妇久久中文字幕一区二区 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 无码8090精品久久一区| 亚洲乱码中文字幕久久孕妇黑人| 91精品国产高清91久久久久久| 国产精品免费看久久久香蕉| 久久香综合精品久久伊人| 久久本道伊人久久| AV无码久久久久不卡蜜桃| 精品国产乱码久久久久久浪潮| 精产国品久久一二三产区区别 | 久久久精品国产sm调教网站| 久久久免费观成人影院| 国产精品久久久久久久久| 久久热这里只有精品在线观看| 99久久精品无码一区二区毛片| 狠狠色噜噜色狠狠狠综合久久| 久久激情亚洲精品无码?V| 九九99精品久久久久久| 亚洲精品tv久久久久久久久| 少妇被又大又粗又爽毛片久久黑人 | 99久久久国产精品免费无卡顿| 亚洲va久久久久| 久久天天躁狠狠躁夜夜2020| 免费国产99久久久香蕉| 国产91色综合久久免费| 久久午夜伦鲁片免费无码| 国产精品久久久久蜜芽| 久久亚洲国产成人影院网站| 国产精品99久久久久久www| 久久精品一区二区三区不卡| 国产午夜精品理论片久久影视 | 97久久超碰国产精品旧版| 欧洲人妻丰满av无码久久不卡 | 合区精品久久久中文字幕一区| 国产高潮国产高潮久久久91| 国内精品伊人久久久久影院对白| 久久水蜜桃亚洲av无码精品麻豆|