青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數(shù)據(jù)加載中……

COM原理及應(yīng)用----分布式COM(DCOM)

1、DCOM

       COM的進程透明特性表現(xiàn)在組件對象和客戶程序即可以擁有各自的進程空間,也可以共享同一個進程空間,COM負責把客戶的調(diào)用正確傳到組件對象中,并保證參數(shù)傳遞的正確性。組件對象和客戶代碼不必考慮調(diào)用傳遞的細節(jié),只要按照一般的函數(shù)調(diào)用的方式實現(xiàn)即可。如果進一步拓展進程透明特性,考慮組件對象與客戶程序運行在不同計算機上的情形,把進程透明性拓展為位置透明性,形成分布式組件對象模型,簡稱為DCOM。

       DCOMCOM的擴展,它可以支持不同計算機上組件對象與客戶程序之間或者組件對象之間的相互通信,這些計算機可以在局域網(wǎng)內(nèi)、廣域網(wǎng)上、 Internet上。對于客戶程序而言,組件程序所處的位置是透明的,我們不必編寫任何處理遠程調(diào)用的代碼,因此,DCOM也是COM的無縫擴展。 DCOM處理了底層網(wǎng)絡(luò)協(xié)議的所有細節(jié)。

2、從COM轉(zhuǎn)向DCOM

     

       進程內(nèi)組件與客戶程序之間的通信過程比較簡單。本地進程外組件與客戶程序之間的通信并不是直接進行的,而是用到了操作系統(tǒng)支持的一些跨進程通信方法。

     

       DCOM只是簡單地把本地跨進程通信用一個網(wǎng)絡(luò)協(xié)議傳輸過程來代替,只是中間數(shù)據(jù)傳遞的路線更長一些。當然,網(wǎng)絡(luò)通信比單機系統(tǒng)環(huán)境下的跨進程通信要脆弱得多,所以為了保證協(xié)作過程的可靠性以及程序?qū)Ξ惓J录膽?yīng)變能力,客戶程序和組件程序需要考慮更多的細節(jié)。

3、DCOM對象的定位

       客戶程序調(diào)用COM庫的基礎(chǔ)創(chuàng)建函數(shù)(比如CoGetClassObject)創(chuàng)建遠程組件對象需要知道遠程機器名和對象CLSID。

       有兩種方法可以得到遠程對象的機器名信息:一是在創(chuàng)建函數(shù)的參數(shù)中指定COSERVERINFO結(jié)構(gòu),二是使用DCOM配置工具指定遠程機器名。

       COM庫的創(chuàng)建函數(shù)得到了遠程對象的位置信息后,再把對象創(chuàng)建的任務(wù)交給SCM,由SCM通過RPC與遠程機器進行通信。SCM(程序名為 Rpcss.exe)也是COM庫的一部分,但它是一個單獨的進程。SCM負責創(chuàng)建新的COM對象,也負責建立組件對象與客戶程序之間的連接。如果要創(chuàng)建遠程對象,它會通過RPC調(diào)用遠程機器上的SCM,由遠程機器上的SCM啟動組件進程,并創(chuàng)建組件對象,然后返回到客戶機器。

 

       當然,遠程組件對象被創(chuàng)建之后,它在返回到客戶機器的途中,還要經(jīng)過列集和散集的處理,包括創(chuàng)建代理對象和裝載存根代碼等,這些處理與本地進程外組件對象的處理完全一致。一旦組件對象被創(chuàng)建完成之后,客戶與組件之間的通信不再經(jīng)過SCM,而是直接通過代理對象和存根對象以及COM庫提供的底層傳輸機制來完成。

