DCOM的分布式體系結構及實現(xiàn)機制分析_第1頁
DCOM的分布式體系結構及實現(xiàn)機制分析_第2頁
DCOM的分布式體系結構及實現(xiàn)機制分析_第3頁
DCOM的分布式體系結構及實現(xiàn)機制分析_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第六講 DCOM的分布式體系結構及實現(xiàn)機制分析本講從遠程調用角度,將DCOM體系結構分成基本編程構架、遠程構架和線路協(xié)議構架三層,并分析了它們的工作機制和實現(xiàn)策略。1引言DCOM(Distributed Component Object Model)是微軟提出的一種分布式組件對象模型,它是COM在分布式計算方面的擴展,使COM跨越機器的邊界,進一步應用于局域網(wǎng)、廣域網(wǎng),以及Internet上。為了適應網(wǎng)絡環(huán)境,DCOM主要的任務是在COM的基礎上,實現(xiàn)遠程調用,并采取一些策略,以適應和優(yōu)化網(wǎng)絡環(huán)境。2DCOM的體系結構DCOM在標準的分布式計算環(huán)境(DCE)RPC引擎之上,擁有DCE提供的通用

2、服務集,如遠程過程調用(RPC:Remote Procedure Calls),命名,線程管理,以及安全性等。DCOM對DCE RPC進行面向對象的擴展,故又稱對象RPC(ORPC)。DCOM運行于網(wǎng)絡的最高層,相當于ISO OSI中的應用層,它具有協(xié)議無關性,可以使用TCP/IP、UDP、IPX/SPX,以及NetBIOS等底層面向連接或無連接協(xié)議。從遠程調用角度,將該層網(wǎng)絡協(xié)議細分成三層,分別為基本編程構架、遠程構架和線路協(xié)議構架,三層緊密結合形成一個完整的體系結構(如圖1所示)。2.1基本編程構架雖然DCOM組件與客戶是跨機器通信,但對于客戶程序而言,服務組件所處的位置是透明的。因此,編

3、程者不必編寫任何處理遠程調用的代碼,也就是說客戶程序不必知道服務組件運行于本地或遠程機器上,只須在配置的組件信息中加入或在程序代碼中指定遠程組件所在服務器的名字;而且可以充分利用基于COM的應用、組件、開發(fā)工具以及知識來創(chuàng)建DCOM組件。當客戶創(chuàng)建組件對象時,只要知道對象的CLSID,并調用CoCreateInstance或CoGetClassObject函數(shù),COM運行庫就會根據(jù)組件配置信息中提供的遠程服務器名字,通過下面的兩層構架,在遠程服務組件中創(chuàng)建類工廠對象,進而創(chuàng)建所要的組件對象。2.2遠程構架DCOM將COM的進程透明性拓展為位置透明性,該層結構沿襲了COM中的代理/存根和列集/散

4、集機制。當客戶程序調用組件對象的成員函數(shù)時,它實際上是調用了本進程內代理對象的對應成員函數(shù)。代理對象負責把客戶的參數(shù)從堆棧中讀出,并寫到一塊內存緩沖區(qū)中,以便送到下一層進一步封裝成為可在網(wǎng)絡上傳輸?shù)臄?shù)據(jù)包,這也就是所謂的列集。與列集過程相對應的過程是散集,當服務器存根從下層網(wǎng)絡中接收到列集的數(shù)據(jù)包之后,將包中的參數(shù)解譯出來并用這些數(shù)據(jù)在本地內存中建立一個新堆棧,使其工作環(huán)境與客戶端的工作環(huán)境相一致。這樣,一旦堆棧被建立起來,存根代碼就可以利用這些參數(shù)直接在進程內調用組件對象成員函數(shù)。當調用返回時,存根從堆棧中將需要輸出的參數(shù)進行列集處理,通過下層網(wǎng)絡傳輸?shù)娇蛻舳?,而客戶的代理對象則把結果通過散

5、集之后返回給客戶程序。2.3線路協(xié)議構架這一層提供了從服務端到客戶端之間數(shù)據(jù)傳輸?shù)耐?,使基于DCOM的分布式遠程調用得以實現(xiàn),并且這種基于DCOM的客戶/服務器結構具有對等性。231 服務控制管理器(SCM)SCM是COM庫的部分,其程序名為rpcss.exe。在基本編程結構中,編程者表面上通過調用對象創(chuàng)建函數(shù)創(chuàng)建遠程對象,但實際上,創(chuàng)建函數(shù)得到遠程對象的位置信息后,就把對象創(chuàng)建以及建立客戶與對象的連接任務交給了SCM??蛻鬝CM與服務SCM之間通過RPC連接。例如,當客戶SCM想激活遠程組件時,它首先檢查本機注冊表中的HKEY_CLASSES_ROOTCLSID<CLASS ID G

6、UID>鍵的APPID命名值,如果找到了APPID命名值,就在注冊表中的HKEY_CLASSES_ROOTAPPID<App ID GUID>部分尋找相同的GUID。在這里可以獲得指定組件在何處并如何激活的命名值信息,當請求遠程計算機上的對象時,客戶SCM通過RPC通道訪問由RemoteServerName值指定的遠程服務器SCM。服務SCM根據(jù)服務器注冊表上的有關信息,在本機上定位并加載組件。232 RPC通道RPC通道是客戶程序與服務組件相互傳遞數(shù)據(jù)(包括參數(shù)和有關輔助信息)的真正通道。它屬于DCERPC規(guī)范中的內容,其工作過程可用圖2來表示。從圖中可以看出客戶應用程序并

