什麼是COM組件

什麼是COM組件?COM組件是什麼意思?

COM是Component Object Model (組件對象模型)的縮寫。

COM是微軟公司爲了計算機工業的軟件生產更加符合人類的行爲方式開發的一種新的軟件開發技術。在COM構架下,人們可以開發出各種各樣的功能專一的組件,然後將它們按照需要組合起來,構成複雜的應用系統。由此帶來的好處是多方面的:可以將系統中的組件用新的替換掉,以便隨時進行系統的升級和定製;可以在多個應用系統中重複利用同一個組件;可以方便的將應用系統擴展到網絡環境下;COM與語言,平臺無關的特性使所有的程序員均可充分發揮自己的才智與專長編寫組件模塊;等等。

COM是開發軟件組件的一種方法。組件實際上是一些小的二進制可執行程序,它們可以給應用程序,操作系統以及其他組件提供服務。開發自定義的COM組件就如同開發動態的,面向對象的API。多個COM對象可以連接起來形成應用程序或組件系統。並且組件可以在運行時刻,在不被重新鏈接或編譯應用程序的情況下被卸下或替換掉。Microsoft的許多技術,如ActiveX, DirectX以及OLE等都是基於COM而建立起來的。並且Microsoft的開發人員也大量使用COM組件來定製他們的應用程序及操作系統。

COM所含的概念並不止是在Microsoft Windows操作系統下才有效。COM並不是一個大的API,它實際上象結構化編程及面向對象編程方法那樣,也是一種編程方法。在任何一種操作系統中,開發人員均可以遵循“COM方法”。

一個應用程序通常是由單個的二進制文件組成的。當編譯器生成應用程序之後,在對下一個版本重新編譯併發行新生成的版本之前,應用程序一般不會發生任何變化。操作系統,硬件及客戶需求的改變都必須等到整個應用程序被重新生成。

目前這種狀況已經發生變化。開發人員開始將單個的應用程序分隔成單獨多個獨立的部分,也既組件。這種做法的好處是可以隨着技術的不斷髮展而用新的組件取代已有的組件。此時的應用程序可以隨新組件不斷取代舊的組件而漸趨完善。而且利用已有的組件,用戶還可以快速的建立全新的應用。

傳統的做法是將應用程序分割成文件,模塊或類,然後將它們編譯並鏈接成一個單模應用程序。它與組件建立應用程序的過程(稱爲組件構架)有很大的不同。一個組件同一個微型應用程序類似,即都是已經編譯鏈接好並可以使用的二進制代碼,應用程序就是由多個這樣的組件打包而得到的。單模應用程序只有一個二進制代碼模塊。自定義組件可以在運行時刻同其他的組件連接起來以構成某個應用程序。在需要對應用程序進行修改或改進時,只需要將構成此應用程序的組件中的某個用新的版本替換掉即可。

COM,即組件對象模型,是關於如何建立組件以及如何通過組件建立應用程序的一個規範,說明了如何可動態交替更新組件。

使用組件的優點:

組件架構的一個優點就是應用可以隨時間的流逝而發展進化。除此之外,使用組件還有一些可以使對以有應用的升級更加方便和靈活的優點,如應用的定製,組件庫以及分佈式組件等。

使用組件的種種優點直接來源於可以將它們動態的插入或卸出應用。爲了實現這種功能,所有的組件必須滿足兩個條件:第一,組件必須動態鏈接;第二,它們必須隱藏(或封裝)其內部實現細節。動態鏈接對於組件而言是一個至關重要的要求,而消息隱藏則是動態鏈接的一個必要條件。

補充:COM組件由以Win 32動態連接庫(DLL)或可執行文件(EXE)形式發佈的可執行代碼所組成。遵循COM規範編寫出來的組件將能夠滿足對組件架構的所有要求。COM組件可以給應用程序、操作系統以及其他組件提供服務;自定義的COM組件可以在運行時刻同其他組件連接起來構成某個應用程序;COM組件可以動態的插入或卸出應用。

惡意網站可以利用含有漏洞的com組件接口,下載木馬,並且執行;

禁用com組件一般是指設置了Kill位,即IE瀏覽器不能使用這個組件,通俗講:通過設置Kill位,可以使InternetExplorer在使用默認設置時永不調用被禁用的com組件,從而禁止該控件在Internet Explorer中運行。禁用含有漏洞的com組件後,IE就不能調用含有漏洞的COM組件;黑客利用有漏洞的COM組,寫成的網頁代碼就不能在IE中被執行,木馬等將不會被下載。

禁用com組件可能導致的問題:

在線播放功能的組件被禁用,會導致在線電影等在線視頻無法正常觀看;

在線殺毒功能的組件被禁用,會導致在線殺毒不能使用;

在線遊戲功能的組件被禁用,會導致在線遊戲無法玩,

com組件禁用後的具體情況,需要根據具體的com組件功能作判斷。

手動啓動COM組件操作方法:

運行——regedit——找到被禁用的com組件對應的clsid|註冊表鍵值——刪除具體值,或者整個鍵。

FAQ1:什麼是COM組件?

Answer:

COM組件是以WIN32動態鏈接庫(DLL)或可執行文件(EXE)形式發佈的可執行代碼組成。

COM組件是遵循COM規範編寫的

COM組件是一些小的二進制可執行文件

COM組件可以給應用程序、操作系統以及其他組件提供服務

自定義的COM組件可以在運行時刻同其他組件連接起來構成某個應用程序

COM組件可以動態的插入或卸出應用

COM組件必須是動態鏈接的

COM組件必須隱藏(封裝)其內部實現細節

COM組件必須將其實現的語言隱藏

COM組件必須以二進制的形式發佈

COM組件必須可以在不妨礙已有用戶的情況下被升級

COM組件可以透明的在網絡上被重新分配位置

COM組件按照一種標準的方式來宣佈它們的存在

FAQ2:組件不是……?

Answer:

COM組件不是一種計算機語言

COM組件不是DLL,只是利用DLL來給組件提供動態鏈接的能力

COM組件不是一個API函數集。

COM組件不是類


 來自www.fundfund.cn 詳文參考:http://www.fundfund.cn/news_200925_36974.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章