天天看點

全面深入學習OLE技術引言(問題的提出)一.OLE技術是什麼?二.OLE技術出現的曆史背景:三.OLE技術的演變和曆史四.OLE應用及相關名詞 五.OLE技術與COM技術是什麼關系?六.ActiveX介紹七.ActiveX元件的分類:八.ATL是什麼?九.COM是什麼?十.DCOM是什麼十一.如何啟用DCOM 十二.MTS是什麼?十三.COM+是什麼?十四.COM+的新增服務: 十五.COM+的主要特性: 十六.Windows DNA是什麼十七.微軟技術發展路線圖附錄:技術術語的縮寫

全面深入學習OLE技術

1.如何将同步軟體的聯系人/月曆/任務/郵件等資訊導入到微軟的OutLook軟體中

為了解決此問題,就需要用到微軟的OLE技術。

涉及相關技術有:OLE,OLE Automation,ActiveX,COM等技術。本文企圖就這些技術講解其背景,其曆史,其發展變革,其互相關系。

OLE是Object Link Embeded此三個單詞的縮寫。對象的連結和嵌入

為了使得那些沒有太多專業知識的使用者能夠很容易地協調多個應用程式完成混合文檔的建立,OLE技術正是提供了建立混合文檔的技術手段(資深Windows 3.X 使用者可能記得當初在Word6.0中插入一個圖形的新奇和喜悅)。

1991年釋出OLE1.0規範,其主要解決多個應用程式之間的通信和消息傳遞問題

1993年制定OLE2.0規範,完善并增強了以下各方面的性能:

1.OLE自動化:一個程式有計劃地控制另一個程式的能力;

2.OLE控件:小型的元件程式,可嵌入到另外的程式,提供自己的專有功能;

3.OLE文檔:完善了早期的混合文檔功能,不僅支援簡單連結和嵌入,還支援在位激活、拖放等功能。

OLE2.0是與WINDOWS 3.1一起推出的,它是第一個真正的COM技術,而OLE1.0還不具備COM的各項特性—OLE1.0使用的是另一種技術體系。

OLE2.0中産生了一種新的唯一的資料格式,稱為複合檔案。這種檔案中能夠包括所有OLE支援的應用程式的相關資訊,并在任一工作的應用程式中支援編輯、更新、列印等功能。

但OLE2.0仍然存在一些局限性,最為明顯的問題是:

任何時候要對一個嵌入的資料進行編輯都得重新打開一個視窗。

針對這一點的改進,生成了OLE的一個新版本,稱為OLE自動化。該技術除了允許在調用資料的應用程式内部進行編輯(稱為内部編輯),還在OLE2.0的基礎上加入了其它兩項與COM技術相關的改進:

一.是提供了非C++開發程式(如VB程式)接入COM功能的能力;

二.是支援存在于複合檔案以外的基于COM技術的部件的建立;

Windows 3.11全面支援自動化技術。

1996年制定OLE96規範,該規範有如下變化:

1.擴充了OLE控件的能力;

2.更易于在網絡環境中使用

3.還考慮命名混淆的問題;

此時,給OLE控件貼上一個标簽——ActiveX控件,OLE文檔也相應稱為ActiveX 文檔。

總之,為了滿足Internet戰略,微軟把OLE換成了ActiveX,企圖使人們重新看待新的OLE——ActiveX,把它看做網絡上的解決軟體元件問題的标準。

容器是一個客戶程式,它可以申請并使用其它COM元件,通過元件提供的接口為其它程式實作一些功能;

伺服器通過特定的接口将自己完成的一些功能,提供給使用自己的應用程式(例如畫筆程式是一個文檔伺服器,它提供建立并編輯BMP 圖像的功能)。當打開Word,選擇【插入】菜單下的【對象...】項,您可以看到在您的系統中存在哪些文檔伺服器,此時的Word以文檔容器的身份出現。

當您輕按兩下插入的對象後發現Word的菜單有些改變,變成了文檔伺服器程式的菜單,可以在目前的環境下編輯對象,這稱為在位激活。   

和OLE文檔技術類似,允許一個應用程式通過程式設計控制另一個應用程式“自願”提供的功能的技術稱為OLE自動化。自身暴露一些可程式設計對象給其它程式的應用程式叫自動化伺服器,利用并操縱自動化伺服器提供的功能的應用程式叫自動化客戶或自動化控制器,有些程式既是自動化伺服器又是自動化控制器。例如在VC中我們可以通過程式設計建立并編輯一個Excel工作表(很多參考書都以此為例),這裡的VC就是自動化控制器,而建立工作表的Excel程式則是自動化伺服器,但在Excel中我們又可以利用VBA語言建立PowerPoint的幻燈片,它又成了自動化控制器。利用OLE自動化技術可以實作軟體的一次開發和多次利用,這也是內建元件的關鍵技術。無論是作業系統還是應用軟體,微軟都有意識朝着這個方向發展,例如從Windows95開始,包括WindowsNT4.0以後的作業系統的Shell就實作了OLE自動化技術。

