下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第六講 DCOM的分布式體系結(jié)構(gòu)及實(shí)現(xiàn)機(jī)制分析本講從遠(yuǎn)程調(diào)用角度,將DCOM體系結(jié)構(gòu)分成基本編程構(gòu)架、遠(yuǎn)程構(gòu)架和線(xiàn)路協(xié)議構(gòu)架三層,并分析了它們的工作機(jī)制和實(shí)現(xiàn)策略。1引言DCOM(Distributed Component Object Model)是微軟提出的一種分布式組件對(duì)象模型,它是COM在分布式計(jì)算方面的擴(kuò)展,使COM跨越機(jī)器的邊界,進(jìn)一步應(yīng)用于局域網(wǎng)、廣域網(wǎng),以及Internet上。為了適應(yīng)網(wǎng)絡(luò)環(huán)境,DCOM主要的任務(wù)是在COM的基礎(chǔ)上,實(shí)現(xiàn)遠(yuǎn)程調(diào)用,并采取一些策略,以適應(yīng)和優(yōu)化網(wǎng)絡(luò)環(huán)境。2DCOM的體系結(jié)構(gòu)DCOM在標(biāo)準(zhǔn)的分布式計(jì)算環(huán)境(DCE)RPC引擎之上,擁有DCE提供的通用
2、服務(wù)集,如遠(yuǎn)程過(guò)程調(diào)用(RPC:Remote Procedure Calls),命名,線(xiàn)程管理,以及安全性等。DCOM對(duì)DCE RPC進(jìn)行面向?qū)ο蟮臄U(kuò)展,故又稱(chēng)對(duì)象RPC(ORPC)。DCOM運(yùn)行于網(wǎng)絡(luò)的最高層,相當(dāng)于ISO OSI中的應(yīng)用層,它具有協(xié)議無(wú)關(guān)性,可以使用TCP/IP、UDP、IPX/SPX,以及NetBIOS等底層面向連接或無(wú)連接協(xié)議。從遠(yuǎn)程調(diào)用角度,將該層網(wǎng)絡(luò)協(xié)議細(xì)分成三層,分別為基本編程構(gòu)架、遠(yuǎn)程構(gòu)架和線(xiàn)路協(xié)議構(gòu)架,三層緊密結(jié)合形成一個(gè)完整的體系結(jié)構(gòu)(如圖1所示)。2.1基本編程構(gòu)架雖然DCOM組件與客戶(hù)是跨機(jī)器通信,但對(duì)于客戶(hù)程序而言,服務(wù)組件所處的位置是透明的。因此,編
3、程者不必編寫(xiě)任何處理遠(yuǎn)程調(diào)用的代碼,也就是說(shuō)客戶(hù)程序不必知道服務(wù)組件運(yùn)行于本地或遠(yuǎn)程機(jī)器上,只須在配置的組件信息中加入或在程序代碼中指定遠(yuǎn)程組件所在服務(wù)器的名字;而且可以充分利用基于COM的應(yīng)用、組件、開(kāi)發(fā)工具以及知識(shí)來(lái)創(chuàng)建DCOM組件。當(dāng)客戶(hù)創(chuàng)建組件對(duì)象時(shí),只要知道對(duì)象的CLSID,并調(diào)用CoCreateInstance或CoGetClassObject函數(shù),COM運(yùn)行庫(kù)就會(huì)根據(jù)組件配置信息中提供的遠(yuǎn)程服務(wù)器名字,通過(guò)下面的兩層構(gòu)架,在遠(yuǎn)程服務(wù)組件中創(chuàng)建類(lèi)工廠(chǎng)對(duì)象,進(jìn)而創(chuàng)建所要的組件對(duì)象。2.2遠(yuǎn)程構(gòu)架DCOM將COM的進(jìn)程透明性拓展為位置透明性,該層結(jié)構(gòu)沿襲了COM中的代理/存根和列集/散
4、集機(jī)制。當(dāng)客戶(hù)程序調(diào)用組件對(duì)象的成員函數(shù)時(shí),它實(shí)際上是調(diào)用了本進(jìn)程內(nèi)代理對(duì)象的對(duì)應(yīng)成員函數(shù)。代理對(duì)象負(fù)責(zé)把客戶(hù)的參數(shù)從堆棧中讀出,并寫(xiě)到一塊內(nèi)存緩沖區(qū)中,以便送到下一層進(jìn)一步封裝成為可在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包,這也就是所謂的列集。與列集過(guò)程相對(duì)應(yīng)的過(guò)程是散集,當(dāng)服務(wù)器存根從下層網(wǎng)絡(luò)中接收到列集的數(shù)據(jù)包之后,將包中的參數(shù)解譯出來(lái)并用這些數(shù)據(jù)在本地內(nèi)存中建立一個(gè)新堆棧,使其工作環(huán)境與客戶(hù)端的工作環(huán)境相一致。這樣,一旦堆棧被建立起來(lái),存根代碼就可以利用這些參數(shù)直接在進(jìn)程內(nèi)調(diào)用組件對(duì)象成員函數(shù)。當(dāng)調(diào)用返回時(shí),存根從堆棧中將需要輸出的參數(shù)進(jìn)行列集處理,通過(guò)下層網(wǎng)絡(luò)傳輸?shù)娇蛻?hù)端,而客戶(hù)的代理對(duì)象則把結(jié)果通過(guò)散
5、集之后返回給客戶(hù)程序。2.3線(xiàn)路協(xié)議構(gòu)架這一層提供了從服務(wù)端到客戶(hù)端之間數(shù)據(jù)傳輸?shù)耐罚够贒COM的分布式遠(yuǎn)程調(diào)用得以實(shí)現(xiàn),并且這種基于DCOM的客戶(hù)/服務(wù)器結(jié)構(gòu)具有對(duì)等性。231 服務(wù)控制管理器(SCM)SCM是COM庫(kù)的部分,其程序名為rpcss.exe。在基本編程結(jié)構(gòu)中,編程者表面上通過(guò)調(diào)用對(duì)象創(chuàng)建函數(shù)創(chuàng)建遠(yuǎn)程對(duì)象,但實(shí)際上,創(chuàng)建函數(shù)得到遠(yuǎn)程對(duì)象的位置信息后,就把對(duì)象創(chuàng)建以及建立客戶(hù)與對(duì)象的連接任務(wù)交給了SCM。客戶(hù)SCM與服務(wù)SCM之間通過(guò)RPC連接。例如,當(dāng)客戶(hù)SCM想激活遠(yuǎn)程組件時(shí),它首先檢查本機(jī)注冊(cè)表中的HKEY_CLASSES_ROOTCLSID<CLASS ID G
6、UID>鍵的APPID命名值,如果找到了APPID命名值,就在注冊(cè)表中的HKEY_CLASSES_ROOTAPPID<App ID GUID>部分尋找相同的GUID。在這里可以獲得指定組件在何處并如何激活的命名值信息,當(dāng)請(qǐng)求遠(yuǎn)程計(jì)算機(jī)上的對(duì)象時(shí),客戶(hù)SCM通過(guò)RPC通道訪(fǎng)問(wèn)由RemoteServerName值指定的遠(yuǎn)程服務(wù)器SCM。服務(wù)SCM根據(jù)服務(wù)器注冊(cè)表上的有關(guān)信息,在本機(jī)上定位并加載組件。232 RPC通道RPC通道是客戶(hù)程序與服務(wù)組件相互傳遞數(shù)據(jù)(包括參數(shù)和有關(guān)輔助信息)的真正通道。它屬于DCERPC規(guī)范中的內(nèi)容,其工作過(guò)程可用圖2來(lái)表示。從圖中可以看出客戶(hù)應(yīng)用程序并
7、非真正調(diào)用服務(wù)進(jìn)程,而是調(diào)用本地代理,它能從客戶(hù)的地址空間中取得請(qǐng)求參數(shù),將參數(shù)轉(zhuǎn)換為能在網(wǎng)絡(luò)上傳輸?shù)腘DR(Network Data Representing)格式,最后調(diào)用運(yùn)行庫(kù)中的相應(yīng)功能將請(qǐng)求以及參數(shù)通過(guò)網(wǎng)絡(luò)送往服務(wù)器。而在服務(wù)器端,服務(wù)器運(yùn)行庫(kù)從網(wǎng)絡(luò)中接收從客戶(hù)端發(fā)來(lái)的請(qǐng)求,并調(diào)用服務(wù)存根的相應(yīng)功能;接著服務(wù)存根從網(wǎng)絡(luò)緩沖區(qū)中獲得參數(shù),并將參數(shù)轉(zhuǎn)換為服務(wù)器能理解的格式;最后在服務(wù)進(jìn)程內(nèi)調(diào)用真正過(guò)程,到此遠(yuǎn)程過(guò)程就開(kāi)始運(yùn)行。當(dāng)過(guò)程運(yùn)行結(jié)束后,服務(wù)端以相同的方式將程序運(yùn)行的結(jié)果傳回客戶(hù)端,一個(gè)完整的遠(yuǎn)程過(guò)程調(diào)用就完成。233 對(duì)象管理標(biāo)識(shí)符解析器(OXID Resolver)OXID解析
8、器也象SCM一樣,是COM庫(kù)提供的一項(xiàng)服務(wù),每一個(gè)支持DCOM的機(jī)器上都擁有OXID解析器。它的主要功能有:1) 存儲(chǔ)本地客戶(hù)連接到遠(yuǎn)程對(duì)象所需要的RPC綁定字符串。在這種特殊類(lèi)型的字符串中包含諸如底層網(wǎng)絡(luò)協(xié)議或運(yùn)行組件所在服務(wù)器的網(wǎng)絡(luò)地址等安全子系統(tǒng)信息。2) 負(fù)責(zé)發(fā)送和接收ping消息,客戶(hù)端的OXID解析器向遠(yuǎn)程對(duì)象發(fā)送ping消息,通知遠(yuǎn)程對(duì)象本地還存在客戶(hù)。而在服務(wù)端OXID解析器為本地運(yùn)行的對(duì)象接收ping消息。在每臺(tái)機(jī)器上,OXID解析器維護(hù)一個(gè)本地OXID表和同它們相關(guān)的RPC綁定字符串,當(dāng)客戶(hù)OXID解析器調(diào)用一個(gè)OXID時(shí),OXID解析器首先檢查本地OXID表,如果發(fā)現(xiàn)了這
9、個(gè)OXID,它立刻返回與之相關(guān)的RPC綁定字符串;如果沒(méi)有發(fā)現(xiàn)這個(gè)OXID,它將通過(guò)RPC連接到服務(wù)器的OXID解析器,請(qǐng)求得到與該OXID相關(guān)的RPC綁定字符串,并返回客戶(hù)端??蛻?hù)OXID解析器將該串信息存入本地OXID表中,這樣OXID解析器就能快速地為后來(lái)的其它客戶(hù)解析該OXID。假設(shè)一個(gè)客戶(hù)要從一個(gè)新的OXID得到相應(yīng)的接口指針,其OXID的解析過(guò)程可歸納如下:1) 如果客戶(hù)程序運(yùn)行時(shí)發(fā)現(xiàn)目前的服務(wù)對(duì)象OXID是新的,它將請(qǐng)求本地OXID解析器為它解析該OXID。2) 如果客戶(hù)OXID解析器也查不到該OXID,它將調(diào)用IOXIDResolver:ResolveOxid,請(qǐng)求服務(wù)OXID
10、解析器返回與該OXID相關(guān)的綁定字符串。3) 如果服務(wù)OXID解析器在本地OXID表中查到該OXID,則返回與之相關(guān)的綁定字符串,否則,它將訪(fǎng)問(wèn)服務(wù)進(jìn)程,產(chǎn)生一個(gè)新的OXID表項(xiàng)以及相關(guān)的綁定字符串,并返回給客戶(hù)OXID解析器。4) 客戶(hù)OXID解析器在本地OXID表中儲(chǔ)存了該OXID表項(xiàng)和相關(guān)的綁定字符串,以備后用,并返回該綁定字符串給客戶(hù)進(jìn)程。5) 客戶(hù)進(jìn)程將該綁定字符串與對(duì)象綁定起來(lái),客戶(hù)就可以調(diào)用對(duì)象成員函數(shù)了。234 pinging 機(jī)制客戶(hù)端、服務(wù)端、網(wǎng)絡(luò)的軟硬件出錯(cuò)都可能導(dǎo)致遠(yuǎn)程調(diào)用的失敗,甚至更嚴(yán)重的后果,DCOM為了確定客戶(hù)是否存活,定義了pinging機(jī)制。它的方法是:服務(wù)
11、器周期性地復(fù)審它的遠(yuǎn)程連接表并向客戶(hù)發(fā)一消息,詢(xún)問(wèn)客戶(hù)是否還存活。如果客戶(hù)仍舊正常操作,它就返回一個(gè)確認(rèn)。如果服務(wù)器在設(shè)定時(shí)間周期內(nèi)沒(méi)有收到確認(rèn)消息,則認(rèn)為該客戶(hù)已“死亡”,并將其引用釋放。ping消息的發(fā)送將占用一定的帶寬,導(dǎo)致太多不必要的網(wǎng)絡(luò)通信??梢栽O(shè)想,在一個(gè)包含有成千上萬(wàn)個(gè)客戶(hù)和組件的分布式環(huán)境中,網(wǎng)絡(luò)容量很可能被要傳輸?shù)膒ing消息所占據(jù)。為了減少這種網(wǎng)絡(luò)通信,在Windows NT 4.0以上版本的環(huán)境中,可以利用客戶(hù)端的OXID解析器來(lái)檢測(cè)本地所有客戶(hù)程序是否存活,然后每一臺(tái)機(jī)器而不是每一個(gè)客戶(hù)向服務(wù)器發(fā)送一個(gè)ping消息,這樣客戶(hù)OXID解析器就只發(fā)送一個(gè)ping消息給每一個(gè)
12、為本地客戶(hù)服務(wù)的機(jī)器。為了進(jìn)一步減少這種網(wǎng)絡(luò)通信,DCOM程序員提出了ping集合的概念。DCOM不是給每一個(gè)客戶(hù)程序使用的每一個(gè)對(duì)象都發(fā)一個(gè)單獨(dú)的ping消息,它標(biāo)識(shí)出在被ping的對(duì)象并將它們放入一個(gè)集合中。服務(wù)器第一次發(fā)送ping消息的時(shí)候,它將整個(gè)集合名單連同消息一并發(fā)出。然后,接下來(lái)的ping消息只發(fā)出ping集合的ID,連同一個(gè)加減原始ping集合的列表。這也就是所謂的delta pinging機(jī)制3、結(jié)束語(yǔ)以上從遠(yuǎn)程調(diào)用的角度將DCOM體系結(jié)構(gòu)分成三層,并分別闡明了各層的工作機(jī)理。可見(jiàn),DCOM遠(yuǎn)程調(diào)用機(jī)制為COM提供了一個(gè)分布式的計(jì)算環(huán)境,使得基于COM的應(yīng)用系統(tǒng)具有更高的可伸縮性、可靠性、管理性、靈活性和健壯性。另一方面,DCOM使系統(tǒng)開(kāi)發(fā)者不必關(guān)心網(wǎng)絡(luò)協(xié)議等底層結(jié)構(gòu)的細(xì)節(jié),可以集中注意力在解決用戶(hù)所需的問(wèn)題上,而且還可以充分運(yùn)用原有的面向COM的開(kāi)發(fā)工具,開(kāi)發(fā)環(huán)境以及概念、知識(shí)等,從而可以節(jié)約大
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年物流園區(qū)建設(shè)項(xiàng)目合作開(kāi)發(fā)合同
- 2024年版銷(xiāo)售人員全面工作合同樣本
- 2024年研發(fā)合作合同范本:新產(chǎn)品研發(fā)與推廣
- 義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2022年版)題庫(kù)答案
- 2024年跨境電商銷(xiāo)售合同英文版版B版
- 2024年土特產(chǎn)區(qū)域代理合作協(xié)議范本3篇
- 2024年電子支付系統(tǒng)技術(shù)許可合同
- 2025年度軟件園辦公場(chǎng)地使用權(quán)及廣告發(fā)布合同3篇
- 2025年度二零二五年度邊坡防護(hù)施工與地質(zhì)勘察合同2篇
- 2024年股東權(quán)益共享協(xié)議書(shū)
- 江蘇省南京市2025屆高三第一次調(diào)研考試(一模)英語(yǔ)試題含解析
- 企業(yè)供應(yīng)鏈管理軟件使用合同
- 全國(guó)英語(yǔ)等級(jí)考試三級(jí)閱讀真題
- 數(shù)據(jù)庫(kù)原理-期末考試復(fù)習(xí)題及答案
- 2024至2030年版四川省路燈行業(yè)分析報(bào)告
- 中考化學(xué)酸堿鹽知識(shí)點(diǎn)性質(zhì)歸納
- 新教科版四上科學(xué)3.5《運(yùn)動(dòng)與摩擦力》教案(新課標(biāo))
- DL∕T 2602-2023 電力直流電源系統(tǒng)保護(hù)電器選用與試驗(yàn)導(dǎo)則
- DL∕T 1919-2018 發(fā)電企業(yè)應(yīng)急能力建設(shè)評(píng)估規(guī)范
- 小學(xué)二年級(jí)數(shù)學(xué)口算練習(xí)題1000道
- DBJ43-T 315-2016 現(xiàn)澆混凝土保溫免拆模板復(fù)合體系應(yīng)用技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論