【轉貼】瞭解OLE及ActiveX

引自:http://www.moon-soft.com/doc/49096.htm

如果您使用Windows,如果您經常使用微軟的程序,或者您熱衷於VB編程,抑或您流連於國際互聯網,您不會不經常接觸到OLE和ActiveX等拗口的洋文,但是您知道它們到底是啥意思,有啥來頭嗎?如果您有興趣,請讓我說給您聽。我們首先從OLE談起。   一、過去的OLE和今天的OLE

最初的OLE含義是指在程序之間鏈接和嵌入對象數據,它提供了建立混合文檔的手段(資深Windows 3.X 用戶可能記得當初在Word6.0中插入一個圖形的新奇和喜悅),使得那些沒有太多專業知識的用戶能夠很容易地協調多個應用程序完成混合文檔的建立。1991年制定的OLE1.0規範主要解決多個應用程序之間的通信和消息傳遞問題,微軟希望第三方開發商能夠遵守這個規範,以使在當時的Windows平臺上的應用程序能夠相互協調工作,更大的提高工作效率。然而事與願違,只有很少的軟件開發商支持它。爲此,微軟於1993年發佈了新的規範——OLE2.0,它在原有的基礎上完善並增強了以下各方面的性能: 1.OLE自動化:一個程序有計劃地控制另一個程序的能力。

2.OLE控件:小型的組件程序,可嵌入到另外的程序,提供自己的專有功能。 3.OLE文檔:完善了早期的混合文檔功能,不僅支持簡單鏈接和嵌入,還支持在位激活、拖放等功能。 強大的功能使得很多的開發商開始支持新的OLE技術,因爲微軟在OLE2.0中建立了一個稱爲COM(Component Object Model即組件對象模式)的新規範。 二、COM規範

COM規範被公認爲是微軟對Windows系統的未來支持和發展策略,是微軟的關於全球興起的組件市場的策略。該規範提供關於新OLE技術的編程模型和二進制標準,但並沒有規定實現COM規範的計算機語言(實際上只要支持指針概念的計算機語言就可以用於開發基於COM的程序),也沒有指定應用程序應該如何組織,它只是一個指導性規範。如今的OLE 之所以吸引大家我想很大程度上是由於COM規範的制訂,它能夠保證所有遵循此規範的應用程序之間的通信和消息傳遞乃至功能調用的安全和順利實現。所有OLE的實現都是基於COM 的,有人說COM是OLE的基石。OLE組件通過稱爲接口的一組相關函數集來支持對OLE對象的數據的訪問,而接口的每一個函數稱爲方法(Method),通過接口可被訪問的對象的數據稱爲屬性。如果您熟悉VB,想必這些您一聽就明白。注意這裏的對象也不能和C++語言的類的實例對象相混淆。 實現了不同接口的文檔應用程序在OLE中的稱呼不一樣,有的稱爲文檔容器,有的稱爲文檔服務器,有的應用程序既是容器又是服務器,著名的例子是微軟的世界級Office軟件Word。容器是一個客戶程序,它具有申請並使用其它COM組件通過接口爲其它程序實現的功能;服務器通過特定的接口將自己完成的一些功能,提供給使用自己的應用程序(例如畫筆程序是一個文檔服務器,它提供創建並編輯BMP 圖像的功能)。當打開Word,選擇【插入】菜單下的【對象...】項,您可以看到在您的系統中存在哪些文檔服務器,此時的Word以文檔容器的身份出現。當您雙擊插入的對象後發現Word的菜單有些改變成文檔服務器程序的菜單,可以在當前的環境下編輯對象,這稱爲在位激活。 和OLE文檔技術類似,允許一個應用程序通過編程控制另一個應用程序“自願”提供的功能的技術稱爲OLE自動化。自身暴露一些可編程對象給其它程序的應用程序叫自動化服務器,利用並操縱自動化服務器提供的功能的應用程序叫自動化客戶或自動化控制器,有些程序既是自動化服務器又是自動化控制器。例如在VB中我們可以通過編程創建並編輯一個Excel工作表(很多參考書都以此爲例),這裏的VB就是自動化控制器,而創建工作表的Excel程序則是自動化服務器,但在Excel中我們又可以利用VBA語言創建PowerPoint的幻燈片,它又成了自動化控制器。利用OLE自動化技術可以實現軟件的一次開發和多次利用,這也是集成組件的關鍵技術。無論是操作系統還是應用軟件,微軟都有意識朝着這個方向發展,例如從Windows95開始,包括WindowsNT4.0以後的操作系統的Shell就實現了OLE自動化技術。 那麼什麼是ActiveX?它和OLE有什麼聯繫呢?

三、ActiveX戰略

同早期的功能薄弱的OLE1.0相比,OLE2.0得到了很多軟件廠商的支持。許多程序設計人員編寫了大量的實現OLE自動化服務器功能的組件(不一定是EXE文件),這些組件一般不求功能齊全、強大,而是實現專門的功能,可以被其它程序編程控制,由此承襲OLE的名字稱爲OLE控件。它們在文件名中的擴展名一般爲OCX(OLE Control Extension)。 微軟剛剛贏得廣大軟件廠商的支持,使OLE技術深入人心,然而“人算不如天算”,國際互聯網的超速發展讓比爾·蓋茨始料未及。加上早期的OLE1.0不得人心,導致後來的人們總把在Word中插入一個圖形當作OLE技術的全部,各類資料在介紹新OLE技術時命名也不統一,造成很大的混亂。針對這些情況,微軟在1996年重新制訂了一個關於OLE的規範——OLE 96規範。這個規範擴展了 OLE控件的能力,並貫徹微軟的Internet戰略使它更易於在網絡環境中使用,還考慮命名混淆的問題,重新給OLE控件貼上一個標籤——ActiveX控件。不僅如此,以前的什麼OLE文檔也相應稱爲ActiveX 文檔了。總之,爲了滿足Internet戰略,微軟把OLE換成了ActiveX,企圖使人們重新看待新的OLE——ActiveX,把它看做網絡上的解決軟件組件問題的標準。 許多在Windows上同微軟合作得很好的廠商在開發新版本軟件時都開始支持ActiveX技術,例如Delphi、PowerBuild等開發工具。原來同Windows競爭的操作系統也開始支持ActiveX,例如Macintosh,甚至老對手OS/2上也可以使用ActiveX控件。ActiveX技術也許真的會成爲一個異種平臺爭相支持的規範,如果能夠進一步完善ActiveX、採用更開放的策略以及微軟不被卸成八大塊的話。 

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