COM學習筆記(一)

 Internet 的飛速發展,面向對象的思想很難適應這種分佈式軟件模型,於是組件化設計思想得到了迅速發展。複雜的應用程序被設計成小的,功能單一的組件模塊,這些模塊可以運行在同一臺機器上,也可以在不同的機器上。組件程序和組件程序之間需要一些極爲細緻的規範,只有組件程序遵守了同一規範,軟件系統才能正常運行。所以OMG和Microsoft分別提出了COBRA和COM標準。

COM是什麼?

一個組件程序被稱爲一個模塊,可以是DLL,進程內組件,也可以是一個EXE,進程外組件。一個組件程序可以包含一個或多個組件對象,因爲COM是以對象爲基本單元的模型。

COM對象是建立在二進制可執行的代碼級別的基礎上的,而C++等語言中的對象是建立在源代碼級別基礎上的。所以COM是跟語言無關的。

從底層的COM對象管理到上層上的應用程序交互都要用到COM標準。各種層次上的COM技術應用都爲我們提供了很好的範例。

COM帶給大家的不僅僅是一項技術,更是一種軟件結構的實現。COM爲我們提供了程序互連的基礎,程序之間的通信有了統一的標準,而且這種通信可以從桌面環境擴展到網絡環境,甚至是異構網絡。

 

第一部分  COM原理

概述、COM對象和接口、COM的實現、COM特性、用VC++開發COM應用

隨着網絡技術的發展,COM表現出極強的適應能力,COM得到了展示,通稱爲ActiveX技術。

用COM進行軟件架構是一種理想的解決方案。

 

OLE發展歷史

在OLE中,組件程序和客戶程序之間進行通信,並沒有使用COM規範,而是使用的是DDE(動態數據交互),它是建立在消息機制基礎上的,最大的缺點就是效率低下。

軟件的升級,每一個底層的模塊都可以單獨進行升級,在軟件原來的軟件模塊的基礎上,可以添加新的組件模塊而不需要改變原來的組件模塊。

 

組件的產生

單體應用程序

一個設計良好的應用系統往往被切分成一些組件(當然要符合系統的應用邏輯和業務要求),這些組件可以單獨開發,單獨編譯,甚至可以單獨進行調試和測試。然後再把它組合到一起,就是完整的軟件系統了。

這種組件化程序設計技術,不同於傳統的結構化程序設計技術,也不同於現在被廣泛採用的面向對象程序設計技術。它更注重的是應用系統的全局,要求從應用系統的全方位進行考察;當然具體到某一塊組件或者模塊的時候,還是需要結構化程序和麪向對象程序設計技術作爲基礎。

組件軟件和軟件組件的區別

 

面向對象的組件模型 COM

組件之間的接口是軟件通信的關鍵,因爲接口是雙方通信的基礎。

在COM標準中,對象是一個非常活躍的元素,我們也經常把它稱爲COM對象。

組件模塊爲COM對象提供了活動的空間。

COM對象以接口的方式提供服務,我們把這種接口稱爲COM接口。

當應用程序或者普通程序調用組件的功能時候,它首先要創建一個COM對象,或者通過其他方法調用COM對象,然後通過對象所實現的COM接口調用它所提供的服務。當所有的服務結束後,如果客戶程序不再使用該COM端口,那麼它應該釋放掉對象所佔有的空間,包括對象本身。(這是基本程序設計思想)

COM組件和COM對象的區別

 

COM結構

COM庫爲具體實現提供了核心服務。

對象和接口

接口是一組邏輯上相關的函數集合,其函數也被稱爲接口成員函數。對象通過接口成員函數爲客戶提供各種形式的服務。

 

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