微軟在OLE2.0技術的基礎上建立了一個稱為COM(ComponentObjectModel即元件對象模式)的新的技術規範。

是以說,現在的OLE技術是基于COM技術。

可以得出如下幾點:

1.先有OLE技術,後有COM技術;

2.微軟是基于OLE技術,建立COM技術規範的,或者說是對OLE技術的擴充;

3.OLE技術屬于COM技術的一部分,或者一個子集;

4.現在的OLE技術是基于COM技術基礎的;

5.微軟的許多技術,如OLE、ActiveX、以及DirectX等都是基于COM技術而建立起來的;

ActiveX是Microsoft對于一系列政策性面向對象程式技術和工具的稱呼,其中主要的技術是元件對象模型(COM:Component Object Model)。在有目錄和其它支援的網絡中,COM變成了分布式COM(DCOM)。在建立包括ActiveX程式時,主要的工作就是元件,一個可以自足的在ActiveX網絡(現在的網絡主要包括Windows和Mac)中任意運作的程式。這個元件就是ActiveX近控件。ActiveX是Microsoft為抗衡Sun Microsystems的JAVA技術而提出的,此控件的功能和JAVA applet功能類似。

如果您使用的是Windows作業系統,您或許會注意到一些以OCX結尾的檔案。OCX代表“對象連結與嵌入控件”(OLE),這個技術是Microsoft提出的程式技術,用于處理桌面檔案的混合使用。現在COM的概念已經取代OLE的一部分,Microsoft也使用ActiveX控件代表元件對象。

元件的一大優點就是可以被大多數應用程式再使用(這些應用程式稱為元件容器)。一個COM元件(ActiveX控件)可由不同語言的開發工具開發,包括C++和Visual Basic或PowerBuilder,甚至一些技術性語言如VBScript。

目前,ActiveX控件在Windows 95/NT和Macintosh中運作,Microsoft還準備支援UNIX的ActiveX控件。

  ActiveX 是一個打開的內建平台,為開發人員、 使用者和 Web生産商提供了一個快速而簡便的在 Internet 和 Intranet 建立程式內建和内容的方法。 使用 ActiveX, 可輕松友善的在 Web頁中插入 多媒體效果、 互動式對象、以及複雜程式,建立使用者體驗相當的高品質多媒體 CD-ROM 。

  根據微軟權威的軟體開發指南MSDN(Microsoft Developer Network)的定義,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些軟體元件或對象,可以将其插入到WEB網頁或其它應用程式中。

以前稱為 OLE 控件或 OCX 控件. 是元件 (或對象) 打包,别人程式設計功能. 以便您可以重用 Web頁或其他程式中插入。 例如, 随 InternetExplorer 一起提供 ActiveX 控件可用于增強 Web頁具有複雜格式功能和動畫。

ActiveX 控件結合了Java 程式和 Netscape 插件優點,還可以用許多程式設計語言, 包括所有 Microsoft 程式設計和在資料庫語言編寫程式中使用 ActiveX 控件。

用一個 ActiveX - 識别 Web 浏覽器如 InternetExplorer, 浏覽時 ActiveX 文檔使您能夠使用自己的工具欄和菜單可打開程式。 這意味着您可以通過使用 ActiveX - 識别 Web 浏覽器打開非HTML 檔案, 如 MicrosoftExcel 或 MicrosoftWord 檔案。

