DLL 組件(Component) 對象(Object) OLE控件 ActiveX控件 OCX COM

DLL文件即動態鏈接庫文件,是一種可執行文件,它允許程序共享執行特殊任務所必需的代碼和其他資源,一般來說,DLL是一種磁盤文件,以.dll、.DRV、.FON、.SYS和許多以.EXE爲擴展名的系統文件都可以是DLL;

它由全局數據、服務函數和資源組成,在運行時被系統加載到調用進程的虛擬空間中,成爲調用進程的一部分。如果與其它 DLL 之間沒有衝突,該文件通常映射到進程虛擬空間的同一地址上。

組件(Component) 與 對象(Object)


1)組件可以在另一個稱爲容器(有時也稱爲承載者或宿主)的應用程序中使用,也可以作爲獨立過程使用;

2)組件可以由一個類構成,也可以由多個類組成,或者是一個完整的應用程序;

3)組件爲模塊重用,而對象爲代碼重用。

現在,比較流行的組件模型有COM/DCOM( Distributed COM)和CORBA(Common Object Request Broker Architecture)。

OLE控件 ActiveX控件 OCX COM

概要

從時間的角度講,OLE(Object Linking and Embedded)是最早出現的,然後是COM和ActiveX;

從體系結構角度講,OLE和ActiveX是建立在 COM之上的,COM是理論基礎,OLE是應用程序的COM觀點,OCX是vb的COM觀點,ActiveX是intertnet的COM觀點;

從名稱角度講,OLE、ActiveX是兩個商標名稱,而COM則是一個純技術名詞;

歷史淵源

自從Windows操作系統流行以來,“剪貼板”( Clipboard)首先解決了不同程序間的通信問題(由剪貼板作爲數據交換中心,進行復制、粘貼的操作),但是剪貼板傳遞的都是“死”數據,應用程序開發者得自行編寫、解析數據格式的代碼,於是動態數據交換(Dynamic Data Exchange,DDE)的通信協定應運而生,它可以讓應用程序之間自動獲取彼此的最新數據。

但是,解決彼此之間的“數據格式”轉換仍然是程序員沉重的負擔。對象的鏈接與嵌入(Object Linking and Embedded,OLE)的誕生把原來應用程序的數據交換提高到“對象交換”,這樣程序間不但獲得數據也同樣獲得彼此的應用程序對象,並且可以直接使用彼此的數據內容,其實OLE是Microsoft的複合文檔技術,它的最初版本只是瞄準複合文檔,但在後續版本OLE2中,導入了COM。由此可見,COM是應OLE的需求而誕生的,所以雖然COM是OLE的基礎,但OLE的產生卻在COM之前。

COM的基本出發點是,讓某個軟件通過一個通用的機構爲另一個軟件提供服務。COM是應OLE 的需求而誕生,但它的第一個使用者卻是OLE2,所以COM與複合文檔間並沒有多大的關係,實際上,後來COM就作爲與複合文檔完全無關的技術,開始被廣泛應用。這樣一來, Microsoft就開始“染指”通用平臺技術。但是COM並不是產品,它需要一個商標名稱,用一句話來說,COM是獨立於語言的組件體系結構,可以讓組件間相互通信。而那時Microsoft的市場專家們已經選用了OLE作爲商標名稱,所以使用COM技術的都開始貼上了OLE的標籤。雖然這些技術中的絕大多數與複合文檔沒有關係。Microsoft的這一做法讓人產生這樣一個誤解OLE是僅指複合文檔呢?還是不單單指複合文檔?其實OLE是COM的商標名稱,自然不僅僅指複合文檔。但Microsoft自己恐怕無法解釋清楚,這要花費相當的精力和時間。

於是,隨着Internet的發展,在1996年春,Microsoft改變了主意,選擇ActiveX作爲新的商標名稱。ActiveX是指寬鬆定義的、基於COM的技術集合,而OLE仍然僅指複合文檔。當然, ActiveX最核心的技術還是COM。ActiveX和OLE的最大不同在於,OLE針對的是桌面上應用軟件和文件之間的集成,而ActiveX則以提供進一步的網絡應用與用戶交互爲主。到這裏,大家應該對ActiveX、OLE和COM三者的關係有了一個比較明確的認識,COM纔是最根本的核心技術。

ActiveX控件 與 DLL

ActiveX提供了一種類似於DLL動態鏈接庫的調用,不過它與DLL的唯一區別就是ActiveX不註冊不能被系統識別並使用。

ActiveX控件的後綴名一般爲.ocx 或者.dll.

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