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

woaidongmao

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

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

1DCOM

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

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

2、從COM轉向DCOM

     

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

     

       DCOM只是簡單地把本地跨進程通信用一個網絡協議傳輸過程來代替,只是中間數據傳遞的路線更長一些。當然,網絡通信比單機系統環境下的跨進程通信要脆弱得多,所以為了保證協作過程的可靠性以及程序對異常事件的應變能力,客戶程序和組件程序需要考慮更多的細節。

3DCOM對象的定位

       客戶程序調用COM庫的基礎創建函數(比如CoGetClassObject)創建遠程組件對象需要知道遠程機器名和對象CLSID

       有兩種方法可以得到遠程對象的機器名信息:一是在創建函數的參數中指定COSERVERINFO結構,二是使用DCOM配置工具指定遠程機器名。

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

 

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

4、列集與散集

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

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

5、對象RPC

       DCOM協議也被稱為對象RPCORPCobject remote procedure call),它建立在DCE RPC協議的基礎上,可用于各種基于組件的分布式系統。ORPC建立了一套面向對象的遠程調用規范,指定了如何在網絡上進行調用、對對象的引用如何表示和如何維護。ORPC協議已經被作為Internet草案遞交到IETFInternet Engineering Task Force Internet 工程部)。

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

6DCOM特性

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

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

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

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

       4)協議無關性。

       5)平臺獨立性

7、對象激活

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

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

1)創建DCOM組件方法一

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

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

2)創建DCOM組件方法二

       用第一種方法并不是總能滿足應用的要求,有些應用要求在程序運行過程中控制要連接的服務器,比如多人游戲程序、網絡遠程管理工具等。對于這樣的應用,DCOM允許在創建函數中指定遠程服務器名字。可以指定遠程服務器名字的創建函數:CoCreateInstanceEx CoGetClassObjectCoGetInstanceFromFileCoGetInstanceFromeIStorage

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

 

8、遠程創建進程內組件:代理進程(surrogate

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

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

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

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

l         在代理進程中運行進程內服務可使DLL享有代理進程的安全性。

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

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

l         系統注冊表中,在組件對象的CLSID關鍵字下必須要指定AppID值,以及對應的AppID關鍵字;

l         客戶程序在創建對象實例時,必須設置CLSTX_LOCAL_SERVER標志;

l         組件對象的CLSID關鍵字下不指定LocalServer32LocalServerLocalService值;

l         組件對象的CLSID關鍵字包含InProvServer32子鍵;

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

l         組件對象對應的AppID鍵下指定DllSurrogate值。

如果組件對象的CLSID鍵下的LocalServerLocalServer32LocalService值指示了EXE的存在,則EXE程序將被優先執行,COM不再啟動代理程序。

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

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

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

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

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

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

     

11、連接管理——pinging機制

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

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

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

     

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

用分派服務組件對象來實現分布式應用的負載平衡特性實際上用到了連接傳遞特性。

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

14、并發管理——線程模型

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

15、并發管理——消息過濾器

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

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

16DCOM安全模型

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

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

       1)訪問安全性和激發安全性。

       2)對象的安全身份。

       3)保護數據。

       4)鑒定級別。

       5)模仿級別。

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

       DCOM提供了多種保護應用程序的方法,一方面,DCOM可以強制使用安全性而不用任何對象或對象的客戶程序做任何工作,對象的安全性設置可以在外部配置并且DCOM會自動強制使用。另一方面,DCOM把它完整的安全性結構暴露給開發者,因而客戶和對象都可以通過程序控制其安全策略。

 