ActiveX 腳本支援最常用腳本語言, 包括 Microsoft VisualBasic 腳本和 JavaScript。 ActiveX 腳本可用于內建行為若幹 ActiveX 控件或 Java 程式從 Web 浏覽器或伺服器, 擴充其功能。

  在網際網路上,ActiveX插件軟體的特點是:一般軟體需要使用者單獨下載下傳然後執行安裝,而ActiveX插件是當使用者浏覽到特定的網頁時,IE浏覽器即可自動下載下傳并提示使用者安裝。 ActiveX插件安裝的一個前提是必須經過使用者的同意及确認。

  ActiveX插件技術是國際上通用的基于Windows平台的軟體技術,除了網絡實名插件之外,許多軟體均采用此種方式開發,例如Flash動畫播放插件、Microsoft MediaPlayer插件、CNNIC通用網址插件等。

  當通過Internet發行軟體時,軟體的安全性是一個非常引人注意的問題,IE浏覽器通過以下的方式來保證ActiveX插件的安全:

  ActiveX使用了兩個補充性的政策:安全級别和證明,來追求進一步的軟體安全性;

  Microsoft提供了一套工具,可以用它來增加ActiveX對象的安全性;

  通過Microsoft的驗證代碼工具,可以對ActiveX控件進行簽名,這告訴使用者你的确是控件的作者而且沒有他人篡改過這個控件;

  為了使用驗證代碼工具對元件進行簽名,必須從證書授權機構獲得一個數字證書;證書包含表明特定軟體程式是正版的資訊,這確定了其他程式不能再使用原程式的辨別。證書還記錄了頒發日期。當您試圖下載下傳軟體時,Internet Explorer 會驗證證書中的資訊,以及目前日期是否在證書的截止日期之前。如果在下載下傳時該資訊不是最新的和有效的,Internet Explorer 将顯示一個警告;

  在IE預設的安全級别中,ActiveX控件安裝之前,使用者可以根據自己對軟體發行商和軟體本身的信任程度,選擇決定是否繼續安裝和運作此軟體。

  在最新的IE 7中,安全性有進一步的提高。

  熟悉面向對象程式設計和網絡程式設計的人一定對ActiveX、OLE和COM/DCOM這些概念不會陌生,但是它們之間究竟是什麼樣的關系,對許多人還是比較模糊的。 在具體介紹它們的關系之間,我們還是先明确元件(Component)和對象(Object)之間的差別。

  元件是一個可重用的子產品,它是由一組處理過程、資料封裝和使用者接口組成的業務對象(Rules Object)。元件看起來像對象,但不符合對象的學術定義。它們的主要差別是:

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

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

  3)元件為子產品重用,而對象為代碼重用。

  現在,比較流行的元件模型有COM(Component Object Model,對象元件模型)/DCOM(Distributed COM,分布式對象元件模型)和CORBA(Common Object Request Broker Architecture,公共對象請求代理體系結構)。到這裡,已經出現了與本文相關的主題COM,而CORBA與本文無關,就不作介紹。之是以從元件與對象的差別說起,是想讓大家明确COM和CORBA是處在整個體系結構的最底層,如果暫時對此還不能了解,不妨繼續往下看,最後在回過頭看一看就自然明白了。

  現在開始闡述ActiveX、OLE和COM的關系。首先,讓大家有一個總體的概念,從時間的角度講,OLE是最早出現的,然後是COM和 ActiveX;從體系結構角度講,OLE和ActiveX是建立在COM之上的,是以COM是基礎;單從名稱角度講,OLE、ActiveX是兩個商标名稱,而COM則是一個純技術名詞,這也是大家更多的聽說ActiveX和OLE的原因。既然OLE是最早出現的,那麼就從OLE說起,自從 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并不是産品,它需要一個商标名稱。而那時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才是最根本的核心技術,是以下面的重點 COM。讓對象模型完全獨立于程式設計語言,這是一個非常新奇的思想。這一點從C++和Java的對象概念上,我們就能有所了解。但所謂COM對象究竟是什麼呢?為了便于了解,可以把COM看作是某種(軟體)打包技術,即把它看作是軟體的不同部分,按照一定的面向對象的形式,組合成可以互動的過程和以組支援庫。COM對象可以用C++、Java和VB等任意一種語言編寫,并可以用DLL或作為不同過程工作的執行檔案的形式來實作。使用COM對象的浏覽器,無需關心對象是用什麼語言寫的,也無須關心它是以DLL還是以另外的過程來執行的。從浏覽器端看,無任何差別。這樣一個通用的處理技巧非常有用。例如,由使用者協調運作的兩個應用,可以将它們的共同作業部分作為COM對象間的互動來實作(當然,現在的OLE複合文檔也能做到)。為在浏覽器中執行從Web伺服器下載下傳的代碼,浏覽器可把它看作是COM對象,也就是說,COM技術也是一種打包可下載下傳代碼的标準方法(ActiveX控件就是執行這種功能的)。甚至連應用與本機OS進行互動的方法也可以用COM來指定,例如在Windows和Windows NT中用的是新API,多數是作為COM對象來定義的。

  可見,COM雖然起源于複合文檔,但卻可有效地适用于許多軟體問題,它畢竟是處在底層的基礎技術。用一句話來說,COM是獨立于語言的元件體系結構,可以讓元件間互相通信。随着計算機網絡的發展,COM進一步發展為分布式元件對象模型,這就是DCOM,它類似于CORBA的ORB,本文對此将不再做進一步的闡述。通過上面的講述相信大家一定對ActiveX、OLE和COM/DCOM的關系有了一個清楚的了解。

  ActiveX控件有較強的功能,但也存在被人利用的隐患,網頁中的惡意代碼往往就是利用這些控件編寫的小程式,隻要打開網頁就會被運作。是以要避免惡意網頁的攻擊隻有禁止這些惡意代碼的運作。

  IE對此提供了多種選擇,具體設定步驟是:“工具”→“Internet選項”→“安全”→“自定義級别”,建議您将ActiveX控件與相關選項禁用,謹慎些總沒有錯!

  另外,在IE的安全性設定中我們隻能設定Internet、本地Intranet、受信任的站點、受限制的站點。不過,微軟在這裡隐藏了“我的電腦”的安全性設定,通過修改系統資料庫把該選項打開,可以使我們在對待ActiveX控件s時有更多的選擇,并對本地電腦安全産生更大的影響。

  下面是具體的方法:打開“開始”菜單中的“運作”,在彈出的“運作”對話框中輸入Regedit.exe,打開系統資料庫編輯器,點選前面的“ ”号順次展開到:HKEY_CURRE-NT_USER/Software/Microsoft/Windows/CurrentVersion/InternetSettings/Zones/0,在右邊視窗中找到DWORD值“Flags”,預設鍵值為十六進制的21(十進制33),輕按兩下“Flags”,在彈出的對話框中将它的鍵值改為“1”即可,關閉系統資料庫編輯器。無需重新啟動電腦,重新打開IE,再次點選“工具→Internet選項→安全”标簽,你就會看到多了一個“我的電腦”圖示,在這裡你可以設定它的安全等級。将它的安全等級設定高些,這樣的防範更嚴密。