4、列集與散集

       列集與散集是實現(xiàn)COM組件對象跨進程特性的關(guān)鍵技術(shù),它包括標準列集法和自定義列集法。同樣的技術(shù)也適用于DCOM組件對象與客戶程序之間的通信,兩者的區(qū)別在于列集數(shù)據(jù)包的傳遞方式有所不同,對于本地組件對象使用LPC傳遞,而對于DCOM組件對象使用RPC傳遞。

       DCOM提供了一套復雜的列集和散集機制,它建立在RPC的基礎(chǔ)上。由于RPC被定義為DCE(分布式計算系統(tǒng))標準的一部分,而DCE RPC定義了所有常用數(shù)據(jù)類型的數(shù)據(jù)表達方式,即網(wǎng)絡(luò)數(shù)據(jù)表示法(NDR,network data representation)。為了使存根代碼和代理對象能夠正確地對參數(shù)和返回結(jié)果進行列集和散集,它們應(yīng)該使用一致的數(shù)據(jù)表示法NDR,以便在不同的操作系統(tǒng)環(huán)境下也能夠遠程調(diào)用。

5、對象RPC

       DCOM協(xié)議也被稱為對象RPCORPC,object remote procedure call),它建立在DCE RPC協(xié)議的基礎(chǔ)上,可用于各種基于組件的分布式系統(tǒng)。ORPC建立了一套面向?qū)ο蟮倪h程調(diào)用規(guī)范,指定了如何在網(wǎng)絡(luò)上進行調(diào)用、對對象的引用如何表示和如何維護。ORPC協(xié)議已經(jīng)被作為Internet草案遞交到IETFInternet Engineering Task Force , Internet 工程部)。

       InternetIntranet網(wǎng)絡(luò)環(huán)境下,ORPC仍使用標準的RPC數(shù)據(jù)包,附加上專用于DCOM的一些信息――接口指針標識符(IPID,interface point identifier)、版本信息和擴展信息――作為調(diào)用和返回的附加參數(shù)進行傳送,其中IPID表示調(diào)用被處理的遠程機器上特定對象的特定接口。 DCOM客戶程序必須周期性地“pinging”遠程機器上的對象,以便保證客戶與對象一直處于連接狀態(tài)。

6、DCOM特性

       DCOM可以作為分布式應(yīng)用系統(tǒng)的基本架構(gòu),客戶程序與DCOM組件對象之間形成了客戶/服務(wù)器關(guān)系,進一步可構(gòu)成多層軟件模型。DCOM組件具有COM 組件的一些基本特性,包括重用性、語言無關(guān)性等。而位置透明性 是DCOM的一個基本特性。DCOM的其他特性如下:

       1)可伸縮性。一方面,DCOM利用操作系統(tǒng)本身的可伸縮性;另一方面,DCOM提供了靈活的配置方案,允許不同的組件對象允許在不同的服務(wù)器上,DCOM的位置透明性保證了這種變化可以不必修改組件源程序。

       2)可配置性。安裝和管理是分布式軟件系統(tǒng)的兩個重要環(huán)節(jié)。DCOM提供了一個圖形界面的配置工具程序(DCOMCNFG.EXE),可使客戶程序和組件程序在不改變代碼的情況下適應(yīng)不同的網(wǎng)絡(luò)環(huán)境。

       3)安全性。DCOM使用了Windows NT提供的可擴展安全性框架,在非NT平臺上實現(xiàn)的DCOM也包括了一個與NT兼容的安全提供器。DCOM實現(xiàn)的安全性分為訪問安全性和激活安全性,訪問安全性指定那些用戶可以調(diào)用組件對象,激發(fā)安全性指定哪些用戶可以在一個新進程中創(chuàng)建新的對象。

       4)協(xié)議無關(guān)性。

       5)平臺獨立性

7、對象激活

       激活(activation)一個組件對象包括兩種情形:一是創(chuàng)建新的組件對象,二是建立已有組件對象與客戶之間的連接。

       COM擴展到DCOM之后,遠程對象的創(chuàng)建過程有所不同。為了標識一個遠程對象,僅僅提供一個128位的GUID還不夠,還必須提供遠程對象所在的機器名,也稱為遠程服務(wù)器名“RemoteServerName”。

