一種Internet策略 ActiveX開發(fā)涉及范圍廣泛 ActiveX開發(fā)的包含了許多方面,比如自動化服務(wù)器,ActiveX控件,COM對象等等。 術(shù)語ActiveX在過去的幾年中成為了許多開發(fā)人員及團隊的戰(zhàn)斗口號,另一方面市場也對其大肆宣揚,然而,沒有幾個人能解釋清楚其確切的含義。本書主要目的就是說明什么是ActiveX以及它對開發(fā)人員意味著什么。我希望讀者能夠?qū)W到和我為寫本書而學到的知識盡可能一樣多。 Microsoft第一次介紹ActiveX是在1996年的Intenet專業(yè)開發(fā)人員大會(Internet PDC)上。ActiveX源自于大會的口號“Activate the Internet”(可理解為:讓因特網(wǎng)活躍起來),與其說ActiveX是一種開發(fā)應(yīng)用程序的技術(shù)或是架構(gòu),不如說它是一種啟示。 在開發(fā)大會期間,Microsoft正在與控制了Internet瀏覽器市場的Netscape進行激烈的競爭。但是,大會表明了Microsoft感興趣的不僅僅是瀏覽器市場。Microsoft演示的工具從電子存儲前端產(chǎn)品、新的OLE控件到虛擬現(xiàn)實聊天軟件等等,應(yīng)有盡有。 ActiveX是Micrsoft共同的新口號,類似于90年代初的提出的OLE(Object Linking and Embedding,對象鏈接與嵌入),而且在很短的時間內(nèi),遠遠超越了“Activate the Internet”。 ActiveX成為了包含一切的術(shù)語:從Web頁面到OLE控件。ActiveX開始變得重要起來:一方面,小型、快速、可重用的組件能夠讓你緊緊抓住來自于Micrsoft,Internete及工業(yè)的最新技術(shù);另一方面,ActiveX代表了Internet與應(yīng)用程序集成的策略。目前,在產(chǎn)品或公司中沒有使用Internet及ActiveX技術(shù)被認為是過時的。事實上,描述ActiveX就像描述色彩一樣,它既不是技術(shù)也不是架構(gòu),而是一個概念,一個指導(dǎo)。 ActiveX, OLE及Internet ActiveX和OLE開始成為同義詞,人們曾經(jīng)談到的OLE控件現(xiàn)在成為了ActiveX控件,OLE文檔對象現(xiàn)在成為了ActiveX文檔對象。有時,整個關(guān)于如何實現(xiàn)OLE技術(shù)的文檔被更新為ActiveX技術(shù),唯一的變化就是術(shù)語OLE,現(xiàn)在命名為ActiveX。 盡管OLE及ActiveX取得了巨大的進步,表面上每天還有與其相關(guān)的新技術(shù)出現(xiàn),但Internet是否已經(jīng)或直接卷入到許多相關(guān)的領(lǐng)域還是令人置疑的。對小型、快速、可重用組件(COM組件)的需求已經(jīng)些年頭了,分布式組件(DCOM組件)在幾年前的OLE 2.0 專業(yè)人員開發(fā)大會上作了第一次演示。Visual Basic(VB)開發(fā)組在使ActiveX技術(shù)成為可能的早期扮演了得要角色。包含在ActiveX SDK中的BaseCtl框架就是由VB開發(fā)組開發(fā)的,它解決了VB為減少載入時間而對小型,輕量級組件的需求。Internet唯一的貢獻就是它需要一種方式來實現(xiàn)和發(fā)布Web頁面。實際上,每一個ActiveX的新功能都能追溯到最基本的,全球泛圍的對小型、快速,可重用組件的需求,而這,就是從OLE和COM開始的。 ActiveX并不意味著要代替OLE,僅僅把它擴大到包括Internet,企業(yè)內(nèi)部網(wǎng)商務(wù)應(yīng)用程序及家庭應(yīng)用程序的開發(fā),以及開發(fā)這些應(yīng)用的工具。 Microsoft發(fā)布了大量關(guān)于ActiveX開發(fā)的文檔。OC 96 規(guī)范定義了如何開發(fā)啟動更快速,繪制能力更強的控件,它也定義了哪些接口是必需的,而哪些接口是可選的。”OLE Control and Control Container Guidelines”提供了關(guān)于控件與控件容器交互的重要信息。Microsoft的Web站點成為了信息豐富的及創(chuàng)建、使用、分發(fā)ActiveX組件的中心。 除了創(chuàng)建ActiveX組件的技術(shù)細節(jié)外,Microsoft建立起了一套使用和集成ActiveX組件的標準。從VB、Micrsoft Word到Java的每一個產(chǎn)品都繼承了使用ActiveX組件的能力。在ActiveX技術(shù)出現(xiàn)前,一大半的應(yīng)用程序無法像如今這樣如此緊密相關(guān)地無縫集成。 接下來的部分將談到我們可以創(chuàng)建的ActiveX組件的類型,以及我們何時,為什么才需要使用它—這可能更有幫助。 ActiveX組件的分類 本書的主題是ActiveX組件的開發(fā)。這些組件可以分為以下幾類: Automation Servers:自動化服務(wù)器 自動化服務(wù)器是可以被其它應(yīng)用程序編程驅(qū)動的組件。一個自動化服務(wù)器包含到少一個或多個基于IDispatch的接口,其目的是為了讓其它的應(yīng)用程序創(chuàng)建和連接它。根據(jù)服務(wù)器本身的特性,一個自動化服務(wù)器可以包含也可以不包含用戶界面。 注意:對于控制器來說,執(zhí)行最快的就是進程內(nèi)自動化服務(wù)器。但要記住,使用進程內(nèi)服務(wù)器并不能保證其性能。如果一個進程內(nèi)自動化服務(wù)器在一個進程空間內(nèi)被創(chuàng)建,而被另一進程內(nèi)的控制器所控制,它就降級為進程外服務(wù)器,其性能與進程外服務(wù)器相同。關(guān)于進程空間與服務(wù)器沖突的更多信息請參見本書的第二部分。 自動化控制器 自動化控制器可以是任意類型的應(yīng)用程序,DLl或是EXE,能夠以進程內(nèi),本地,遠程的方式訪問自動化服務(wù)器。一般地,注冊表入口與服務(wù)器的實現(xiàn)指明了與控制器相關(guān)的自動化服務(wù)器應(yīng)該在哪一個進程空間運行。 控件 COM對象 注意:自動化服務(wù)器也能受益于COM接口,這些服務(wù)器就是雙接口服務(wù)器。自動化服務(wù)器接口有一個伴隨的COM接口,它描述了對象的方法及屬性。象VB這樣的自動他控制器在使用服務(wù)器的時候能夠利用雙接口的優(yōu)勢提供更高的性能。雙接口服務(wù)器有一個缺點就是在定義屬性和方法時,其數(shù)據(jù)類型被限制為被OLE自動化所支持的類型。 |
|