可以由其他應用程式程式設計驅動的元件。

自動化伺服器至少包括一個,也許是多個供其他應用程式生成和連接配接的基于IDispatch的接口。自動化伺服器可以含有也可以沒有使用者界面(UI),這取決于伺服器的特性和功能。

那些使用和操縱自動化伺服器的應用程式。

ActiveX控件等價于以前的OLE控件或OCX。

一個典型的控件包括設計時和運作時的使用者界面,唯一的IDispatch接口定義控件的方法和屬性,唯一的IConnectionPoint接口用于控件可引發的事件。

ActiveX文檔,即以前所說的DocObject,表示一種不僅僅是簡單控件或自動化伺服器的對象。

ActiveX文檔在結構上是對OLE連結和模型的擴充,并對其所在的容器具有更多控制權。

一個最顯著的變化是菜單的顯示方式。一個典型的OLE文檔的菜單會與容器菜單合并成一個新的集合,而ActiveX文檔将替換整個菜單系統,隻表現出文檔的特性而不是文檔與容器共同的特性。

ActiveX容器是一個可以作為自動化伺服器、控件和文檔宿主的應用程式。

ATL是ActiveX Template Library,即“ActiveX模闆庫”。用來開發ActiveX元件的。

COM(Component Object Model,元件式對象模型)

1.COM不是一種面向對象的語言;

2.COM是一種與源代碼無關的二進制标準;

3.是元件之間互相接口的規範;

4.是OLE和ActiveX的共同基礎;

5. 其作用是使各軟體元件和應用軟體能夠用一種統一的标準方式進行互動;

COM所建立的是一個軟體子產品與另一個軟體子產品之間的連結,而當這種連結建立之後,子產品間就可以通過稱之為“接口”的機制來進行通信。COM标準增加了保障系統群組件完整的安全機制,并擴充到分布式環境。

DCOM是Microsoft的分布式COM技術,擴充了元件對象模型(COM)技術,使其能夠支援在區域網路、廣域網甚至Internet上不同計算機的對象之間的通訊。使用DCOM,你的應用程式就可以在位置上達到分布性,進而滿足你的客戶和應用的需求。

因為DCOM是世界上領先的元件技術COM的無縫擴充,是以你可以将你現在對基于COM的應用、元件、工具以及知識轉移到标準化的分布式計算領域中來。當你在做分布式計算時,DCOM處理網絡協定的低層次的細節問題,進而使你能夠集中精力解決使用者所要求的問題。

