天天看點

COM原理及應用----概述

  1、元件設計的原始目的 跨平台、跨網絡、積木式搭建程式   2、元件的兩個規範:CORBA 和COM OMC(Object Management Group,對象管理組織)的CORBA(Common Object Request Breaker Arehitecture ,公共對象請求中介體系結構)。 Microsoft的COM(Component Objedt Model,元件對象模型)。   3、COM的定義 COM是由Microsoft提出的元件标準,它不僅定義了元件程式之間進行互動的标準,并且也提供了元件程式運作所需的環境。 COM标準包括規範和實作兩大部分,規範部分定義了元件之間通信的機制,實作部分是COM庫,COM庫為COM規範的具體實作提供了一些核心服務。   4、COM的分類 程序内元件(DLL ,in-process component)。客戶程式群組件程式在同一程序空間。 程序外元件(EXE ,out –of-process component)。客戶程式群組件程式不在同一程序空間。   5、COM跨語言原因 COM對象是建立在二進制可執行代碼級的基礎上,而C++等語言中的對象是建立在源代碼級基礎上的。   6、COM技術的應用 OLE(Object Linking and Emnedding ,對象連結和嵌入)技術,它所表達的是複合文檔(Compound Document )的概念。 ActiveX技術。   7、COM的元件、對象、接口的關系 一個COM元件可以包含多個COM對象,一個COM對象可以有多個COM接口。COM對象是以接口的方式提供服務的。   8、COM的基本概念 對象:相當于C++中對象的概念,對象是某個類的一個執行個體 客戶:使用對象的應用(或另一個對象)稱為客戶,或對象的使用者。 接口:一組邏輯上相關的函數集合,其函數也被稱為接口成員函數。通常以“I”為字首。   9、COM接口使用說明 在COM模型中,對象本身對于客戶來說是不可見的,客戶請求服務時,隻能通過接口進行。每個接口都由一個128位的全局唯一辨別符(GUID ,Gloally Unique Identifier)來标示。客戶通過GUID獲得接口的指針,在通過接口指針,客戶就可以調用其相應的成員函數。 一般來說,接口是不變的。因為對象可以包含多個接口,是以元件對象的更新可以通過增加接口的方法來實作。   10、COM對象的說明 與接口類似,每個對象也用一個128位的GUID來辨別,稱為CLSID(Class Identifier,類辨別符或類ID)。   11、COM庫的說明 在Microsoft Windows作業系統環境下,COM庫以 .dll 檔案的形式存在。COM庫一般步在應用程式層實作,而是在作業系統層次上實作,是以一個作業系統隻有一個COM庫實作。   12、COM的特性 一:面向對象的特性。 二:客戶/伺服器特性。 三:語言無關性,但是隻有用C或C++語言才能實作COM中所有的特性。 四:程序透明特性 兩類程序模型:程序内對象和程序外對象。程序内對象在客戶程序空間中運作,效率高,但不穩定;程序外對象運作在同一機器上的另一個程序空間或者在遠端機器的程序空間中。元件對象服務程式分類:程序内服務程式、本地服務程式、遠端服務程式。實作這種程序透明性的關鍵在于COM庫,COM庫負責元件程式的定位,管理元件對象的建立和對象與客戶之間的通信。 五:可重用性 COM标準建立在二進制代碼級的基礎上是其與面向對象語言中的對象的重用過程不同。 COM用兩種機制實作對象的重用:包容方式和聚合方式。   13、OLE技術的焦點集中在解決桌面環境中應用程式之間如何進行互動,包括數及交換和界面互動。   14、COM與Windows作業系統 16位平台中COM的使用并不完善,32位平台中,很多系統部件都以COM形式實作。比如:DirectX多媒體軟體包、RDO(Remote Data Object ,遠端資料對象)和DAO(Data Access Object ,資料通路對象)資料庫通路對象庫、Internet Client SDK、MAPI(Messaging API ,消息應用程式設計接口)、ADSI(Active Directory Service Interface ,活動目錄服務接口)   15、COM與資料庫 Microsoft推出的資料庫通路對象庫有RDO、DAO、OLE DB、ADO。   16、COM與Internet應用 系統內建的軟體接口可以利用COM。在多層次軟體結構模型中位于中間層的業務層主要通過COM元件來實作。   17、COM與Internet Internet的開放性要求正展現了COM的優勢。Microsoft提出的ActiveX技術包含了所有基于COM的Internet相關的軟體技術。