1)創(chuàng)建DCOM組件方法一

       通過DCOM配置工具指定遠程服務(wù)器名,這種方式使得DCOM組件具有位置透明性。在Windows系統(tǒng)平臺上,遠程服務(wù)器名字RemoteServerName值被保存在系統(tǒng)注冊表HKEY_CLASSES_ROOT\APPID鍵下。

       CLSIDAppID鍵的結(jié)構(gòu)可以看出,每個AppID可用于多個組件對象,通常它代表了由多個CLSID共享的進程,該進程中的所有對象共享同樣的配置信息,包括遠程服務(wù)器名以及安全信息。在DCOM中引入AppID概念可以避免太多的注冊表關(guān)鍵字。

2)創(chuàng)建DCOM組件方法二

       用第一種方法并不是總能滿足應(yīng)用的要求,有些應(yīng)用要求在程序運行過程中控制要連接的服務(wù)器,比如多人游戲程序、網(wǎng)絡(luò)遠程管理工具等。對于這樣的應(yīng)用,DCOM允許在創(chuàng)建函數(shù)中指定遠程服務(wù)器名字??梢灾付ㄟh程服務(wù)器名字的創(chuàng)建函數(shù):CoCreateInstanceEx、 CoGetClassObjectCoGetInstanceFromFile、CoGetInstanceFromeIStorage。

       在程序中指定服務(wù)器名字的另外一個功能是實現(xiàn)分布式應(yīng)用系統(tǒng)的動態(tài)負載平衡。目前DCOM還很難以實現(xiàn)自動負載平衡特性,但我們可以建立一個分派服務(wù)組件對象,所有的客戶都創(chuàng)建指定機器上的分派服務(wù)組件對象,由它創(chuàng)建另一個真正實現(xiàn)應(yīng)用功能的遠程對象,在把此遠程對象返回給客戶程序,以后客戶程序不再使用分派服務(wù)組件對象,而直接調(diào)用遠程對象。而分派服務(wù)組件對象可以根據(jù)當前的負載狀態(tài),從一組服務(wù)器中選擇負載最輕的服務(wù)器作為目標,創(chuàng)建遠程對象。

 

8、遠程創(chuàng)建進程內(nèi)組件:代理進程(surrogate

       為了遠程運行進程內(nèi)組件即DLL組件,要求在遠程機器上有代理進程(surrogate process)。除了可以遠程啟動進程內(nèi)組件之外,代理進程還提供了下面的特性:

l         進程內(nèi)組件程序中的嚴重錯誤只影響代理進程,不會使客戶進程崩潰;

l         一個代理進程可以同時為多個客戶提供服務(wù);

l         客戶可以保護自己避免靠不住的組件程序代碼,只訪問組件程序提供的服務(wù);

l         在代理進程中運行進程內(nèi)服務(wù)可使DLL享有代理進程的安全性。

Windows引進了缺省的代理進程,以及編寫自定義代理進程的協(xié)議規(guī)范。缺省實現(xiàn)的代理進程是一個混合線程模型、偽COM服務(wù)程序。當多個DLL組件被裝入到單個代理進程時,該進程按照注冊表中指定的線程模型對每個DLL組件對象進行實例化。如果一個DLL組件對象支持兩種線程模型,則COM選擇自由線程模型。COM即可以控制DLL組件程序的卸載,也可以終止代理進程。

如果一個進程內(nèi)組件滿足下列條件,則它將被裝入代理進程:

l         系統(tǒng)注冊表中,在組件對象的CLSID關(guān)鍵字下必須要指定AppID值,以及對應(yīng)的AppID關(guān)鍵字;

l         客戶程序在創(chuàng)建對象實例時,必須設(shè)置CLSTX_LOCAL_SERVER標志;

l         組件對象的CLSID關(guān)鍵字下不指定LocalServer32LocalServer、LocalService值;

l         組件對象的CLSID關(guān)鍵字包含InProvServer32子鍵;

l         InProcServer32子鍵中指定的DLL文件必須存在;

l         組件對象對應(yīng)的AppID鍵下指定DllSurrogate值。

如果組件對象的CLSID鍵下的LocalServerLocalServer32LocalService值指示了EXE的存在,則EXE程序?qū)⒈粌?yōu)先執(zhí)行,COM不再啟動代理程序。

