賈素來
摘 要:DCOM擴(kuò)展了COM,實(shí)現(xiàn)在網(wǎng)絡(luò)環(huán)境中不同計(jì)算機(jī)之間組件的通信,具有位置透明性、語言無關(guān)性、優(yōu)越的執(zhí)行性能和良好的安全性等技術(shù)特性。高校教務(wù)系統(tǒng)包含的數(shù)據(jù)量非常巨大,功能繁瑣,同時(shí)訪問數(shù)很多,所以開發(fā)者應(yīng)將其設(shè)計(jì)為分布式系統(tǒng)。使用DCOM可以很方便地開發(fā)高校分布式教務(wù)系統(tǒng)。
關(guān)鍵詞:DCOM;DNA;分布式系統(tǒng)
中圖分類號:TP302.1 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-2163(2015)01-
Abstract: DCOM is the expansion of COM. It realizes the communication of components between different computers in a network environment. It haves a lot of excellent technical characteristics, such as location transparency, language independent, executive superior performance and good safety etc. Distributed teaching system in colleges includes huge data, complex functions, a lot of visits. So it must be designed for distributed system. The paper uses DCOM to develop the distributed education management system in colleges and universities, which is very convenient.
Keywords: DCOM;DNA;Distributed System
0 引 言
隨著不斷改進(jìn)和發(fā)展,分布式系統(tǒng)逐漸形成了三種具有代表性的主流技術(shù),即CORBA、DCOM(Distributed Component Object Model)和J2EE。DCOM是COM的擴(kuò)展,為網(wǎng)絡(luò)環(huán)境中不同位置的組件提供了互操作的基礎(chǔ),可以作為構(gòu)建多層分布式應(yīng)用系統(tǒng)的基本框架。
1 DCOM的技術(shù)特性
1.1 DCOM簡介
COM是一個獨(dú)立于語言的、基于對象的編程規(guī)范。這是微軟建立的基于二進(jìn)制標(biāo)準(zhǔn)的模型,定義了組件和客戶程序之間互相作用的方式,但COM本身只能在本地生成組件對象。為了能在網(wǎng)絡(luò)環(huán)境中構(gòu)建多層分布式系統(tǒng),就需要進(jìn)一步使用DCOM。DCOM可以實(shí)現(xiàn)在網(wǎng)絡(luò)環(huán)境中不同計(jì)算機(jī)之間組件的通信,而且不論這些組件是運(yùn)行在局域網(wǎng)、廣域網(wǎng)、還是Internet上。對于客戶程序而言,組件程序所處的位置是透明的,而且開發(fā)者不必編寫任何處理遠(yuǎn)程調(diào)用的代碼,DCOM處理了底層網(wǎng)絡(luò)協(xié)議的所有細(xì)節(jié)[1,2],如圖1所示。
COM運(yùn)行庫根據(jù)調(diào)用產(chǎn)生代理和樁,向客戶和組件提供服務(wù)。當(dāng)客戶進(jìn)程和COM組件位于不同的機(jī)器中時(shí),DCOM用網(wǎng)絡(luò)協(xié)議來代替本地進(jìn)程之間的通訊。DCOM協(xié)議也被稱為對象RPC(Object Remote Procedure Call,簡稱ORPC),是建立在DCE RPC協(xié)議的基礎(chǔ)上,可用于各種基于組件的分布式系統(tǒng)[3]。ORPC建立了一套面向?qū)ο蟮倪h(yuǎn)程調(diào)用規(guī)范,指定了如何在網(wǎng)絡(luò)上進(jìn)行對象調(diào)用、同時(shí)也包括了對象的引用應(yīng)如何表示和維護(hù)。在網(wǎng)絡(luò)環(huán)境下,ORPC仍使用標(biāo)準(zhǔn)的RPC數(shù)據(jù)包,并附加了專用于DCOM的一些信息,如接口指針標(biāo)識符、版本信息和擴(kuò)展信息,再將其作為調(diào)用和返回的附加參數(shù)進(jìn)行傳送。
1.2 DCOM的技術(shù)特性
DCOM具有一些技術(shù)特性使其可以作為多層分布式系統(tǒng)的基本架構(gòu),如位置透明性、語言無關(guān)性、優(yōu)越的執(zhí)行性能和良好的安全性等。下面將對每一技術(shù)特性進(jìn)行綜合的闡釋和解析。
首先在位置透明性方面,開發(fā)者在使用DCOM開發(fā)分布式系統(tǒng)時(shí),可以使用配置程序預(yù)先完成組件配置,這就使得組件的位置完全透明。DCOM不僅無需改變源碼,而且也無需重新編譯程序,客戶程序連接組件和調(diào)用組件的方法都是一樣的。DCOM的位置透明性極大地簡化了將應(yīng)用組件分布化的任務(wù),使其能夠達(dá)到最合適的執(zhí)行效果。例如,某個組件必須位于某臺特定的機(jī)器上或某個特定的位置,并且該應(yīng)用有許多小組件,此時(shí)即可通過將這些組件配置在同一個局域網(wǎng)上,或者同一臺機(jī)器上,甚至同一個進(jìn)程中來減少網(wǎng)絡(luò)的負(fù)載。而當(dāng)應(yīng)用是由比較少的大組件構(gòu)成時(shí),網(wǎng)絡(luò)負(fù)載已不是問題,此時(shí)就可將組件配備在速度快的機(jī)器上,而無需考慮這些機(jī)器的具體位置。
其次,在語言無關(guān)性方面,當(dāng)設(shè)計(jì)和實(shí)現(xiàn)分布式應(yīng)用系統(tǒng)時(shí),一個常規(guī)問題就是為開發(fā)一個特定的組件而選擇語言以及工具的問題。其中,語言選擇就是一個在開發(fā)費(fèi)用、技術(shù)支持以及執(zhí)行性能之間發(fā)生的典型折衷過程。很多語言都可以用來開發(fā)COM組件,具體來說,主要有Java、Microsoft Visual C++、Microsoft Visual Basic、Delphi、PowerBuilder和Micro Focus COBOL。這就使得DCOM能夠直接且透明地改進(jìn)對現(xiàn)存組件和工具的投資,因此基于DCOM的系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)即可使開發(fā)者的組件無論是現(xiàn)在、或是將來均能實(shí)現(xiàn)良好的可重用性。
第三,在執(zhí)行性能方面,組件和客戶程序之間的通信常態(tài)都是雙向的。微軟開發(fā)了許多標(biāo)準(zhǔn)接口來支持雙向通信[4]。在COM術(shù)語中,雙向通信是由一種稱為連接點(diǎn)的機(jī)制來提供支持的,實(shí)現(xiàn)連接點(diǎn)需要兩個重要的接口:IconnectionPointContainer和IconnectionPoint,前者是連接點(diǎn)容器,因其知道源對象支持的所有連接點(diǎn),即可選擇可用的連接點(diǎn)實(shí)現(xiàn)第二個接口,這樣客戶和組件之間就建立了連接。使用連接點(diǎn)機(jī)制來建立網(wǎng)絡(luò)連接減少了數(shù)據(jù)在網(wǎng)絡(luò)中的往返開銷,在整體效果上就提高了執(zhí)行性能。
最后,在安全性方面,網(wǎng)絡(luò)在分布式系統(tǒng)的廣泛使用,催生了一些諸如關(guān)系到客戶間、組件間以及客戶和組件之間的安全問題。如果分布式開發(fā)平臺沒有提供安全支持,那么每一個分布式系統(tǒng)就必須設(shè)計(jì)完成自己的安全機(jī)制。DCOM是基于windows系統(tǒng)的,因而可以使用Windows NT提供的安全框架。Windows NT提供了一套穩(wěn)固的內(nèi)建式安全模塊,可以通過提高操作系統(tǒng)自身安全和網(wǎng)絡(luò)安全兩方面來實(shí)施其具體解決,主要表現(xiàn)在提高賬號安全性、權(quán)限安全性、環(huán)境安全性以及加密數(shù)據(jù)、設(shè)置防火墻等方面。
除了以上特性之外,DCOM還具有其它很多特性使其適宜于構(gòu)造多層分布式系統(tǒng),如編程控制、良好的容錯性、可擴(kuò)展性等。
2 使用DCOM開發(fā)分布式系統(tǒng)
COM擴(kuò)展到DCOM之后,對象的創(chuàng)建過程有所不同。為了標(biāo)識一個遠(yuǎn)程對象,僅僅提供一個128位的GUID并不足夠,還須提供遠(yuǎn)程對象所在的機(jī)器名,也稱為遠(yuǎn)程服務(wù)器名“RemoteServerName”。下面介紹了使用DCOM開發(fā)高校分布式教務(wù)系統(tǒng)的過程。
2.1 高校分布式教務(wù)系統(tǒng)設(shè)計(jì)
經(jīng)過需求分析,高校教務(wù)系統(tǒng)應(yīng)包括以下信息:學(xué)生學(xué)籍、教師課務(wù)、學(xué)校通知、網(wǎng)絡(luò)教學(xué)、考試題庫、圖書館、學(xué)報(bào)和郵件。顯而易見的是,教務(wù)系統(tǒng)的數(shù)據(jù)量是非常巨大的,其中包括的功能也最為繁瑣,學(xué)生和教師的并行訪問量也不會是個小數(shù)目。同時(shí),開發(fā)者不可能完全獨(dú)立開發(fā)高校教務(wù)系統(tǒng),必定會用到很多第三方組件或遺留系統(tǒng),否則開發(fā)成本太過昂貴。基于此,設(shè)計(jì)者就不能使用集中計(jì)算的方式來開發(fā)高校教務(wù)系統(tǒng),而應(yīng)該將其設(shè)計(jì)為分布式系統(tǒng)。
DNA(Distributed iNternet Applications)體系結(jié)構(gòu)是基于Windows平臺的應(yīng)用程序開發(fā)模型,代表了創(chuàng)建高分布式應(yīng)用程序的方法[5]。該體系結(jié)構(gòu)指定了如何使用Windows平臺開發(fā)強(qiáng)壯的、可伸縮的、分布式的應(yīng)用程序,其中采用的是一種邏輯上三層的、基于組件的體系結(jié)構(gòu)。具體地,三層分別是表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)層。這樣就使客戶機(jī)/服務(wù)器和基于WEB的應(yīng)用程序依托這一公共的應(yīng)用體系結(jié)構(gòu)而融合為一體。圖2就是使用DCOM開發(fā)的高校分布式教務(wù)系統(tǒng)的結(jié)構(gòu)圖。
由圖2可以看出,客戶端或web服務(wù)器根據(jù)用戶的請求調(diào)用相應(yīng)功能組件服務(wù)器上的功能組件,由此完成計(jì)算任務(wù)或操作管理數(shù)據(jù)庫中數(shù)據(jù)。因?yàn)樵O(shè)計(jì)者將不同用戶的請求分散到不同的服務(wù)器處理,從而提高了執(zhí)行性能、擴(kuò)展性等技術(shù)指標(biāo)。下面給出客戶程序調(diào)用DCOM組件的兩種方法。
2.2 創(chuàng)建DCOM組件
(1)方法一
通過DCOM配置工具指定遠(yuǎn)程服務(wù)器名,這種方式使得DCOM組件具有位置透明性。在Windows系統(tǒng)平臺上,遠(yuǎn)程服務(wù)器名稱、即RemoteServerName值將保存在系統(tǒng)注冊表HKEY_CLASSES_ROOT\APPID鍵下。如果操作系統(tǒng)發(fā)現(xiàn)了一個使用該值的計(jì)算機(jī)名,就將激活在此遠(yuǎn)程機(jī)器上的組件。如下例即可調(diào)用學(xué)籍功能組件服務(wù)器(StuJServer)上的組件對象:
[HKEY_CALSSES_ROOT\AppID\
"RomoteServerName"="StuJServer"
每個AppID可用于多個組件對象,通常就是代表了由多個CLSID共享的進(jìn)程,該進(jìn)程中的所有對象均共享同樣的配置信息,包括遠(yuǎn)程服務(wù)器名以及安全信息。在DCOM中引入AppID概念可以避免太多的注冊表關(guān)鍵字。
在Windows NT中提供了一個DCOM配置工具(dcomconfg.exe),開發(fā)者可以憑此來配置遠(yuǎn)程服務(wù)器,而不必直接修改注冊表。
(2)方法二
有些應(yīng)用要求在程序運(yùn)行過程中控制要連接的服務(wù)器。DCOM允許在創(chuàng)建函數(shù)中指定遠(yuǎn)程服務(wù)器名字,這些函數(shù)有:CoCreateInstanceEx、 CoGetClassObject、CoGetInstanceFromFile、CoGetInstanceFromeIStorage。如上函數(shù)以一個指向可選的COSERVERINFO結(jié)構(gòu)的指針作為參數(shù),該結(jié)構(gòu)可用于指定一個應(yīng)對COM對象進(jìn)行實(shí)例化的遠(yuǎn)程服務(wù)器,結(jié)構(gòu)中包含成員pwszName是用于對組件進(jìn)行實(shí)例化的遠(yuǎn)程服務(wù)器名。而此名字則可使用能在網(wǎng)絡(luò)中被識別的任一格式,包括IP地址、UNC名以及域名。
現(xiàn)給出各函數(shù)的實(shí)現(xiàn)功能分別如下:CoCreateInstanceEx函數(shù)可以用指定的類標(biāo)識符創(chuàng)建一個遠(yuǎn)程COM對象。CoGetClassObject函數(shù)返回一個對象類的類工廠接口指針,可以創(chuàng)建多個同CLSID的對象。CoGetInstanceFromFile函數(shù)創(chuàng)建一個對象類的新的實(shí)例,并用文件進(jìn)行初始化。CoGetInstanceFromeIStorage函數(shù)創(chuàng)建一個對象類的新的實(shí)例,并用Storage進(jìn)行初始化。
3 結(jié)束語
使用DCOM可以創(chuàng)建遠(yuǎn)程COM組件,從而實(shí)現(xiàn)在不同計(jì)算機(jī)之間的對象通信。這樣,應(yīng)用系統(tǒng)就可以分布在不同的地方,例如一個局域網(wǎng)、廣域網(wǎng),甚至是在Internet環(huán)境里。使用DCOM來構(gòu)建高校分布式教務(wù)系統(tǒng)可以使得教師和學(xué)生在校園內(nèi)外均能較為方便快捷地訪問并獲取所有需求信息。
參考文獻(xiàn):
[1] 張躍進(jìn).COM/DCOM集成的多數(shù)據(jù)庫系統(tǒng)的研究[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2010,26(6):27-30.
[2] 陶昕,謝昕.基于COM/DCOM集成的多數(shù)據(jù)庫系統(tǒng)的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(6):201-207.
[3] 沈晟, 沈炳炎. 基于DCOM/COM+的分布式隨機(jī)庫存管理系統(tǒng)應(yīng)用研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(12):2951-2956.
[4] (美)Tbuan L. Tbai著, 陳逸譯. DCOM入門[M]. 北京: 中國電力出版社, 2001:511-523.
[5] 潘愛民. COM原理和應(yīng)用[M]. 北京: 清華大學(xué)出版社, 1999: 415-438.