7、非真正調用服務進程,而是調用本地代理,它能從客戶的地址空間中取得請求參數(shù),將參數(shù)轉換為能在網(wǎng)絡上傳輸?shù)腘DR(Network Data Representing)格式,最后調用運行庫中的相應功能將請求以及參數(shù)通過網(wǎng)絡送往服務器。而在服務器端,服務器運行庫從網(wǎng)絡中接收從客戶端發(fā)來的請求,并調用服務存根的相應功能;接著服務存根從網(wǎng)絡緩沖區(qū)中獲得參數(shù),并將參數(shù)轉換為服務器能理解的格式;最后在服務進程內調用真正過程,到此遠程過程就開始運行。當過程運行結束后,服務端以相同的方式將程序運行的結果傳回客戶端,一個完整的遠程過程調用就完成。233 對象管理標識符解析器(OXID Resolver)OXID解析

8、器也象SCM一樣,是COM庫提供的一項服務,每一個支持DCOM的機器上都擁有OXID解析器。它的主要功能有:1) 存儲本地客戶連接到遠程對象所需要的RPC綁定字符串。在這種特殊類型的字符串中包含諸如底層網(wǎng)絡協(xié)議或運行組件所在服務器的網(wǎng)絡地址等安全子系統(tǒng)信息。2) 負責發(fā)送和接收ping消息,客戶端的OXID解析器向遠程對象發(fā)送ping消息,通知遠程對象本地還存在客戶。而在服務端OXID解析器為本地運行的對象接收ping消息。在每臺機器上,OXID解析器維護一個本地OXID表和同它們相關的RPC綁定字符串,當客戶OXID解析器調用一個OXID時,OXID解析器首先檢查本地OXID表,如果發(fā)現(xiàn)了這

9、個OXID,它立刻返回與之相關的RPC綁定字符串;如果沒有發(fā)現(xiàn)這個OXID,它將通過RPC連接到服務器的OXID解析器,請求得到與該OXID相關的RPC綁定字符串,并返回客戶端??蛻鬙XID解析器將該串信息存入本地OXID表中,這樣OXID解析器就能快速地為后來的其它客戶解析該OXID。假設一個客戶要從一個新的OXID得到相應的接口指針,其OXID的解析過程可歸納如下:1) 如果客戶程序運行時發(fā)現(xiàn)目前的服務對象OXID是新的,它將請求本地OXID解析器為它解析該OXID。2) 如果客戶OXID解析器也查不到該OXID,它將調用IOXIDResolver:ResolveOxid,請求服務OXID

10、解析器返回與該OXID相關的綁定字符串。3) 如果服務OXID解析器在本地OXID表中查到該OXID,則返回與之相關的綁定字符串,否則,它將訪問服務進程,產(chǎn)生一個新的OXID表項以及相關的綁定字符串,并返回給客戶OXID解析器。4) 客戶OXID解析器在本地OXID表中儲存了該OXID表項和相關的綁定字符串,以備后用,并返回該綁定字符串給客戶進程。5) 客戶進程將該綁定字符串與對象綁定起來,客戶就可以調用對象成員函數(shù)了。234 pinging 機制客戶端、服務端、網(wǎng)絡的軟硬件出錯都可能導致遠程調用的失敗,甚至更嚴重的后果,DCOM為了確定客戶是否存活,定義了pinging機制。它的方法是:服務

11、器周期性地復審它的遠程連接表并向客戶發(fā)一消息,詢問客戶是否還存活。如果客戶仍舊正常操作,它就返回一個確認。如果服務器在設定時間周期內沒有收到確認消息,則認為該客戶已“死亡”,并將其引用釋放。ping消息的發(fā)送將占用一定的帶寬,導致太多不必要的網(wǎng)絡通信??梢栽O想,在一個包含有成千上萬個客戶和組件的分布式環(huán)境中,網(wǎng)絡容量很可能被要傳輸?shù)膒ing消息所占據(jù)。為了減少這種網(wǎng)絡通信,在Windows NT 4.0以上版本的環(huán)境中,可以利用客戶端的OXID解析器來檢測本地所有客戶程序是否存活,然后每一臺機器而不是每一個客戶向服務器發(fā)送一個ping消息,這樣客戶OXID解析器就只發(fā)送一個ping消息給每一個

12、為本地客戶服務的機器。為了進一步減少這種網(wǎng)絡通信,DCOM程序員提出了ping集合的概念。DCOM不是給每一個客戶程序使用的每一個對象都發(fā)一個單獨的ping消息,它標識出在被ping的對象并將它們放入一個集合中。服務器第一次發(fā)送ping消息的時候,它將整個集合名單連同消息一并發(fā)出。然后,接下來的ping消息只發(fā)出ping集合的ID,連同一個加減原始ping集合的列表。這也就是所謂的delta pinging機制3、結束語以上從遠程調用的角度將DCOM體系結構分成三層,并分別闡明了各層的工作機理??梢姡珼COM遠程調用機制為COM提供了一個分布式的計算環(huán)境,使得基于COM的應用系統(tǒng)具有更高的可伸縮性、可靠性、管理性、靈活性和健壯性。另一方面,DCOM使系統(tǒng)開發(fā)者不必關心網(wǎng)絡協(xié)議等底層結構的細節(jié),可以集中注意力在解決用戶所需的問題上,而且還可以充分運用原有的面向COM的開發(fā)工具,開發(fā)環(huán)境以及概念、知識等,從而可以節(jié)約大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論