COM/DCOM技術(shù)及應(yīng)用
- 期刊名字:玉溪師范學(xué)院學(xué)報(bào)
- 文件大?。?50kb
- 論文作者:蘭景英,劉玓
- 作者單位:電子科技大學(xué)
- 更新時(shí)間:2020-06-12
- 下載次數(shù):次
玉溪師范學(xué)院學(xué)報(bào)第20卷2004年第8期Jourmal of Yuxi Teachers College Vol 20 No 8 Aug 2004COM/DCOM技術(shù)及應(yīng)用蘭景英劉玓(電子科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,四川成都610054)[關(guān)鍵詞]COM;DCOM;接口;組件;對象;分布式[摘要]介紹了 COM/DCOM的技術(shù)原理,分析其標(biāo)準(zhǔn)、結(jié)構(gòu)、特點(diǎn)及其應(yīng)用,提出了基于COM的聊天室設(shè)計(jì)模型[中圖分類號]TP393[文獻(xiàn)標(biāo)識碼]A[文章編號]1009-9506(2004)08-0051-03COM/DCOM technology and applicationLAN Jin-gying LIU DiCollege of Computer Science and Engineering, UEST of China Chengdu 610054)ey Words: COM; DCOM; Interface; Module; Object; DistributedAbstract: In order to meet that need of the large - scale and complicated development of distributedapplication as the distributed technology standard of component model COM/DCOM technologies are usedwidely, In this paper, we introduce the theory of COM/DCOM, and analyze the criterion, structure.haracteristic and give a chat model based on COMcoM( Component Object Model)是 Microsoft提出的一種基于二進(jìn)制標(biāo)準(zhǔn),與編程語言無關(guān)的軟件構(gòu)架,它使各軟件組件可以用一種統(tǒng)一的方式進(jìn)行交互.COM技術(shù)擴(kuò)展了對象的功能,描述了程序員如何生成可重用對象,允許不同程序設(shè)計(jì)語言實(shí)現(xiàn)程序之間交互操作.COM組件程序分為兩種:一種是進(jìn)程內(nèi)組件,它一般是一個(gè)動(dòng)態(tài)連接庫DLL;另一種是進(jìn)程外組件,它一般是一個(gè)可執(zhí)行EXE在分布式環(huán)境下實(shí)現(xiàn)COM組件的分布式調(diào)用也是COM技術(shù)的關(guān)鍵, Microsoft提出了DCOM技術(shù)實(shí)現(xiàn)COM組件的遠(yuǎn)程調(diào)用1COM組件技術(shù)1.1概述COM組件是可獨(dú)立發(fā)布的二進(jìn)制組件,在 Windows平臺上為DLL或者 EXE. COM對象是客戶程序進(jìn)行交互的實(shí)體,通過COM接口提供服務(wù),符合面向?qū)ο蟮幕靖拍頒OM接口是一組邏輯相關(guān)的函數(shù)的集合其函數(shù)也被稱為接口成員函數(shù)COM接口是客戶與對象之間的協(xié)議,對象實(shí)現(xiàn)COM接口,客戶使用COM接口.在COM中,接口就是一切個(gè)COM組件或是DLL文件,或是一個(gè)EXE文件,一個(gè)組件程序可以包含多個(gè)COM對象,每個(gè)COM對象可以實(shí)現(xiàn)多個(gè)接口.當(dāng)另外的組件或組件的客戶程序調(diào)用組件的功能時(shí),它首先創(chuàng)建一個(gè)COM對象或者通過其他途徑獲得COM對象,然后通過該對象所實(shí)現(xiàn)的COM接口調(diào)用它所提供的服務(wù).1.2COM接口COM對象通過接口來顯示功能,接口是COM對象與外部世界的一個(gè)綁定約定對于COM而言,接口是一個(gè)包含一個(gè)函數(shù)指針數(shù)組的內(nèi)存結(jié)構(gòu),每個(gè)數(shù)組元素包含的是一個(gè)由COM組件所實(shí)現(xiàn)的函數(shù)的地址COM對象的接口均由一個(gè)共同的祖先 IUnknown,即所有的接口均從 IUnknown派生. IUnknown包含三個(gè)函數(shù),分別是 QueryInterface、 AddRef、 Release. Query Interfa這是一個(gè)非常重要的特性,因?yàn)槲覀兡芡ㄟ^COM對象的任中國煤化工派生的其他接口ce查詢到它的其他任何接口.接口的身份用接口I來標(biāo)識,這是一個(gè)全世界惟CNMHG對象ID,即GUD氍收稿日期]2004-06-19[作者簡介]蘭景英(1975-),女,四川隆昌人,碩士研究生,主要研究方向:COM技術(shù)52玉溪師范學(xué)院學(xué)報(bào)Add Ref用于增加引用計(jì)數(shù), Release用于減少引用計(jì)數(shù),接口指針的生命期管理總是通過建立在每個(gè)COM接口上的 AddRef和 Release方法來實(shí)現(xiàn)由于接口的方法是一組函數(shù),因此為了確保調(diào)用者通過接口能正確調(diào)用它所需要的方法,必須確保接口的不變.COM對象允許實(shí)現(xiàn)多個(gè)接口,增加的功能由新的接口實(shí)現(xiàn)只要我們遵守接口不變原則(即方法名稱參數(shù)不變),就可以自由修改方法內(nèi)部的實(shí)現(xiàn)COM對象的接口是對象與其客戶聯(lián)系的紐帶由于COM是與語言無關(guān)的,表示一個(gè)接口的內(nèi)存塊必須具有一定的標(biāo)準(zhǔn)結(jié)構(gòu)COM定義了接口的二進(jìn)制格式,有了這種標(biāo)準(zhǔn)格式的定義,客戶可以不管COM對象的編程語言就能正確地調(diào)用它的方法客戶的接口指針指向?qū)ο笾械膬?nèi)部指針,該內(nèi)部指針指向包含接口中各方法指針的 Vtable表通常我們把接口函數(shù)表稱為虛函數(shù)表( Virtual function table- vtable),指向 Vtable的指針為 pOtable,則COM接口的結(jié)構(gòu)如圖1所示:vtablepotable接口指針指針指針函數(shù)1指針函數(shù)2對象o。oe1COM接口的結(jié)構(gòu)1.3COM對象和COM組件COM對象是COM組件提供給客戶以對象形式封裝起來的實(shí)體,是客戶程序與組件程序通信的主體,要求對其進(jìn)行標(biāo)識在COM規(guī)范中,每個(gè)對象有128位的全局惟一標(biāo)識符GUID來惟一標(biāo)識稱為 CLSID客戶程序通過 CLSID進(jìn)行對象的創(chuàng)建和初始化工作COM組件實(shí)際上是一個(gè)C++類,而接口都是純虛類COM組件有三個(gè)最基本的接口類,分別是IUnknown、 IClassFactory、 IDispatch. COM規(guī)范規(guī)定任何組件、任何接口都必須從 IUnknown繼承. ClassFactory的作用是創(chuàng)建COM組件 IDispatch是調(diào)度接口,為客戶和組件提供了另外一種通信方式,使COM組件可以通過一個(gè)標(biāo)準(zhǔn)的接口提供它所支持的服務(wù)CoM應(yīng)用基于客戶/服務(wù)器模型,COM組件向客戶提供服務(wù).COM組件按照代碼模塊的結(jié)構(gòu)和代碼模塊與客戶進(jìn)程間的關(guān)系,可分為三種類型:進(jìn)程內(nèi)組件:進(jìn)程類組件是以DLL形式被裝入到客戶的進(jìn)程空間中的其優(yōu)點(diǎn)在于應(yīng)用者訪問它時(shí),沒有必要進(jìn)行環(huán)境切換,以獲得最快的速度,但它不能作為一個(gè)獨(dú)立存在的應(yīng)用程序運(yùn)行.(2)本地組件:本地組件是一個(gè)可執(zhí)行的EXE應(yīng)用程序,在客戶機(jī)上作為一個(gè)獨(dú)立的進(jìn)程來運(yùn)行(3遠(yuǎn)程組件遠(yuǎn)程組件是運(yùn)行在一個(gè)通過網(wǎng)絡(luò)連接到客戶端的獨(dú)立的機(jī)器上,通過DCOM運(yùn)行在另一個(gè)進(jìn)程中1.4COM的特性面向?qū)ο笙到y(tǒng)的三個(gè)最基本的特性分別是:封裝性、多態(tài)性和可重用性COM對象的封裝特性是很徹底的,所有的對象狀態(tài)信息必須通過接口才能訪問;COM的多態(tài)性完全通過接口體現(xiàn)出來,而且分別在三個(gè)層次上體現(xiàn)了多態(tài)性:接口成員函數(shù)、單個(gè)接口、一組接口;COM的重用性是建立于二進(jìn)制代碼一級的.COM除了具有基本的面向?qū)ο筇匦?如封裝性、多態(tài)性等之外,還具有如下關(guān)鍵特性:(1)語言無關(guān)性:COM標(biāo)準(zhǔn)不是面向源代碼級的標(biāo)準(zhǔn),而是采用一種基于二進(jìn)制代碼級的標(biāo)準(zhǔn).COM規(guī)范的定義不依賴于特定的語言,編寫組件所使用的語言與編寫客戶使用的語言可以不同(2)進(jìn)程透明性:無論進(jìn)程內(nèi)組件還是進(jìn)程外組件,其創(chuàng)建過程和接口調(diào)用對用戶是透明的(3)可重用性:COM的重用包括包容和聚合兩種方式(4)安全特性:COM包括兩種類型的安全性,一種是激活專性·早一種懸調(diào)用安全性(5)多線程性:按照COM對象的執(zhí)行環(huán)境,分為套間線中國煤化工1.5分布式COM(DCOM)CNMHGDCOM是COM的擴(kuò)展,它可以支持在不同計(jì)算機(jī)上組件對象與客戶程序之間或者組件對象之間的相互通信,這些計(jì)算機(jī)可以在局域網(wǎng)內(nèi),也可以在廣域網(wǎng)上,甚至通過 Internet進(jìn)行連接DCOM為在網(wǎng)絡(luò)不同節(jié)點(diǎn)的組件提供了互操作基礎(chǔ),它可以作為分布式應(yīng)用系統(tǒng)的基本框架,客戶程序與DCOM組件之間形成了蘭景英劉玓: COM/DCOM技術(shù)及應(yīng)用客戶/服務(wù)器關(guān)系,再進(jìn)一步還可以構(gòu)成多層軟件模型.典型的分布式應(yīng)用系統(tǒng)是,在各個(gè)服務(wù)器上運(yùn)行一些DCOM組件對象,客戶程序調(diào)用這些組件對象,由它們完成實(shí)際的功能操作.這種結(jié)構(gòu)不僅可減輕客戶程序的負(fù)擔(dān),還可以提高系統(tǒng)的整體性能DcOM組件同時(shí)也是一個(gè)COM組件,具有COM組件的基本特性.從分布式應(yīng)用系統(tǒng)的角度看,DCOM還具有如下特性:(1)位置透明性:無論組件和客戶進(jìn)程是否在同一臺主機(jī),客戶連接對象和調(diào)用對象的形式都完全一樣.(2)可伸縮性:DCOM的結(jié)構(gòu)特點(diǎn)提供了應(yīng)用系統(tǒng)的靈活配置方案,使應(yīng)用系統(tǒng)能夠很好地適應(yīng)需求規(guī)模的變化(3)協(xié)議無關(guān)性:DCOM并不要求專門的網(wǎng)絡(luò)協(xié)議,用戶可以在不改變現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)的情況下使用分布式應(yīng)用軟件.(4)平臺獨(dú)立性:DCOM把平臺相關(guān)性的二進(jìn)制標(biāo)準(zhǔn)和平臺無關(guān)的標(biāo)準(zhǔn)隔離開來,并且它是建立在 DCE RPC的基礎(chǔ)上,所以DCOM能很好地適應(yīng)不同的系統(tǒng)平臺.(5)可配置性:使用DCOM模型建立的分布式軟件系統(tǒng)可以很方便地對系統(tǒng)進(jìn)行重新配置,包括服務(wù)器的變化、客戶程序的自動(dòng)安裝等特性2基于COM組件的聊天室設(shè)計(jì)實(shí)現(xiàn)交流客戶端聊天室主要是為終端用戶提供一個(gè)實(shí)時(shí)信息交流的工具.作為一個(gè)獨(dú)立功能模塊可以掛接在不同的軟件平臺上.為了滿足模塊功能的可重用性和可擴(kuò)展性,各部分交流服務(wù)器客戶端組件均以COM組件的方式實(shí)現(xiàn)聊天室是一個(gè)分布式應(yīng)用其各部分結(jié)構(gòu)如圖2:圖2聊天室各部分結(jié)構(gòu)圖交流客戶端包括與用戶交互的所有功能,提供可視化的用戶界面以便用戶觀察信息及處理數(shù)據(jù)客戶端組件是交流客戶端程序訪問交流服務(wù)器的接口,它向交流客戶端程序屏蔽了下層的聊天室應(yīng)用協(xié)議以及更底層的通訊協(xié)議.通過客戶端組件提供的接口方法,交流客戶端程序可以通過方法調(diào)用的方式訪問到遠(yuǎn)程交流服務(wù)器提供的各種交流服務(wù).交流服務(wù)器涉及所有典型的數(shù)據(jù)處理活動(dòng),包括數(shù)據(jù)存取修改以及其他與數(shù)據(jù)庫相關(guān)的任務(wù).交流服務(wù)器管理和滿足由客戶端組件或其他數(shù)據(jù)服務(wù)組件提出的服務(wù)請求在交流平臺中,會(huì)有服務(wù)器主動(dòng)向各個(gè)交流客戶端“推送”消息的情況,并且服務(wù)器與交流客戶端之間需要建立長連接,因此適合采用異步通信方式與服務(wù)器進(jìn)行數(shù)據(jù)交換.客戶端組件內(nèi)部使用IOCP方式接收來自交流平臺服務(wù)器的數(shù)據(jù),為此需在組件中創(chuàng)建單獨(dú)的數(shù)據(jù)接收線程專門接收服務(wù)器信息,并建立專門的緩沖區(qū)隊(duì)列存放接收到的報(bào)文數(shù)據(jù)到達(dá)客戶端組件后,客戶端組件對服務(wù)器應(yīng)答報(bào)文進(jìn)行初步解析,獲取報(bào)文頭部信息,再通過事件或者消息方式通知交流客戶端數(shù)據(jù)到達(dá)3結(jié)束語自從COM在OLE2中被首次作為底層技術(shù)應(yīng)用以來,COM一直在不斷發(fā)展作為基于組件對象模型的分布式技術(shù)規(guī)范,COM/DCOM已被廣泛采用.COM已經(jīng)滲透到Internet各種軟件中去,包括一些基本的協(xié)議軟件隨著 nternet和 Internet企業(yè)應(yīng)用的飛速發(fā)展,COM將以其巨大的潛力滲透到軟件科學(xué)的各個(gè)領(lǐng)域中去參考文獻(xiàn)[1]潘愛民.COM原理與應(yīng)用[M].北京:清華大學(xué)出版社,1999[2]潘愛民COM本質(zhì)論[M].北京:中國電力出版社,1997[3]DaleRogerson.COM技術(shù)內(nèi)幕[M].楊秀章譯北京清華大學(xué)出版社,199.[4] Thuan L.Thai.DCOM入門[M].陳逸譯.北京:中國電力出中國煤化工CNMHG
-
C4烯烴制丙烯催化劑 2020-06-12
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-06-12
-
生物質(zhì)能的應(yīng)用工程 2020-06-12
-
我國甲醇工業(yè)現(xiàn)狀 2020-06-12
-
石油化工設(shè)備腐蝕與防護(hù)參考書十本免費(fèi)下載,絕版珍藏 2020-06-12
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡介 2020-06-12
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-06-12
-
甲醇制芳烴研究進(jìn)展 2020-06-12
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進(jìn)展 2020-06-12
