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庫爲具體實現提供了核心服務。
對象和接口
接口是一組邏輯上相關的函數集合,其函數也被稱爲接口成員函數。對象通過接口成員函數爲客戶提供各種形式的服務。