最初的OLE含義是指在程序之間鏈接和嵌入對(duì)象數(shù)據(jù),它提供了建立混合文檔的手段(資深Windows 3.X 用戶(hù)可能記得當(dāng)初在Word6.0中插入一個(gè)圖形的新奇和喜悅),使得那些沒(méi)有太多專(zhuān)業(yè)知識(shí)的用戶(hù)能夠很容易地協(xié)調(diào)多個(gè)應(yīng)用程序完成混合文檔的建立。1991年制定的OLE1.0規(guī)范主要解決多個(gè)應(yīng)用程序之間的通信和消息傳遞問(wèn)題,微軟希望第三方開(kāi)發(fā)商能夠遵守這個(gè)規(guī)范,以使在當(dāng)時(shí)的Windows平臺(tái)上的應(yīng)用程序能夠相互協(xié)調(diào)工作,更大的提高工作效率。然而事與愿違,只有很少的軟件開(kāi)發(fā)商支持它。為此,微軟于1993年發(fā)布了新的規(guī)范——OLE2.0,它在原有的基礎(chǔ)上完善并增強(qiáng)了以下各方面的性能: 1.OLE自動(dòng)化:一個(gè)程序有計(jì)劃地控制另一個(gè)程序的能力。
2.OLE控件:小型的組件程序,可嵌入到另外的程序,提供自己的專(zhuān)有功能。 3.OLE文檔:完善了早期的混合文檔功能,不僅支持簡(jiǎn)單鏈接和嵌入,還支持在位激活、拖放等功能。 強(qiáng)大的功能使得很多的開(kāi)發(fā)商開(kāi)始支持新的OLE技術(shù),因?yàn)槲④浽贠LE2.0中建立了一個(gè)稱(chēng)為COM(Component Object Model即組件對(duì)象模式)的新規(guī)范。 二、COM規(guī)范
COM規(guī)范被公認(rèn)為是微軟對(duì)Windows系統(tǒng)的未來(lái)支持和發(fā)展策略,是微軟的關(guān)于全球興起的組件市場(chǎng)的策略。該規(guī)范提供關(guān)于新OLE技術(shù)的編程模型和二進(jìn)制標(biāo)準(zhǔn),但并沒(méi)有規(guī)定實(shí)現(xiàn)COM規(guī)范的計(jì)算機(jī)語(yǔ)言(實(shí)際上只要支持指針概念的計(jì)算機(jī)語(yǔ)言就可以用于開(kāi)發(fā)基于COM的程序),也沒(méi)有指定應(yīng)用程序應(yīng)該如何組織,它只是一個(gè)指導(dǎo)性規(guī)范。如今的OLE 之所以吸引大家我想很大程度上是由于COM規(guī)范的制訂,它能夠保證所有遵循此規(guī)范的應(yīng)用程序之間的通信和消息傳遞乃至功能調(diào)用的安全和順利實(shí)現(xiàn)。所有OLE的實(shí)現(xiàn)都是基于COM 的,有人說(shuō)COM是OLE的基石。OLE組件通過(guò)稱(chēng)為接口的一組相關(guān)函數(shù)集來(lái)支持對(duì)OLE對(duì)象的數(shù)據(jù)的訪問(wèn),而接口的每一個(gè)函數(shù)稱(chēng)為方法(Method),通過(guò)接口可被訪問(wèn)的對(duì)象的數(shù)據(jù)稱(chēng)為屬性。如果您熟悉VB,想必這些您一聽(tīng)就明白。注意這里的對(duì)象也不能和C++語(yǔ)言的類(lèi)的實(shí)例對(duì)象相混淆。 實(shí)現(xiàn)了不同接口的文檔應(yīng)用程序在OLE中的稱(chēng)呼不一樣,有的稱(chēng)為文檔容器,有的稱(chēng)為文檔服務(wù)器,有的應(yīng)用程序既是容器又是服務(wù)器,著名的例子是微軟的世界級(jí)Office軟件Word。容器是一個(gè)客戶(hù)程序,它具有申請(qǐng)并使用其它COM組件通過(guò)接口為其它程序?qū)崿F(xiàn)的功能;服務(wù)器通過(guò)特定的接口將自己完成的一些功能,提供給使用自己的應(yīng)用程序(例如畫(huà)筆程序是一個(gè)文檔服務(wù)器,它提供創(chuàng)建并編輯BMP 圖像的功能)。當(dāng)打開(kāi)Word,選擇【插入】菜單下的【對(duì)象...】項(xiàng),您可以看到在您的系統(tǒng)中存在哪些文檔服務(wù)器,此時(shí)的Word以文檔容器的身份出現(xiàn)。當(dāng)您雙擊插入的對(duì)象后發(fā)現(xiàn)Word的菜單有些改變成文檔服務(wù)器程序的菜單,可以在當(dāng)前的環(huán)境下編輯對(duì)象,這稱(chēng)為在位激活。 和OLE文檔技術(shù)類(lèi)似,允許一個(gè)應(yīng)用程序通過(guò)編程控制另一個(gè)應(yīng)用程序“自愿”提供的功能的技術(shù)稱(chēng)為OLE自動(dòng)化。自身暴露一些可編程對(duì)象給其它程序的應(yīng)用程序叫自動(dòng)化服務(wù)器,利用并操縱自動(dòng)化服務(wù)器提供的功能的應(yīng)用程序叫自動(dòng)化客戶(hù)或自動(dòng)化控制器,有些程序既是自動(dòng)化服務(wù)器又是自動(dòng)化控制器。例如在VB中我們可以通過(guò)編程創(chuàng)建并編輯一個(gè)Excel工作表(很多參考書(shū)都以此為例),這里的VB就是自動(dòng)化控制器,而創(chuàng)建工作表的Excel程序則是自動(dòng)化服務(wù)器,但在Excel中我們又可以利用VBA語(yǔ)言創(chuàng)建PowerPoint的幻燈片,它又成了自動(dòng)化控制器。利用OLE自動(dòng)化技術(shù)可以實(shí)現(xiàn)軟件的一次開(kāi)發(fā)和多次利用,這也是集成組件的關(guān)鍵技術(shù)。無(wú)論是操作系統(tǒng)還是應(yīng)用軟件,微軟都有意識(shí)朝著這個(gè)方向發(fā)展,例如從Windows95開(kāi)始,包括WindowsNT4.0以后的操作系統(tǒng)的Shell就實(shí)現(xiàn)了OLE自動(dòng)化技術(shù)。 那么什么是ActiveX?它和OLE有什么聯(lián)系呢?
三、ActiveX戰(zhàn)略
同早期的功能薄弱的OLE1.0相比,OLE2.0得到了很多軟件廠商的支持。許多程序設(shè)計(jì)人員編寫(xiě)了大量的實(shí)現(xiàn)OLE自動(dòng)化服務(wù)器功能的組件(不一定是EXE文件),這些組件一般不求功能齊全、強(qiáng)大,而是實(shí)現(xiàn)專(zhuān)門(mén)的功能,可以被其它程序編程控制,由此承襲OLE的名字稱(chēng)為OLE控件。它們?cè)谖募械臄U(kuò)展名一般為OCX(OLE Control Extension)。 微軟剛剛贏得廣大軟件廠商的支持,使OLE技術(shù)深入人心,然而“人算不如天算”,國(guó)際互聯(lián)網(wǎng)的超速發(fā)展讓比爾·蓋茨始料未及。加上早期的OLE1.0不得人心,導(dǎo)致后來(lái)的人們總把在Word中插入一個(gè)圖形當(dāng)作OLE技術(shù)的全部,各類(lèi)資料在介紹新OLE技術(shù)時(shí)命名也不統(tǒng)一,造成很大的混亂。針對(duì)這些情況,微軟在1996年重新制訂了一個(gè)關(guān)于OLE的規(guī)范——OLE 96規(guī)范。這個(gè)規(guī)范擴(kuò)展了 OLE控件的能力,并貫徹微軟的Internet戰(zhàn)略使它更易于在網(wǎng)絡(luò)環(huán)境中使用,還考慮命名混淆的問(wèn)題,重新給OLE控件貼上一個(gè)標(biāo)簽——ActiveX控件。不僅如此,以前的什么OLE文檔也相應(yīng)稱(chēng)為ActiveX 文檔了。總之,為了滿(mǎn)足Internet戰(zhàn)略,微軟把OLE換成了ActiveX,企圖使人們重新看待新的OLE——ActiveX,把它看做網(wǎng)絡(luò)上的解決軟件組件問(wèn)題的標(biāo)準(zhǔn)。 許多在Windows上同微軟合作得很好的廠商在開(kāi)發(fā)新版本軟件時(shí)都開(kāi)始支持ActiveX技術(shù),例如Delphi、PowerBuild等開(kāi)發(fā)工具。原來(lái)同Windows競(jìng)爭(zhēng)的操作系統(tǒng)也開(kāi)始支持ActiveX,例如Macintosh,甚至老對(duì)手OS/2上也可以使用ActiveX控件。ActiveX技術(shù)也許真的會(huì)成為一個(gè)異種平臺(tái)爭(zhēng)相支持的規(guī)范,如果能夠進(jìn)一步完善ActiveX、采用更開(kāi)放的策略以及微軟不被卸成八大塊的話(huà)。?%
聯(lián)系客服