1、DCOM
COM的進程透明特性表現在組件對象和客戶程式即可以擁有各自的進程空間,也可以共用同一個進程空間,COM負責把客戶的調用正確傳到組件對象中,並保證參數傳遞的正確性。組件對象和客戶代碼不必考慮調用傳遞的細節,只要按照一般的函數調用的方式實現即可。如果進一步拓展進程透明特性,考慮組件對象與客戶程式運行在不同電腦上的情形,把進程透明性拓展為位置透明性,形成分散式元件物件模型,簡稱為DCOM。
DCOM是COM的擴充,它可以支援不同電腦上組件對象與客戶程式之間或者組件對象之間的相互連信,這些電腦可以在區域網路內、廣域網路上、 Internet上。對於客戶程式而言,組件程式所處的位置是透明的,我們不必編寫任何處理遠程調用的代碼,因此,DCOM也是COM的無縫擴充。 DCOM處理了底層網路通訊協定的所有細節。
2、從COM轉向DCOM
進程內組件與客戶程式之間的通訊過程比較簡單。本地進程外組件與客戶程式之間的通訊並不是直接進行的,而是用到了作業系統支援的一些跨進程通訊方法。
DCOM只是簡單地把本地跨進程通訊用一個網路通訊協定傳輸過程來代替,只是中間資料傳遞的路線更長一些。當然,網路通訊比單機系統內容下的跨進程通訊要脆弱得多,所以為了保證協作過程的可靠性以及程式對例外狀況事件的應變能力,客戶程式和組件程式需要考慮更多的細節。
3、DCOM對象的定位
客戶程式調用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定義了所有常用資料類型的資料表達方式,即網路資料標記法(NDR,network data representation)。為了使存根代碼和代理對象能夠正確地對參數和返回結果進行列集和散集,它們應該使用一致的資料標記法NDR,以便在不同的作業系統環境下也能夠遠程調用。
5、對象RPC
DCOM協議也被稱為對象RPC(ORPC,object remote procedure call ),它建立在DCE RPC協議的基礎上,可用於各種基於組件的分布式系統。ORPC建立了一套物件導向的遠程調用規範,指定了如何在網路上進行調用、對對象的引用如何表示和如何維護。ORPC協議已經被作為Internet草案遞交到IETF(Internet Engineering Task Force , Internet 工程部)。
在Internet或Intranet網路環境下,ORPC仍使用標準的RPC資料包,附加上專用於DCOM的一些資訊――介面指標標識符(IPID,interface point identifier)、版本資訊和擴充資訊――作為調用和返回的附加參數進行傳送,其中IPID表示調用被處理的遠程機器上特定對象的特定介面。 DCOM客戶程式必須周期性地“pinging”遠程機器上的對象,以便保證客戶與對象一直處於串連狀態。
6、DCOM特性
DCOM可以作為分布式應用系統的基本架構,客戶程式與DCOM組件對象之間形成了客戶/伺服器關係,進一步可構成多層軟體模型。DCOM組件具有COM 組件的一些基本特性,包括重用性、語言無關性等。而位置透明性 是DCOM的一個基本特性。DCOM的其他特性如下:
(1)延展性。一方面,DCOM利用作業系統本身的延展性;另一方面,DCOM提供了靈活的配置方案,允許不同的組件對象允許在不同的伺服器上,DCOM的位置透明性保證了這種變化可以不必修改組件來源程式。
(2)可配置性。安裝和管理是分布式軟體系統的兩個重要環節。DCOM提供了一個圖形介面的組態工具程式(DCOMCNFG.EXE),可使客戶程式和組件程式在不改變代碼的情況下適應不同的網路環境。
(3)安全性。DCOM使用了Windows NT提供的可擴充安全性架構,在非NT平台上實現的DCOM也包括了一個與NT相容的安全提供器。DCOM實現的安全性分為訪問安全性和啟用安全性,訪問安全性指定那些使用者可以調用組件對象,激發安全性指定哪些使用者可以在一個新進程中建立新的對象。
(4)協議無關性。
(5)平台獨立性