DCOM(分布式元件對象模型,分布式元件對象模式)是一系列微軟的概念和程式接口,利用這個接口,用戶端程式對象能夠請求來自網絡中另一台計算機上的伺服器程式對象。DCOM基于元件對象模型(COM),COM提供了一套允許同一台計算機上的用戶端和伺服器之間進行通信的接口(運作在Windows95或者其後的版本上)。

Microsoft Distributed Component Object Model(DCOM)是Component Object Model(COM)的擴充,它支援不同的兩台機器上的元件間的通信,而且不論它們是運作在區域網路、廣域網、還是Internet上。借助DCOM你的應用程式将能夠任意進行空間分布。

由于DCOM是COM這個元件技術的無縫更新,是以你能夠從你現有的有關COM的知識中獲益,你的以前在COM中開發的應用程式、元件、工具都可以移入分布式的環境中。DCOM将為你屏蔽底層網絡協定的細節,你隻需要集中精力于你的應用。

  例如,你可以為一個網站建立應該頁面,其中包括了一段能夠在網絡中另一台更加專業的伺服器電腦上處理(在将它們發送到送出請求的使用者之前)的腳本或者程式。使用DCOM接口,網絡伺服器站點程式(現在以用戶端對象方式發出動作)就能夠将一個遠端程式調用(RPC)發送到一個專門的伺服器對象,它可以通過必要的處理,并給站點傳回一個結果。結果将發送到網頁浏覽器上。 

  DCOM還可以工作在位于企業内部或者除了公共網際網路之外的其他網絡中。它使用TC/IP和超文本傳輸協定。DCOM是作為Windows作業系統中的一部分內建的。DCOM将很快在所有的主流UNIX平台和IBM的大型伺服器産品中出現。 DCOM替代了OLE遠端自動控制。 

  在提供一系列分布式範圍方面,DCOM通常與通用對象請求代理體系結構(CORBA)相提并論。DCOM是微軟給程式和資料對象傳輸的網絡範圍的環境。CORBA則是在對象管理組織(OMG)的幫助下,由資訊技術行業的其他商家提供贊助的。

基于分布式環境下的COM被稱為DCOM(Distributed COM,分布式元件對象模型)。DCOM是ActiveX的基礎,它實作了COM對象與遠端計算機上的另一個對象之間直接進行互動。DCOM規範定義了分散對象建立和對象間通信機制,規範本身不依賴于任何特定程式設計語言和作業系統,但目前該标準隻在Microsoft Windows平台實作。

打開“分布式COM 配置屬性”對話框。

在“預設屬性”頁籤上,選擇“啟用該計算機上的分布式 COM”複選框。

單擊“開始”,單擊“運作”,然後鍵入“ dcomcnfg”,也可以打開“分布式 COM 配置屬性”對話框。

啟用 DCOM 後,該機既可以用 DCOM 發送請求,也可以在同時設定了“預設安全性”頁籤上的“啟用遠端連接配接”的情況下,接收其他計算機的請求。

COM+并不是COM的簡單更新,COM+的底層結構仍然以COM為基礎,它幾乎包容了COM的所有内容,COM+綜合了COM、DCOM和MTS這些技術要素,它把COM元件軟體提升到應用層而不再是底層的軟體結構,它通過作業系統的各種支援,使元件對象模型建立在應用層上,把所有元件的底層細節留給作業系統,是以,COM+與作業系統的結合更加緊密。

COM+不再局限于COM的元件技術,它更加注重于分布式網絡應用的設計和實作。

COM+繼承了COM幾乎全部的優勢,同時又避免了COM實作方面的一些不足,把COM、DCOM和MTS的程式設計模型結合起來,繼承了它們的絕大多數特性,在原有的特性上增加了新的功能。

COM+不僅繼承了COM的所有優點,而且還增加如下一些服務,比如

1.     隊列服務;

2.     負載平衡;

3.     記憶體資料庫;

4.     事件服務等;

5.     事件模型;

6.     對象庫;

7.     隊列元件;

8.     元件的管理;

9.     目錄資訊

隊列服務對于分布式應用非常有意義,特别是在現在網絡速度很慢的情況下,這種機制可以保證應用系統能夠可靠地運作。在應用系統包含大量節點但伺服器又繁忙的情況下,客戶應用程式可以把它們的請求放到隊列中,當伺服器負載比較輕的時候再處理這些請求;

又如COM+提供了負載平衡服務,它可以實作動态負載平衡,而且COM+應用程式的負載平衡特性并不需要編寫代碼來支援,客戶程式群組件程式都可以按通常的方式實作。獲得負載平衡特性并不是用程式設計的方式來實作的,而是通過配置實作分布式應用程式的負載平衡,如上所講的隊列服務,其實也反映了一種負載平衡。