9、利用名字對象(moniker)連接到遠程對象實例

       通常COM對象實例是不可相互替代到,或者說不可相互交換的。它通過自己特有的狀態(tài)區(qū)別于同一類的其他對象實例。

       在第8章中介紹的COM命名和綁定機制對于遠程對象同樣適用。

10、連接管理——遠程對象生存期的控制

       COM控制對象的生存期最基本的機制是引用計數(shù),利用IUnknownAddRefRelease成員函數(shù)控制對象的生存期。DCOM優(yōu)化了遠程對象的AddRefRelease的調(diào)用。優(yōu)化過程使用了OXIDobject exporter identifier ,對象管理標識符)對象。OXID是一個64位值,通過OXID可以把RPC串綁定調(diào)用到它們的目標IPID。但是,在執(zhí)行調(diào)用之前,調(diào)用進程必須把 OXID轉(zhuǎn)譯成為底層RPC可以解釋的一組綁定。

       在每臺支持DCOM的機器上,都有一個被稱為OXID解析器(OXID Resolver)的服務(wù),它負責向客戶提供用于連接到OXIDRPC串綁定信息,也負責接收遠程發(fā)來的“pinging”信息。OXID解析器之間通過RPC進行通信,它實現(xiàn)了RPC接口IOXIDResolver(不是COM接口)。

     

11、連接管理——pinging機制

       如果不考慮客戶進程可能會非正常終止,則利用遠程引用計數(shù)控制對象生存期已經(jīng)足夠了。為了檢測客戶程序是否非正常終止,DCOM提供了一種簡單的方法 “pinging”。在現(xiàn)在實現(xiàn)的DCOM版本中,pingPeriod=2(分)且numPingsToTimeOut=3,這些值不能被改變。

12、連接管理——連接點管理

       許多實際的分布式應(yīng)用都需要在兩個對象之間進行雙向通信。由于DCOM是對COM的無縫擴展,在第6章中介紹的COM提供的連接點機制同樣適用于遠程對象的情形。

     

13、連接管理——連接傳遞

用分派服務(wù)組件對象來實現(xiàn)分布式應(yīng)用的負載平衡特性實際上用到了連接傳遞特性。

       連接傳遞不等于遠程對象創(chuàng)建的傳遞,DCOM不支持位置透明方式下對象創(chuàng)建的傳遞過程,但可以利用連接傳遞特性,通過程序控制服務(wù)器名字的方式實現(xiàn)遠程對象創(chuàng)建的傳遞。

14、并發(fā)管理——線程模型

       COM本身并沒有線程模型,可以認為COM借用了Windows操作系統(tǒng)提供的線程模型,Win32程序設(shè)計模型把線程分成UI線程和輔助線程,相對應(yīng)地,COM把線程分成套間線程和自由線程。套間線程使用CoInitialize API函數(shù)執(zhí)行COM庫的初始化,COM在套間線程內(nèi)部創(chuàng)建了一個隱藏的窗口,此窗口的窗口過程函數(shù)負責把客戶對套間中的組件對象的調(diào)用發(fā)送到正確的成員函數(shù)中。

15、并發(fā)管理——消息過濾器

       COMDCOM的線程模型使我們了解到了客戶程序與組件對象調(diào)用過程中的線程切換,但調(diào)用可能會阻塞程序,甚至使得客戶程序無法正常進行。為此,COM提供了消息過濾機制,它既可用于客戶程序,也可用于組件程序,允許它們對于入調(diào)用和出調(diào)用有所選擇。

       COM把調(diào)用分為三類:第一種是同步調(diào)用,這是最常見的調(diào)用類型,客戶調(diào)用組件對象,一直等到對象執(zhí)行完所有功能后再返回;第二種是異步調(diào)用,客戶調(diào)用組件對象,但不等到對象執(zhí)行完功能就馬上返回,以后對象通過出接口通知客戶程序,這也就是我們在第6章介紹的可連接對象機制;第三種為輸入同步調(diào)用,被調(diào)用對象必須在放棄控制之前返回,以便保證用戶界面不受影響,也就是說,在調(diào)用執(zhí)行過程中,對象不能調(diào)用任何可能會進入消息循環(huán)的函數(shù)。

