Visual C++ ActiveX 開發指南:第一章 什麼是ActiveX

來源:互聯網
上載者:User

第一章  什麼是ActiveX

一種Internet策略  

    ActiveX是以一種Internet策略出現的。它包含了OLE,COM及Internet開發的各個方面。

    ActiveX開發涉及範圍廣泛  ActiveX開發的包含了許多方面,比如Automation 伺服程式,ActiveX控制項,COM對象等等。

    術語ActiveX在過去的幾年中成為了許多開發人員及團隊的戰鬥口號,另一方面市場也對其大肆宣揚,然而,沒有幾個人能解釋清楚其確切的含義。本書主要目的就是說明什麼是ActiveX以及它對開發人員意味著什麼。我希望讀者能夠學到和我為寫本書而學到的知識儘可能一樣多。

應用程式開發的一種Internet策略

     Microsoft第一次介紹ActiveX是在1996年的Intenet專業開發人員大會(Internet PDC)上。ActiveX源自於大會的口號“Activate the Internet”(可理解為:讓網際網路活躍起來),與其說ActiveX是一種開發應用程式的技術或是架構,不如說它是一種啟示。

     在開發大會期間,Microsoft正在與控制了Internet瀏覽器市場的Netscape進行激烈的競爭。但是,大會表明了Microsoft感興趣的不僅僅是瀏覽器市場。Microsoft示範的工具從電子儲存前端產品、新的OLE控制項到虛擬現實聊天軟體等等,應有盡有。

    ActiveX是Micrsoft共同的新口號,類似於90年代初的提出的OLE(Object Linking and Embedding,對象連結與嵌入),而且在很短的時間內,遠遠超越了“Activate the Internet”。

    ActiveX成為了包含一切的術語:從Web頁面到OLE控制項。ActiveX開始變得重要起來:一方面,小型、快速、可重用的組件能夠讓你緊緊抓住來自於Micrsoft,Internete及工業的最新技術;另一方面,ActiveX代表了Internet與應用程式整合的策略。目前,在產品或公司中沒有使用Internet及ActiveX技術被認為是過時的。事實上,描述ActiveX就像描述色彩一樣,它既不是技術也不是架構,而是一個概念,一個指導。

ActiveX, OLE及Internet

    ActiveX和OLE開始成為同義字,人們曾經談到的OLE控制項現在成為了ActiveX控制項,OLE文檔對象現在成為了ActiveX文檔對象。有時,整個關於如何?OLE技術的文檔被更新為ActiveX技術,唯一的變化就是術語OLE,現在命名為ActiveX。

    儘管OLE及ActiveX取得了巨大的進步,表面上每天還有與其相關的新技術出現,但Internet是否已經或直接捲入到許多相關的領域還是令人置疑的。對小型、快速、可重用組件(COM組件)的需求已經些年頭了,分布式組件(DCOM組件)在幾年前的OLE 2.0 專業人員開發大會上作了第一次示範。Visual Basic(VB)開發組在使ActiveX技術成為可能的早期扮演了得要角色。包含在ActiveX SDK中的BaseCtl架構就是由VB開發組開發的,它解決了VB為減少載入時間而對小型,輕量級組件的需求。Internet唯一的貢獻就是它需要一種方式來實現和發布Web頁面。實際上,每一個ActiveX的新功能都能追溯到最基本的,全球泛圍的對小型、快速,可重用組件的需求,而這,就是從OLE和COM開始的。

    ActiveX並不意味著要代替OLE,僅僅把它擴大到包括Internet,企業內部網商務應用程式及家庭應用程式的開發,以及開發這些應用的工具。

    Microsoft發布了大量關於ActiveX開發的文檔。OC 96 規範定義了如何開發啟動更快速,繪製能力更強的控制項,它也定義了哪些介面是必需的,而哪些介面是可選的。”OLE Control and Control Container Guidelines”提供了關於控制項與控制項容器互動的重要訊息。Microsoft的Web網站成為了資訊豐富的及建立、使用、分發ActiveX組件的中心。

    除了建立ActiveX組件的技術細節外,Microsoft建立起了一套使用和整合ActiveX組件的標準。從VB、Micrsoft Word到Java的每一個產品都繼承了使用ActiveX組件的能力。在ActiveX技術出現前,一大半的應用程式無法像如今這樣如此緊密相關地無縫整合。

    接下來的部分將談到我們可以建立的ActiveX組件的類型,以及我們何時,為什麼才需要使用它—這可能更有協助。

ActiveX組件的分類

    本書的主題是ActiveX組件的開發。這些組件可以分為以下幾類:

    Automation Servers:Automation 伺服程式
    Automation Controllers:自動化控制器
    Controls:控制項
    COM Objects:COM對象
    Documents:文檔
    Containers:容器

    本書只是詳細談到了Automation 伺服程式,控制項及COM對象。自動化控制器、文檔及容器涉及到太多的介面,太多的技術,超出本書所能承受的範圍。

Automation 伺服程式

    Automation 伺服程式是可以被其它應用程式編程驅動的組件。一個Automation 伺服程式包含到少一個或多個基於IDispatch的介面,其目的是為了讓其它的應用程式建立和串連它。根據伺服器本身的特性,一個Automation 伺服程式可以包含也可以不包含使用者介面。

    Automation 伺服程式可以是進程內的(運行在控制器的進程空間),本地的(運行在自己獨立的進程空間),遠端(運行在其它機器的進程空間)。有些情況下,特定的伺服器實現將會指定伺服器在哪裡運行,但是,這一點是不能保證的。DLL能夠在進程內,本地或遠程運行,而EXE則只能在本地或遠程遠行。

    注意:對於控制器來說,執行最快的就是進程內Automation 伺服程式。但要記住,使用同處理序伺服程式並不能保證其效能。如果一個進程內Automation 伺服程式在一個進程空間內被建立,而被另一進程內的控制器所控制,它就降級為進程外伺服器,其效能與進程外伺服器相同。關於進程空間與伺服器衝突的更多資訊請參見本書的第二部分。