(1) 真正的異步通訊。COM+底層提供了隊列元件服務,這使客戶群組件有可能在不同的時間點上協同工作,COM+應用無須增加代碼就可以獲得這樣的特性。

(2) 事件服務。新的事件機制使事件源和事件接收方實作事件功能更加靈活,利用系統服務簡化了事件模型,避免了COM可連接配接對象機制的瑣碎細節。

(3) 可伸縮性。COM+的可伸縮性來源于多個方面,動态負載平衡以及記憶體資料庫、對象池等系統服務都為COM+的可伸縮性提供了技術基礎,COM+的可伸縮性原理上與多層結構的可伸縮特性一緻。

(4) 可管理和可配置性。管理和配置是應用系統開發完成後的行為,在軟體維護成本不斷增加的今天,COM+應用将有助于軟體廠商和使用者減少這方面的投入。

(5) 易于開發。COM+應用開發的複雜性和難易程度将決定COM+的成功與否,雖然COM+開發模型比以前的COM元件開發更為簡化,但真正提高開發效率仍需要借助于一些優秀的開發工具。

COM+标志着Microsoft的元件技術達到了一個新的高度,它不再局限于一台機器上的桌面系統,它把目标指向了更為廣闊的企業内部網,甚至Internet國際互連網絡。COM+與多層結構模型以及Windows作業系統為企業應用或Web應用提供了一套完整的解決方案。

Windows DNA是Windows Distributed interNet Applications Architecture 的縮寫,如果直譯成中文,是 "Windows 分布式內建網絡應用體系結構" 的意思

所謂“三層結構”(3 tiers)是指一種客戶機/伺服器體系結構。早期的客戶機/伺服器隻有客戶機和裝有資料庫的伺服器兩層,随着資訊系統結構的複雜和規模的日益擴大,兩層結構體系很快向三層結構的客戶機/伺服器體系演化,就是在用戶端和資料庫之間加上應用伺服器。

Microsoft推出Windows DNA 這一套體系結構是為了建立一個構造基于Microsoft Windows平台的應用程式的架構,而這套結構則能夠将個人計算機和Internet 統一和內建起來。Windows DNA打開了一個能夠同時充分發揮個人計算機和Internet的能力的新模式。

在最高的層次上,Windows DNA通過将核心服務高度內建到作業系統中,使計算機在内部網和公共網上都能夠充分發揮協同工作的能力。這使我們的開發人員可以更容易地建立複雜的,能夠支援大量使用者的網絡應用程式。更加重要的是,Windows DNA提供了一種基于開放式協定和公共接口的具有高度協作能力的架構,并允許客戶對現存的系統擴充新的功能,如Web。這種開放的模型具有很強的擴充功能,第三方的廠家也可以建立他們的相容的産品以擴充的這一結構。Windows DNA應用使用一套标準的基于Windows 的服務,可以滿足各個層次最新的分布式應用程式的需求,如使用者界面和導航,業務處理和存儲等。

Windows DNA的核心是将Web和客戶機/伺服器的應用開發模型通過一套公共對象模型內建起來。Windows DNA使用一套公共服務集,如元件、動态 HTML、Web浏覽器和伺服器、腳本、事務處理、消息隊列、安全性、目錄、資料庫和資料通路、系統管理以及使用者界面等。這些服務在各個層次上以同一種方式開放給應用程式使用。

另外由于 Windows DNA是在W3C和IETF等制定的标準上建構的,是以它充分支援開放式的Web功能。

利用Windows DNA提供的優勢,開發人員可以建構全新的應用程式,包括電子商務和其它個人之間及企業之間的通信應用,由于充分利用了标準網絡服務和先進的基于元件的開發模式,開發人員可以比以往更快地開發出全新的應用。Windows DNA支援和舊有的計算機軟硬體之間的內建和擴充,是以UNIX和一些大型機的系統在Windows DNA模式下仍然可以使用。

Windows DNA為網絡應用提供了所有最基本的元件,是以開發人員可以把精力集中在産品的創新上,而無須關注底層結構和服務的構造。今天Windows DNA大部分的元件已被Microsoft的客戶和合作夥伴廣泛地利用了。在不遠的日子裡,随着Microsoft Windows NT 5.0作業系統和COM+(元件對象模型COM的增強版)的出現,将使Windows DNA的結構群組件更易于被開發人員建立和使用。

Windows DNA為應用程式帶來了哪些變化