16、DCOM安全模型

       DCOM安全性建立在底層安全提供器基礎(chǔ)上,有些操作系統(tǒng)可以支持多個安全提供器,DCOMRPC也可以同時支持多個安全提供器。所有的安全提供器有一個共同點,它們提供了一種表示安全角色(一般為用戶賬號)的方法、一種鑒定安全角色(一般通過口令或私有鑰匙)的方法,以及管理安全角色和其鑒定數(shù)據(jù)的一套機制。

17、DCOM安全模型——安全性策略

       1)訪問安全性和激發(fā)安全性。

       2)對象的安全身份。

       3)保護數(shù)據(jù)。

       4)鑒定級別。

       5)模仿級別。

18DCOM安全模型——安全性配置

       DCOM提供了多種保護應(yīng)用程序的方法,一方面,DCOM可以強制使用安全性而不用任何對象或?qū)ο蟮目蛻舫绦蜃鋈魏喂ぷ鳎瑢ο蟮陌踩栽O(shè)置可以在外部配置并且DCOM會自動強制使用。另一方面,DCOM把它完整的安全性結(jié)構(gòu)暴露給開發(fā)者,因而客戶和對象都可以通過程序控制其安全策略。

 

posted on 2009-06-29 10:56 肥仔 閱讀(1368) 評論(0)  編輯 收藏 引用 所屬分類: COM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品成人午夜| 日韩亚洲一区在线播放| 亚洲精品资源| 日韩午夜在线| 亚洲永久精品大片| 久久aⅴ乱码一区二区三区| 久久综合给合久久狠狠色| 免费亚洲电影| 亚洲人成精品久久久久| 亚洲九九爱视频| 欧美亚洲系列| 欧美精品免费看| 国产美女精品| 亚洲美女免费视频| 久久黄金**| 亚洲国产欧美日韩| 亚洲综合999| 老巨人导航500精品| 欧美视频中文在线看| 黄色综合网站| 先锋影音久久久| 欧美国产一区在线| 亚洲综合日韩| 欧美日本中文字幕| 精品成人一区二区| 亚洲一区在线观看视频 | 老司机精品导航| 亚洲精品久久7777| 久久国产精品久久国产精品 | 永久555www成人免费| 制服丝袜亚洲播放| 欧美大胆a视频| 欧美一区三区二区在线观看| 欧美日本韩国一区二区三区| 亚洲国产成人久久综合一区| 久久精品国产亚洲一区二区三区| 亚洲美女在线视频| 欧美国产精品一区| 一区二区精品在线观看| 欧美大片在线影院| 香蕉免费一区二区三区在线观看 | 欧美成人精品高清在线播放| 国产日韩欧美视频| 亚洲——在线| 日韩亚洲欧美精品| 欧美大片在线看| 在线看欧美日韩| 久久久夜精品| 久久精品国产精品亚洲精品| 国产日韩在线播放| 久久国内精品自在自线400部| 亚洲无限av看| 国产精品久久一级| 亚洲影院一区| 亚洲男人第一av网站| 国产精品久久福利| 性色av一区二区三区红粉影视| 一区二区三区久久网| 欧美欧美全黄| 中文国产一区| 亚洲网站视频| 国产一区二区精品久久| 久久精品国产第一区二区三区最新章节 | 午夜精品一区二区三区在线播放 | 亚洲精品色图| 亚洲激情一区二区三区| 欧美激情第4页| 亚洲视屏一区| 亚洲视频第一页| 国产午夜精品福利| 美女主播精品视频一二三四| 免费不卡欧美自拍视频| 最近中文字幕mv在线一区二区三区四区 | 欧美ed2k| 亚洲午夜性刺激影院| 亚洲一区一卡| …久久精品99久久香蕉国产 | 激情视频亚洲| 亚洲国产精品999| 欧美日韩一区二区在线观看| 欧美一区二区| 免费不卡中文字幕视频| 久久免费的精品国产v∧| 亚洲精品国产精品国产自| 欧美色视频在线| 久久精品毛片| 欧美国产成人精品| 香蕉久久夜色精品| 久久综合色8888| 亚洲女同同性videoxma| 久久久国产一区二区| 99日韩精品| 欧美在线啊v一区| 99在线精品观看| 久久精品国产69国产精品亚洲| 99精品视频免费在线观看| 性高湖久久久久久久久| 99re国产精品| 久久综合一区| 欧美伊人精品成人久久综合97| 免费国产一区二区| 久久成人精品| 国产精品白丝黑袜喷水久久久| 蜜桃av一区二区三区| 欧美午夜女人视频在线| 亚洲春色另类小说| 国产在线拍偷自揄拍精品| 日韩视频在线观看国产| 亚洲高清视频在线观看| 午夜久久一区| 亚洲在线观看免费视频| 欧美成人三级在线| 久久亚洲国产精品一区二区| 欧美日韩色婷婷| 欧美激情一区二区在线| 韩日欧美一区| 欧美亚洲一区二区在线| 亚洲性夜色噜噜噜7777| 欧美成人第一页| 女人色偷偷aa久久天堂| 国产一区二区精品在线观看| 亚洲自拍16p| 午夜精品福利视频| 国产精品国产三级国产专播品爱网| 欧美高清视频在线| 狠狠色狠狠色综合日日tαg| 先锋影音网一区二区| 欧美一级视频一区二区| 国产精品视频最多的网站| 一本一道久久综合狠狠老精东影业| 99精品国产在热久久婷婷| 欧美精品在线免费| 日韩视频亚洲视频| 一区二区三区精品久久久| 欧美激情亚洲| 一本一本久久a久久精品牛牛影视| 一区二区三区精品在线| 欧美日韩三级视频| 中文精品视频| 小黄鸭视频精品导航| 国产精品久久中文| 亚洲午夜在线观看| 欧美在线视频免费| 韩日精品中文字幕| 裸体女人亚洲精品一区| 欧美激情精品久久久| 99热在这里有精品免费| 欧美日韩一区二区欧美激情| 亚洲视频在线视频| 鲁大师成人一区二区三区| 亚洲精品一线二线三线无人区| 久久高清福利视频| 两个人的视频www国产精品| 亚洲成人自拍视频| 欧美精品激情在线观看| 一区二区激情小说| 久久都是精品| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲一区网站| 久久久精品国产一区二区三区 | 亚洲欧美激情视频| 国产午夜精品久久久久久久| 久久久精品国产免大香伊| 欧美激情一区二区久久久| 亚洲午夜国产成人av电影男同| 国产午夜精品全部视频播放| 免费亚洲视频| 亚洲欧美国产精品桃花| 欧美电影免费观看| 亚洲欧美一区二区精品久久久| 国产一区二区中文字幕免费看| 欧美www在线| 亚洲无限av看| 欧美国产激情| 欧美一区日本一区韩国一区| 91久久在线观看| 国产欧美日韩在线视频| 欧美成人国产| 欧美在线关看| 一区二区三区高清不卡| 欧美成人蜜桃| 久久精品免费观看| 亚洲视频成人| 亚洲欧洲三级电影| 国产亚洲制服色| 欧美视频一区二区三区四区 | 国产麻豆精品视频| 欧美精品一区二区三区蜜桃| 久久久7777| 亚洲欧美日韩综合aⅴ视频| 亚洲国产欧美一区| 免费h精品视频在线播放| 欧美一区二区三区免费观看视频| 亚洲欧洲日韩综合二区| 黄色在线成人| 国产字幕视频一区二区| 国产欧美日韩综合一区在线播放| 欧美午夜免费电影| 欧美日韩在线播放| 欧美三级特黄|