自動化控制器

    自動化控制器是那些能使用和操作Automation 伺服程式的應用程式,一個很好的例子就是VB。使用VB你可以建立,使用並銷毀Automation 伺服程式,就好像它們是VB語言的完整一部分一樣。

    自動化控制器可以是任意類型的應用程式,DLl或是EXE,能夠以進程內,本地,遠端方式訪問Automation 伺服程式。一般地,註冊表入口與伺服器的實現指明了與控制器相關的Automation 伺服程式應該在哪一個進程空間運行。

控制項

    ActiveX等同與OLE控制項或是OCX。一個典型的ActiveX控制項由一個在設計時及運行時都存在的使用者介面,一個定義了控制項的所有方法及屬性的IDispatch介面,一個定義了控制項可以觸發的事件的IConnectionPoint介面所組成。此外,它還可能支援運行生命期內的持久化,以及各種使用者介面功能,例如,剪下粘貼,拖放操作。從結構上來講,一個控制項必須支援大量的COM介面以發揮這些功能的優勢。

    隨著新的OLE控制項及ActiveX開發指南的發行,一個控制項不僅限於上述那些功能。但開發人員可以僅僅實現上述的那些功能,因為它們用處最大,而且對於使用應用程式的使用者來說,他們也最感興趣。由Microsoft出版的控制項與容器指南列出了所有的介面以及它們的特殊要求。你可以在Microsoft的網站http://www.microsoft.com找到這些資訊。

    ActiveX控制項對於容器來說,總是進程內啟動並執行。一個控制項的副檔名通常是OCX,但從執行模式上來講,它就是一個DLL而已。

COM對象
    
    Com對象在結構上類似於Automation 伺服程式和控制器。它們包含一個或多個COM介面,有一部分或完全沒有使用者介面。然而,這些對象不能被控制器以使用Automation 物件的方式所使用。控制器必須理解COM介面才能與這些介面通訊,這些都與自動化介面無關。Windows 95和NT作業系統定義了成百上千的COM介面和自訂介面作為作業系統擴充,控制了從案頭外觀到螢幕三維映像渲染的一切。COM對象是一種組織相關功能及資料的很好的方式,並且仍然保留了DLL對高效能的要求。

 注意:Automation 伺服程式也能受益於COM介面,這些伺服器就是雙介面伺服器。Automation 伺服程式介面有一個伴隨的COM介面,它描述了對象的方法及屬性。象VB這樣的自動他控制器在使用伺服器的時候能夠利用雙介面的優勢提供更高的效能。雙介面伺服器有一個缺點就是在定義屬性和方法時,其資料類型被限制為被OLE自動化所支援的類型。

文檔
    
    ActiveX文檔或者說是最初被稱為的文檔對象,表示那些不僅僅只是一個控制項或伺服器的對象。一個文檔可以是任意的,可以是試算表或者是一個財務應用程式中的複雜的發票。文檔,就像控制項,有使用者介面,並且有容器應用程式作為宿主。Microsoft Word和Microsoft Excel就是複雜的文檔伺服器,Microsoft Office Binder及Microsoft Internet Explorer就是ActiveX文檔容器。

    ActiveX文檔構架是對OLE連結與嵌入模型的擴充,它允許文檔透過其宿主容器得到更多的控制,最明顯的改變就是菜單如何呈現。標準OLE文檔的菜單將會與容器的菜單合并,提供組合的功能集;而ActiveX文檔則會佔用整個菜單系統,因此只表示文檔的功能而不是同時表示文檔和容器的功能。事實上,文檔所暴露的功能集是ActiveX文檔與OLE文檔之間差別的前提。容器只是一種宿主機制,而文檔則擁有所有的控制。

    其它的不同就是列印和儲存。OLE文檔有意地成為其宿主容器文檔的一部分,因此,作為容器文檔的一部分來列印與儲存。而ActiveX文檔則期望支援其本身的列印與儲存功能,並沒有與宿主文件整合。

    ActiveX文檔採用統一的表示結構,而不是OLE文檔的嵌入式的文檔架構。Microsoft Internet Explorer就是一個很好的例子,它只不過給使用者顯示Web頁面,但是將頁面作為一個實體進行瀏覽、列印及儲存。Microsoft Word和Microsoft Excel則是OLE文檔架構,如果Excel的試算表嵌入到Word文檔,那麼試算表將與Word文檔一起儲存,成為完整Word文檔的一部分。

    ActiveX文檔還有一些額外的功能用來支援Internet或Internat的Web頁面發布。想像一下一個內部的訂單跟蹤系統運行在與串連Internet所使用的相同的Web瀏覽器中。

容器
    
    ActiveX容器是能夠作為ActiveX伺服器、控制項或文檔的宿主的應用程式。VB和ActiveX Control Pad都是能夠作為ActiveX伺服器和控制項的容器。Microsoft Office Binder和Microsoft Internet Explorer則是能夠作為ActiveX伺服器、控制項及文檔宿主的容器。

    隨著ActiveX控制項和文檔規範中對必要要求的減少,容器必須足夠健全以處理控制項或文檔缺少某些介面的情況。容器應用程式可能與控制項或文檔只有很少或根本沒有互動,也可能在表現和操作組件時提供了很重要的互動能力。這種能力完全依賴於組件的宿主容器,在任何的容器開發中都不是必要的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.