Windows DNA的應用程式和當今大多數的應用程式有着本質的差別。這是因為Windows DNA使開發人員可以充分利用Internet和傳統基于LAN的客戶機/伺服器系統各自的優勢,使應用程式更加易于建立且功能更加強大。

Windows DNA充分利用了Internet的優勢,通過Microsoft Internet Information Server, Windows DNA的應用可以提供用動态HTML語言建立的使用者界面。這樣就給出了一個簡單的浏覽器的界面,集中的維護和高效的軟體發送模型可以為使用者提供最新的軟體。通過Microsoft Internet Explorer 4.0, Windows DNA提供了對各種用戶端作業系統的廣泛支援,包括Windows NT , Windows 95, Windows CE, Macintosh和UNIX。

通過Microsoft首創的零管理方案(Zero Administration),Windows DNA結構和它的元件都可以被集中地管理。這樣網絡管理者無須手工調整每個使用者的PC就可以安裝和更新應用程式。

Windows DNA可以通過COM+中新增加的偵聽功能動态地改變它的配置和能力。是以如果一旦業務條件或者其它環境因素改變了,應用程式邏輯也會自動随之改變。

差不多40%的個人計算機是所謂“膝上型計算機”,即意味着這些計算機是用于一個沒有聯網的環境中。是以我們的重要的任務之一就是充分考慮這些使用者的需求。Windows DNA中包含了這樣一種功能:當移動使用者接入網絡中時,智能地将資料和函數進行分區和存儲。這樣當使用者離線時,仍可以使用一些特定的應用程式。

由于Windows DNA将Internet和客戶機/伺服器工作模式內建起來,使用者可以如同浏覽Web一樣地浏覽應用程式。通過提供單一的內建化的結構将Intranet和Internet緊緊捆綁起來,Windows DNA降低了系統維護和人員教育訓練的費用。

Windows DNA結構不僅和網絡緊密結合,而且和網絡資料以及現存的應用程式都緊密聯系。Windows DNA并沒有建構一個獨立的資料和應用的底層結構,而是将現存的系統進行擴充,使之能夠共享資料和應用邏輯,并為它們建立可以在Web上使用的接口。

總而言之,Windows DNA将各種客戶的各種系統內建起來,包括從基于頁面的HTML應用程式到基于代碼的Windows應用程式的使用者界面,移動或是離線的使用者,結構化的或是非結構化的存儲,基于Web的或是基于客戶機/伺服器的應用程式。而且它還在充分發揮分布式計算資源的能力的同時,提供了集中管理的工具以降低系統部署和技術支援的開銷。

Windows DNA是如何改變應用程式的開發工作的。

使用Windows DNA,開發人員可以用同樣的底層結構和工具開發所有的應用,從最大的Fortune 500内部資訊系統到Web TV的“頻道向導”。他們可以選擇最适合自己的開發風格和工具,從基于區域網路的到基于Web的。由于Windows DNA提供了一套擴充的、标準的、可以共同工作的系統服務,IT專家将可以緻力于開發業務的解決方案而不再充當系統內建工作者的角色。他們的公司,同樣的,将可以緻力于業務工作以提高市場競争力而不是努力幫助雇員以使之掌握技術的使用。

造成這一變革的主要原因是:

Windows DNA可以用同一套應用程式邏輯和工具集支援一個使用者或是幾萬個并發使用者的應用程式。由于開發人員無須在建構擴充性和管理能力上花費時間和精力,他們可以建構更加豐富的應用程式。

Windows DNA使用一種經過廣泛測試的、交叉平台的元件主幹——COM。所有Microsoft的工具、應用和系統産品都提供公開釋出的基于COM的可擴充接口。COM是第三方廠家将其産品內建到Windows DNA中的主要方式。COM使各種解決方案由一塊塊可重複使用的軟體元件構成,使開發人員能夠快速地建構和測試應用程式。

開發人員可以從大量供應商所提供的元件、服務和工具中挑選出自己所需要的,使它們共同工作以建立Windows DNA的應用。

Windows DNA支援來自各家廠商的多種程式設計語言,有Microsoft, Borland International Inc. 以及Sybase Inc. 等等。

無論是基于主機或是UNIX的應用程式,甚至是來自Solaris平台的産品都可以通過COM為程式員所利用。

Windows DNA近觀

Windows DNA由一組分布式的應用程式服務、分布式的底層服務和公共接口構成。它們包括:(表1)

服務

接口

相應的産品

應用程式服務:

Web伺服器

HTML

Internet Information server

Web浏覽器

Internet Explorer

腳本

VBScript, JScript

“Denali,” Dynamic HTML

事務處理服務

OLE Transactions

MTS