posted on 2009-06-29 10:56 肥仔 閱讀(1369) 評論(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>
            久久精品国产免费| 午夜老司机精品| 欧美午夜片在线免费观看| 欧美电影打屁股sp| 欧美成人伊人久久综合网| 麻豆精品视频在线| 欧美精品不卡| 国产精品久久久久久久久久ktv| 欧美日本免费| 国产精品自拍视频| 在线观看欧美日本| 99成人精品| 欧美在线精品一区| 欧美粗暴jizz性欧美20| 亚洲精品1234| 亚洲精品国产精品国自产观看| 亚洲免费观看在线视频| 午夜精品久久久久久99热软件| 欧美自拍偷拍| 欧美日本亚洲| 国内精品久久久久久久果冻传媒 | 国产婷婷色一区二区三区| 国产一区高清视频| 亚洲最新中文字幕| 欧美一区二区三区四区夜夜大片| 久久久久国产精品麻豆ai换脸| 国产精品女主播| 激情欧美一区二区三区在线观看 | 影音先锋中文字幕一区二区| 一区二区久久久久久| 欧美一区二区三区在线播放| 欧美大片91| 香蕉av福利精品导航| 欧美劲爆第一页| 精品91免费| 欧美一区二区免费观在线| 亚洲国产欧美一区| 欧美一区日韩一区| 国产精品成av人在线视午夜片| 韩日欧美一区| 久久精品二区| 亚洲欧美国产一区二区三区| 欧美人成在线| 91久久精品一区| 久久久无码精品亚洲日韩按摩| 亚洲精品一区二区三区在线观看| 久久精品国产2020观看福利| 国产精品久久久久9999高清 | 1204国产成人精品视频| 一本色道久久综合亚洲91 | 亚洲一区二区三区精品在线观看| 久热精品视频在线| 黄色日韩网站视频| 久久久亚洲高清| 久久精彩视频| 韩国美女久久| 美女黄网久久| 浪潮色综合久久天堂| 黄色av日韩| 欧美成人激情视频| 暖暖成人免费视频| 亚洲国产日韩综合一区| 欧美成人a∨高清免费观看| 久久天堂成人| 亚洲精品在线免费观看视频| 美女国内精品自产拍在线播放| 久久久国产精品亚洲一区| 久久免费视频一区| 久久成人综合网| 亚洲国产精品女人久久久| 欧美电影免费观看| 欧美ab在线视频| 亚洲精品色婷婷福利天堂| 亚洲二区免费| 国产精品超碰97尤物18| 欧美一区二区视频在线观看2020| 欧美一区二区三区日韩| 伊人成人在线视频| 亚洲全部视频| 国产精品你懂的在线欣赏| 久久精品国产2020观看福利| 久久精品99国产精品| 蜜桃av一区二区三区| 亚洲人成网站在线观看播放| 亚洲精品久久久久久久久久久久久| 欧美激情一区二区三区成人| 亚洲视频综合| 久久激情五月丁香伊人| 亚洲精品一区二区三区四区高清| 亚洲日本视频| 国产一区二区三区在线观看免费视频| 久久亚洲一区二区| 欧美日韩国语| 久久超碰97中文字幕| 欧美成人国产一区二区| 亚洲欧美日韩国产| 另类图片国产| 欧美一级理论性理论a| 久久久精品一区| 亚洲欧美国产77777| 噜噜噜91成人网| 欧美伊人久久| 欧美另类人妖| 久久视频在线免费观看| 欧美激情亚洲综合一区| 久久精品欧美日韩| 欧美日韩日日骚| 女人色偷偷aa久久天堂| 欧美日韩一区视频| 亚洲夫妻自拍| 国内精品一区二区三区| 99在线精品视频在线观看| 国产中文一区二区| 中文精品视频| 中文精品视频一区二区在线观看| 久久久噜噜噜久噜久久 | 国产目拍亚洲精品99久久精品| 老牛影视一区二区三区| 国产精品任我爽爆在线播放| 欧美国产精品久久| 国产综合激情| 欧美亚洲视频| 久久精品国产99| 国产乱码精品一区二区三区五月婷 | 国产精品高潮呻吟视频| 亚洲狠狠丁香婷婷综合久久久| 国产喷白浆一区二区三区| 9久re热视频在线精品| 亚洲精品日韩一| 欧美激情一级片一区二区| 欧美肥婆在线| 在线日韩中文| 久久夜色精品一区| 美女性感视频久久久| 极品少妇一区二区三区| 欧美亚洲视频一区二区| 亚洲在线观看| 国产精品日韩久久久| 中文精品一区二区三区| 国外成人在线视频网站| 午夜国产欧美理论在线播放| 中文国产成人精品| 国产精品萝li| 欧美在线关看| 免费日韩av| 亚洲人成免费| 欧美日本三区| 亚洲一区二区三区三| 欧美在线999| 韩国在线一区| 欧美 日韩 国产 一区| 亚洲精品一区二区在线| 亚洲无线视频| 国产乱码精品一区二区三区五月婷| 亚洲欧美日韩精品一区二区| 先锋亚洲精品| 一区二区自拍| 欧美日韩精品一区二区三区| 亚洲一区区二区| 欧美成人午夜视频| 一二美女精品欧洲| 国产一区二区高清视频| 欧美1区视频| 亚洲一区二区三区精品在线观看| 亚洲欧美日韩中文在线制服| 国产一区二区三区高清播放| 久久精品中文| 亚洲毛片一区二区| 久久久久国产精品午夜一区| 亚洲欧洲综合| 国产精品一区免费视频| 久久久视频精品| 一区二区三区**美女毛片| 久久久国产91| 亚洲一区黄色| 国产综合色精品一区二区三区| 美腿丝袜亚洲色图| 欧美一区二区高清在线观看| 欧美福利电影在线观看| 午夜欧美不卡精品aaaaa| 91久久精品美女| 国产日韩欧美一区二区三区在线观看 | 男女精品视频| 欧美亚洲系列| 在线一区观看| 亚洲国产高清在线| 久久人人爽人人| 亚洲免费小视频| 日韩午夜在线观看视频| 激情久久综合| 国产亚洲激情视频在线| 欧美三级中文字幕在线观看| 久久综合综合久久综合| 欧美中文在线观看| 亚洲特色特黄| 亚洲精品国产精品国自产观看 | 日韩视频精品在线| 亚洲高清久久| 一区在线影院| 国产一区二区日韩精品|