消息隊列服務

“Falcon” API

MMQS

資料庫

ODBC, OLE DB

Microsoft SQL Server

郵件和協作

MAPI, POP3

Outlook, Exchange Server

Java虛拟機

Java

Microsoft Java虛拟機

統一的資料通路

ADO, OLE DB, ODBC

多種

底層服務:

目錄

ADSI

Active Directory, Windows NT Server

安全性

SSL

Windows NT Server, Internet Explorer

網絡

TCP/IP,管道,Winsock等

Windows家族

遠端檔案和列印

CIFS, SMB

元件

COM, DCOM, ActiveX

這些應用服務、底層服務和公共接口在一個多層的架構中進行操作,而COM和其他的标準協定則作為各個應用層之間的粘合劑。

Windows DNA服務

工具

使用者界面和導航

分布式的操作環境

COM

HTML/腳本編寫

基本HTML

動态HTML

窗體

Native

管理

元件的建立

事務處理

快速應用程式的開發(RAD)

Web

伺服器

事務

處理

消息

隊列

小組開發

檔案系統和存儲

檔案

系統

郵件

存儲

其他

基本服務

Windows DNA将多種重要的程式設計模式統一起來。通過使用腳本群組件,Windows DNA為開發人員提供了在各種程式設計模式之間進行切換,以最終實作其應用目标的簡單途徑。例如,一個HTML的開發人員可以将用Microsoft Visual Basic程式設計系統建立的腳本直接嵌入到一個頁面中作為動态的調用。這個腳本然後又可以調用一個用Java編寫的控件。這個控件再調用遠端伺服器上的一個C++的對象,以便和背景基于SQL的資料庫進行資料交換。這一套系統中的每一層次都可以進一步內建,共享一套公共的安全性、目錄和網絡的服務。

這個HTML的開發人員無須了解這個遠端對象是如何構造的,它又是如何與資料庫互動的,就可以充分地利用這一功能建構一個Web頁面。Windows DNA可以将一個應用程式的不同部分嵌在一起,友善地在其間交換資料和執行流程,即使這些部分是用不同的程式設計模式開發的。

Windows DNA展望

Microsoft将在三到五年中分三個階段推出Windows DNA結構。第一步已在今天的Windows産品中有所展現,包括Windows NT Workstation 4.0和Windows NT Server 4.0, Internet Explorer 4.0, Internet Information Server, Microsoft Transaction Server, Microsoft Visual Studio開發系統和其他的微軟産品。今天無數的使用者已經開始利用分布式的應用開發低成本的解決方案。Microsoft計劃在1998年的夏天推出Windows NT 5.0,這其中将包括目錄服務和分布式管理能力,可以通過網絡集中地安裝、維護和管理應用程式。無須對現有的應用軟體進行重新設計,今天的Windows DNA結構完全可以利用這些新的性能,這将是整個計劃的第二步。第三步,同樣是在1998年,Microsoft将計劃推出COM+。這是一種完全的元件對象模式的解決方案,元件将更易于被建立和動态的使用。

随着Windows DNA技術的進一步的發展,開發人員将進入一個嶄新的自由王國。

微軟Windows DNA是綜合PC、客戶機/伺服器以及Internet/Intranet計算模式為一體的應用體系結構,基于Windows DNA的三層結構客戶機/伺服器體系就成為一種事實上的标準。

基于Windows DNA的三層結構把與客戶有關的應用放在中間層來處理。中間層可以放在多台機器上,實作分布式處理,使用者通路中間層,也就是在中間層實作聯機事務處理(OLTP)。

DDE   ->   OLE   ->   OLE  automation   ->   ActiveX   ->   COM   ->   DCOM(MTS +  MSMQ)   ->   COM+

1.OLE

OLE是Object Link Embeded,即對象的連結和嵌入

2.OCX

OCX是OLE Control Extension,是OLE控件的檔案擴充名

3.COM

COM是Component Object Model,即元件對象模型

4.ATL

ATL是ActiveX Template Library,即活動模闆庫

5.MTS

MTS是Microsoft Transaction Server微軟事務伺服器

6.DCOM

DCOM是Distributed Component Object Model,即分布式元件對象模型

7.RPC

RPC是Remote Procedure Call,遠端過程調用

8.DTC

DTC是Distributed Transaction Coordinator

9.ADO

ADO是ActiveX Data Objects

10.DDE

DDE是Dynamic Date Exchage動态資料交換

11.DNA

Windows DNA即基于Windows平台的網絡分布式應用體系結構

1997年9月微軟公司正式釋出了Windows DNA