基于corba的電子商務(wù)系統(tǒng)畢業(yè)論文_第1頁
已閱讀1頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  電子商務(wù)(Electronic Commerce)作為一種全新的交易方式,是建立在網(wǎng)絡(luò)的基礎(chǔ)之上,通過網(wǎng)絡(luò)以電子數(shù)據(jù)流通的方式在全世界范圍內(nèi)進(jìn)行并完成的各種商務(wù)活動(dòng)、交易活動(dòng)、金融活動(dòng)和相關(guān)的綜合服務(wù)活動(dòng)。當(dāng)今Internet的爆發(fā)增長(zhǎng),使得通過為一大群顧客和供應(yīng)商提供一個(gè)通用通訊環(huán)境的方法更有助于發(fā)揮電子商務(wù)的獨(dú)一無二的潛

2、力.因此,現(xiàn)代的電子商務(wù)系統(tǒng)必須能集成不同種類的參與系統(tǒng)和不同政策領(lǐng)域中互相不信任的用戶。于是,CORBA(Common Object Request Broker Architecture,公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))便應(yīng)運(yùn)而生,且成為其最適合的技術(shù)。CORBA是由OMG(Object Management Group,對(duì)象管理組織)組織制訂的一種標(biāo)準(zhǔn)的面向?qū)ο髴?yīng)用程序體系規(guī)范。也就是說CORBA就是為了實(shí)現(xiàn)分布式計(jì)算而引入的。它可以抽

3、象網(wǎng)絡(luò)通訊、平臺(tái)的差異、編程語言等的差異,并且可以透明地提供電子商務(wù)所需的安全性功能。</p><p>  本文即是看中CORBA其出色的跨平臺(tái)和分布式計(jì)算性能等眾多優(yōu)點(diǎn),而把它運(yùn)用在電子商務(wù)系統(tǒng)的建立上。這樣可以使得電子商務(wù)系統(tǒng)更加安全可靠、更加易于升級(jí)和維護(hù)。首先對(duì)CORBA做了一個(gè)系統(tǒng)介紹,通過對(duì)銀行ATM系統(tǒng)的分析,確定整個(gè)系統(tǒng)的結(jié)構(gòu),然后在C++ Builder的開發(fā)環(huán)境下,運(yùn)用VisiBroker中間

4、件來開發(fā)基于CORBA的銀行ATM系統(tǒng),這便是本文的大概流程。</p><p>  關(guān)鍵詞:CORBA;電子商務(wù);對(duì)象管理組織;分布式計(jì)算;接口</p><p><b>  Abstract</b></p><p>  As a brand-new transaction way, the Electronic commerce that ba

5、se on the network foundation, and through network by the circulation of the electronic data ,is used for completing each kind of commercial activity, transaction activity, financial activity and correlation synthesis ser

6、vice. Today, the internet is growing fast and violently, the method which provide an general communication environment for a big group of customer and the supplier, is helpful to the display electronic commerce unique<

7、;/p><p>  Because of CORBA’s many merits, such as its splendid way of cross difference platforms and its distributed computing performance, this article use CORBA to establish electronic commerce system .And us

8、e this method, the electronic commerce system must will be more safer and reliabler, also be more easier to promote and maintain. First, there’s a CORBA’s introduction. And then, with the Bank ATM system’ analyse, this a

9、rticle establish the overall system’s structure. Last, by the C++ Builder we dev</p><p>  Keywords:CORBA;Electronic Commerce;Object Management Group;Distributed computing;interface</p><p><b&

10、gt;  目 錄</b></p><p><b>  摘 要</b></p><p><b>  Abstract </b></p><p><b>  1 緒論1</b></p><p>  1.1 電子商務(wù)系統(tǒng)的現(xiàn)狀1</p><p&

11、gt;  1.2 基于CORBA的電子商務(wù)系統(tǒng)1</p><p>  2 CORBA規(guī)范的介紹3</p><p>  2.1 CORBA規(guī)范的研究背景和發(fā)展歷史3</p><p>  2.2 CORBA規(guī)范的簡(jiǎn)介4</p><p>  2.3 CORBA規(guī)范的特點(diǎn)5</p><p>  2.4 CORBA規(guī)范

12、的實(shí)現(xiàn)過程及其組件的功能6</p><p>  2.5 CORBA規(guī)范的主要應(yīng)用方向7</p><p>  3 基于CORBA的銀行ATM機(jī)系統(tǒng)的研究與設(shè)計(jì)9</p><p>  3.1系統(tǒng)可行性分析9</p><p>  3.1.1 分析銀行ATM機(jī)系統(tǒng)的現(xiàn)狀9</p><p>  3.1.2 新系統(tǒng)的確立

13、10</p><p>  3.2 系統(tǒng)的整體設(shè)計(jì)11</p><p>  3.3系統(tǒng)開發(fā)工具11</p><p>  3.3.1 基于VisiBroker的智能代理應(yīng)用研究11</p><p>  3.3.2 C++ Builder開發(fā)環(huán)境14</p><p>  4 基于CORBA的銀行ATM機(jī)系統(tǒng)的具體實(shí)

14、現(xiàn)17</p><p>  4.1 編寫IDL接口17</p><p>  4.2 ATM服務(wù)器19</p><p>  4.3 ATM客戶程序21</p><p>  4.4 第一個(gè)銀行的CORBA實(shí)現(xiàn)22</p><p>  4.5 第二個(gè)銀行的CORBA實(shí)現(xiàn)25</p><p>

15、;  4.6 執(zhí)行ATM電子商務(wù)系統(tǒng)25</p><p><b>  5 結(jié)束語28</b></p><p><b>  參考文獻(xiàn)29</b></p><p><b>  致 謝30</b></p><p><b>  附錄131</b><

16、;/p><p><b>  附錄259</b></p><p><b>  1 緒論</b></p><p>  1.1 電子商務(wù)系統(tǒng)的現(xiàn)狀 </p><p>  通俗的說,所謂電子商務(wù),就是在網(wǎng)上開展商務(wù)活動(dòng)。當(dāng)企業(yè)將它的主要業(yè)務(wù)通過企業(yè)內(nèi)部網(wǎng)(Intranet)、外部網(wǎng)(Extranet)以及I

17、nternet與企業(yè)的職員、客戶供銷商以及合作伙伴直接相連時(shí),其中發(fā)生的各種活動(dòng)就是電子商務(wù)。電子商務(wù)是基于Internet/Intranet或局域網(wǎng)、廣域網(wǎng)、包括了從銷售、市場(chǎng)到商業(yè)信息管理的全過程。</p><p>  目前,電子商務(wù)只是在對(duì)通用方針和平臺(tái)意見一致的參與者間的封閉組織內(nèi)進(jìn)行。例如,電子數(shù)據(jù)交換(EDI)被用來在一個(gè)機(jī)構(gòu)的多個(gè)分支之間,或者在建立了契約聯(lián)系的機(jī)構(gòu)之間安全地傳輸數(shù)據(jù)。而且在這些早期

18、階段,電子商務(wù)系統(tǒng)只處理某幾個(gè)方面的完全商務(wù)事務(wù)。當(dāng)客戶可以通過他們的web瀏覽器來使用的第一批基于web的商店出現(xiàn)時(shí),便建立了電子商務(wù)的一個(gè)更全面的概念作為Internet上傳遞貨物和價(jià)格的方式?,F(xiàn)在,大多數(shù)電子商務(wù)系統(tǒng)是基于web的,并且允許客戶通過他們的web瀏覽器購買貨物并用信用卡結(jié)帳。然而,基于web的應(yīng)用程序的局限功能使得很難向客戶提供全范圍的服務(wù)。</p><p>  未來,電子商務(wù)解決方案的需求將

19、超過當(dāng)前級(jí)別。將來的系統(tǒng)將必須通過多個(gè)自治的服務(wù)提供商來滿足動(dòng)態(tài)開放式環(huán)境中的需求,電子商務(wù)將成為一個(gè)包含多個(gè)交易實(shí)體間復(fù)雜的交互作用的分布式過程。在一個(gè)開放式市場(chǎng)中,有許多獨(dú)立的貨物和服務(wù)的供應(yīng)商,并且可能有通過合并第三方提供的服務(wù)來提供服務(wù)的調(diào)解者??蛻舯旧硪部赡芎喜㈦S選(on-demand)產(chǎn)品或者服務(wù)來實(shí)現(xiàn)合成包。因此,現(xiàn)代的電子商務(wù)系統(tǒng)必須能集成不同種類參與系統(tǒng)和不同政策領(lǐng)域中互相不信任的用戶。</p><

20、p>  1.2 基于CORBA的電子商務(wù)系統(tǒng)</p><p>  于是為了滿足將來開放式的電子商務(wù)系統(tǒng)所應(yīng)具有的功能,即使所有客戶和服務(wù)應(yīng)用程序能在一個(gè)靈活、動(dòng)態(tài)、開放的框架中,越過不同平臺(tái)、不同編程語言進(jìn)行操作。我們?cè)陂_發(fā)電子商系統(tǒng)時(shí)引進(jìn)了CORBA技術(shù)。CORBA采用中間件技術(shù)、多層結(jié)構(gòu),使電子商務(wù)應(yīng)用系統(tǒng)可分為客戶端應(yīng)用程序、應(yīng)用程序服務(wù)器及數(shù)據(jù)庫服務(wù)器??蛻舳酥回?fù)責(zé)提供可移植的表達(dá)邏輯,應(yīng)用程序服務(wù)

21、器負(fù)責(zé)邏輯處理,而數(shù)據(jù)庫服務(wù)器提供專門的數(shù)據(jù)服務(wù)訪問。應(yīng)用程序服務(wù)器是一個(gè)包含企業(yè)邏輯的應(yīng)用程序。由于邏輯處理都在中間層進(jìn)行,大部分中間結(jié)果無須回傳給客戶,客戶只接受少量有用信息,從而減輕了網(wǎng)絡(luò)負(fù)載,使電子商務(wù)更快、更有效地進(jìn)行。</p><p>  CORBA的語言無關(guān)性是它的最顯著的優(yōu)勢(shì)。從軟件開發(fā)者的觀點(diǎn)來看,CORBA使得一切都變得比較簡(jiǎn)單,尤其是如果打算進(jìn)行不同的系統(tǒng)配置時(shí)。CORBA抽象了網(wǎng)絡(luò)和動(dòng)態(tài)的

22、遠(yuǎn)程程序調(diào)用,允許應(yīng)用程序開發(fā)者集中精力在實(shí)際的程序上,而不是集中在底層結(jié)構(gòu)的內(nèi)部工作方式上。應(yīng)用程序開發(fā)者可以再利用已存在系統(tǒng)中的部分(例如安全性系統(tǒng))來開發(fā)新程序。CORBA的靈活結(jié)構(gòu)也使得開發(fā)者可以實(shí)現(xiàn)整合已成品系統(tǒng)的一部分來迎合特殊的開發(fā)需求,并為進(jìn)一步增強(qiáng)系統(tǒng)和容易地升級(jí)這部分已成品軟件提供堅(jiān)實(shí)的基礎(chǔ)。將來,個(gè)別基于CORBA的可定制的軟件組件就可用了,可以購買它,并可以很容易的將之即插即用進(jìn)已存在的軟件中,來增強(qiáng)或升級(jí)軟件系

23、統(tǒng)。</p><p>  本課題選用C++ Builder6.0作為編程工具,利用VisiBroker作為連接客戶與銀行的中間件,運(yùn)用CORBA規(guī)范技術(shù)開發(fā)基于CORBA的電子商務(wù)系統(tǒng)。通過定義接口,實(shí)現(xiàn)用戶、ATM機(jī)、銀行的三層結(jié)構(gòu),完成兩個(gè)銀行和一個(gè)ATM機(jī)的模擬,其中ATM根據(jù)其雙重的服務(wù)身份,分為面向銀行客戶的ATM客戶端和作為銀行服務(wù)期的客戶端的ATM服務(wù)端,最終實(shí)現(xiàn)用戶的帳號(hào)管理及銀行ATM系統(tǒng)相關(guān)服

24、務(wù)。</p><p>  2 CORBA規(guī)范的介紹</p><p>  2.1 CORBA規(guī)范的研究背景和發(fā)展歷史</p><p>  CORBA(Common Object Request Broker Architecture,公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))是由OMG(Object Management Group,對(duì)象管理組織)組織制訂的一種標(biāo)準(zhǔn)的面向?qū)ο髴?yīng)用程序

25、體系規(guī)范?;蛘哒fCORBA體系結(jié)構(gòu)是OMG為解決分布式處理環(huán)境(DCE)中,硬件和軟件系統(tǒng)的互連而提出的一種解決方案。</p><p>  CORBA規(guī)范的產(chǎn)生有其特定的技術(shù)背景。</p><p>  1)面向?qū)ο蠹夹g(shù)的掀起</p><p>  面向?qū)ο蠹夹g(shù)不同于傳統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)技術(shù),它把數(shù)據(jù)以及相關(guān)的方法封裝在一起,構(gòu)成對(duì)象。通過封裝的方法更加精細(xì)地描述數(shù)據(jù)以及方

26、法的作用域,使用繼承特性來擴(kuò)展這些作用域。再加上對(duì)象引用和對(duì)象實(shí)現(xiàn)的分離,使得因?qū)ο蟮臄?shù)據(jù)和方法改變而造成的影響,在不涉及引用方法的情況下,局限于該對(duì)象的本身。大大方便了軟件對(duì)象的修改和擴(kuò)展。對(duì)象的繼承性使得可以利用已有的對(duì)象的功能來構(gòu)造新的對(duì)象,有效地提高了軟件的開發(fā)效率。因此,面向?qū)ο蠹夹g(shù)的發(fā)展,在提高軟件可重用性和軟件開發(fā)質(zhì)量方面起到了積極的推動(dòng)作用。</p><p>  2)客戶/服務(wù)器模式的普遍應(yīng)用&l

27、t;/p><p>  這種計(jì)算模式使得客戶盡量不需要了解過多的實(shí)現(xiàn)細(xì)節(jié),從而便于客戶應(yīng)用的開發(fā)。該模式具有不對(duì)稱性,即服務(wù)器不會(huì)主動(dòng)詢問客戶的請(qǐng)求。是被動(dòng)地執(zhí)行指定服務(wù)??蛻簦?wù)器模式適用于由不同計(jì)算能力的計(jì)算機(jī)和設(shè)備組成的網(wǎng)絡(luò)環(huán)境。</p><p>  3)集成已有系統(tǒng)及屏蔽通信和實(shí)現(xiàn)細(xì)節(jié)的需求</p><p>  一般來說,客戶已經(jīng)積累了一批極具價(jià)值的系統(tǒng),通常這

28、些系統(tǒng)難以改造和重寫,但是在構(gòu)造新系統(tǒng)時(shí),客戶希望能夠利用這些資源,因此如何有效地將已有系統(tǒng)集成或移植到新系統(tǒng)中,并且在將來盡可能少地使它們?cè)俪蔀椤肮聧u”系統(tǒng),是客戶應(yīng)用開發(fā)中提出的迫切需求。</p><p>  4)現(xiàn)有分布式處理機(jī)制和方法存在著不足</p><p>  現(xiàn)有典型的分布式處理系統(tǒng)和標(biāo)準(zhǔn)有RPC(遠(yuǎn)程過程調(diào)用)和DCE(分布計(jì)算環(huán)境)等。它們雖然是按照客戶/服務(wù)器模式構(gòu)造的

29、系統(tǒng),但是客戶程序和服務(wù)器程序之間的調(diào)用關(guān)系是靜態(tài)的,基于它們所構(gòu)造的系統(tǒng)也是靜態(tài)的,并且可以使用的編程語言必須與RPC和DCE實(shí)現(xiàn)語言相一致,從而限制了用戶的可選語言范圍。</p><p>  在這種情況下,由OMG組織制訂的工業(yè)標(biāo)準(zhǔn)CORBA規(guī)范應(yīng)運(yùn)而生。0MG組織成立于1989年,至今已擁有800多家成員,許多著名的計(jì)算機(jī)公司,如IBM,DEC,HP等都是其成員,東南大學(xué)是我國(guó)大陸的唯一成員單位。該組織的中

30、心任務(wù)是基于實(shí)用的對(duì)象技術(shù),建立一個(gè)體系結(jié)構(gòu)和一組規(guī)范,在分布式環(huán)境下實(shí)現(xiàn)應(yīng)用的集成,使得基于對(duì)象的軟件成員在分布異構(gòu)環(huán)境中可重用、可移植和可互操作。CORBA規(guī)范是針對(duì)OMA(Object Management Architecture,對(duì)象管理體系結(jié)構(gòu))參考模型中的對(duì)象請(qǐng)求代理ORB制定的,OMA如圖2.1所示。</p><p>  圖2.1 OMA 參考模型</p><p><

31、b>  它由五部分組成:</b></p><p>  1)對(duì)象請(qǐng)求代理ORB(Object Request Broker):使對(duì)象在分布式環(huán)境中透明地收發(fā)請(qǐng)求和響應(yīng),它是構(gòu)建分布式對(duì)象應(yīng)用,使應(yīng)用在不同層次的異構(gòu)環(huán)境下互操作的基礎(chǔ)。</p><p>  2)對(duì)象服務(wù)(Object Services):是為使用和實(shí)現(xiàn)對(duì)象而提供的基本服務(wù)集合,如命名服務(wù)、事件服務(wù)等。<

32、/p><p>  3)公共設(shè)施(Common Facilities):是向終端用戶應(yīng)用提供的一組共享服務(wù)接口,如組合文檔等。</p><p>  4)應(yīng)用接口(Application Interlaces):相應(yīng)于傳統(tǒng)的應(yīng)用表示。</p><p>  5)領(lǐng)域接口(Domain Interfaces):為使用領(lǐng)域服務(wù)而提供的接口?,F(xiàn)OMG組織為PDM(產(chǎn)品數(shù)據(jù)管理,Pr

33、oduct Data Management)等應(yīng)用制訂了有關(guān)規(guī)范。CORBA規(guī)范于1991年頒布了1.1版本,而后經(jīng)歷了1.2、2.0和2.1版本,目前最新的是1998年2月頒布的2.2版本。</p><p>  2.2 CORBA規(guī)范的簡(jiǎn)介</p><p>  CORBA是一種編程技術(shù),是吸收了軟件界面向?qū)ο蠹夹g(shù)、分布計(jì)算技術(shù)、多層體系結(jié)構(gòu)技術(shù)及接口技術(shù)的一種綜合技術(shù)。CORBA的底層結(jié)

34、構(gòu)是基于面向?qū)ο竽P偷腛MG接口描述語(OMG IDL),對(duì)象請(qǐng)求代理(ORB)和IIOP標(biāo)準(zhǔn)協(xié)議這三個(gè)關(guān)鍵模塊組成。首先,由于CORBA采用接口描述語言編寫對(duì)象接口,使其在跨語言編程上真正發(fā)揮作用。如今,CORBA已經(jīng)提供到C/C++、JAVA等高級(jí)語言的映射,很大程度上減小了對(duì)程序設(shè)計(jì)語言的依賴性,使用不同語言的軟件工程師可以共享各自已有的成果。</p><p>  說到CORBA,我們就不得不提ORB,即對(duì)

35、象請(qǐng)求代理,它是聯(lián)結(jié)應(yīng)用程序、各種對(duì)象、CORBA服務(wù)、CORBA工具集的核心。ORB最顯著的功能就是對(duì)應(yīng)用程序或其他ORB的請(qǐng)求予以響應(yīng),起著一個(gè)“中介”的作用。因?yàn)镃ORBA對(duì)象的互相通信要以O(shè)RB為中介,這樣也就促使其在當(dāng)前多種流行通訊協(xié)議上實(shí)現(xiàn)通訊。</p><p>  圖2.2 傳統(tǒng)客戶/服務(wù)器方式</p><p>  圖2.3 CORBA模式</p><p&

36、gt;  圖2.2所描述的是一個(gè)傳統(tǒng)客戶/服務(wù)器方式,客戶端發(fā)出請(qǐng)求,服務(wù)器端給出響應(yīng)。由于客戶端和服務(wù)器直接相連,因此響應(yīng)速度快。但是這種方式最大的缺陷是兼容性差,對(duì)于不同的開發(fā)工具,具有較大的局限性。從圖2.3我們可以看出ORB在CORBA對(duì)象通訊中起著一個(gè)“中介”的作用??蛻舫绦虿⒉恢滥繕?biāo)服務(wù)器位于本地還是遠(yuǎn)程網(wǎng)絡(luò)中,客戶程序僅把服務(wù)器名稱和服務(wù)器接口傳遞給ORB,然后由ORB定位服務(wù)器、分派請(qǐng)求和遞送結(jié)果。因此CORBA的這種

37、工作方式允許客戶動(dòng)態(tài)地綁定到服務(wù)方上,而取消了原有分布式計(jì)算模型中客戶機(jī)、服務(wù)器之間一一對(duì)應(yīng)關(guān)系。從而具有更大的靈活性,更大程度上滿足了交互作用的調(diào)和,增強(qiáng)了互操作性,同時(shí)也極大地推動(dòng)了分布計(jì)算的發(fā)展。</p><p>  2.3 CORBA規(guī)范的特點(diǎn)</p><p>  CORBA規(guī)范定義了IDL語言及映射、單個(gè)ORB和ORB間互操作機(jī)制。其中,單個(gè)ORB是CORBA規(guī)范的核心部分,其體

38、系結(jié)構(gòu)如圖2.4所示: </p><p>  圖2.4 單個(gè)ORB體系結(jié)構(gòu)</p><p>  CORBA規(guī)范的技術(shù)特點(diǎn)是:</p><p>  1)引入了代理(Broker)的概念。一個(gè)代理至少可以有三個(gè)方面的作用:完成對(duì)客戶方提出的抽象服務(wù)請(qǐng)求的映射;自動(dòng)發(fā)現(xiàn)和尋找服務(wù)器;自動(dòng)設(shè)定路由,實(shí)現(xiàn)到服務(wù)器方的執(zhí)行。這樣用戶在編制客戶程序時(shí)就可以避免了解過多的細(xì)節(jié),而只

39、要完整地定義和說明客戶需要完成的任務(wù)和目標(biāo)。</p><p>  2)實(shí)現(xiàn)了客戶方程序與服務(wù)器方程序的完全分離,這與面向過程調(diào)用機(jī)制為基礎(chǔ)的客戶/服務(wù)器模式根本不同??蛻魧⒉辉偻?wù)器發(fā)生直接的聯(lián)系,而僅僅需要同代理進(jìn)行交互??蛻襞c服務(wù)器之間就可以有更加靈活的關(guān)系存在。</p><p>  3)將分布式計(jì)算同面向?qū)ο蟮母拍钕嗷ソY(jié)合,可以提高軟件重用率、控制冗余度等,帶來諸多好處。</

40、p><p>  4)提供了軟件總線的機(jī)制,所謂軟件總線是指CORBA規(guī)范定義了一組接口規(guī)范,任何應(yīng)用程序、軟件系統(tǒng)或工具只要具有與該接口規(guī)范相符合的接口定義,就能方便地集成到CORBA系統(tǒng)中,而這個(gè)接口規(guī)范獨(dú)立于任何實(shí)現(xiàn)語言和環(huán)境。</p><p>  5)分層的設(shè)計(jì)原則和實(shí)現(xiàn)方式。CORBA規(guī)范僅定義了ORB中需要用到的基本對(duì)象類。封裝了相應(yīng)的數(shù)據(jù)結(jié)構(gòu)和方法,而面向應(yīng)用的對(duì)象定義則可以在OM

41、A的應(yīng)用對(duì)象或應(yīng)用開發(fā)環(huán)境中逐步分層定義和實(shí)現(xiàn)。</p><p>  CORBA規(guī)范充分利用了現(xiàn)今各種技術(shù)發(fā)展的最新成果,將面向?qū)ο蟮母拍钊嗪系椒植际接?jì)算中。定義了一組與實(shí)現(xiàn)無關(guān)的接口方式,引入代理機(jī)制分離客戶和服務(wù)器,使得CORBA規(guī)范成為開放的、基于客戶/服務(wù)器模式的、面向?qū)ο蟮姆植际接?jì)算的工業(yè)標(biāo)準(zhǔn)。</p><p>  2.4 CORBA規(guī)范的實(shí)現(xiàn)過程及其組件的功能</p>

42、;<p>  首先用Web服務(wù)封裝CORBA對(duì)象,使企業(yè)內(nèi)部各應(yīng)用程序保持不變,而對(duì)于B2B,B2C等對(duì)外的商務(wù)應(yīng)用,則將CORBA對(duì)象封裝成Web服務(wù),即利用HTTP作為穿越Internet的運(yùn)載媒體,構(gòu)建基于CORBA-Web服務(wù)的電子商務(wù)應(yīng)用架構(gòu),它把服務(wù)器的CORBA對(duì)象和基于XML的應(yīng)用程序相連接。用戶端通過HTTP發(fā)送SOAP格式的XML消息,消息在運(yùn)行時(shí)被導(dǎo)入到一個(gè)服務(wù)器端的翻譯器,翻譯器把消息轉(zhuǎn)換為等價(jià)的C

43、ORBA請(qǐng)求,ORB截取此請(qǐng)求并負(fù)責(zé)在軟件總線上找到響應(yīng)該請(qǐng)求的服務(wù)對(duì)象,然后完成方法和參數(shù)調(diào)用并經(jīng)執(zhí)行后返回處理結(jié)果。返回結(jié)果又被轉(zhuǎn)換成SOAP格式的XML信息,最后返回給用戶。其中,各主要組件及其功能如下:</p><p>  1)UDDI注冊(cè)中心</p><p>  是對(duì)所有提供公共UDDI注冊(cè)服務(wù)站點(diǎn)的統(tǒng)稱。UDDI的接口分為查詢API和發(fā)布API。其中查詢API用來快速定位web

44、服務(wù)及其調(diào)用規(guī)范和相關(guān)信息的細(xì)節(jié);而發(fā)布API又分為保存API和刪除API,一旦得到授權(quán)便可以注冊(cè)商業(yè)實(shí)體等信息,也可以修改或刪除原先發(fā)布的信息。企業(yè)內(nèi)部的CORBA服務(wù)對(duì)象經(jīng)過web服務(wù)包裝后由服務(wù)器端得翻譯器負(fù)責(zé)到UDDI注冊(cè)中心進(jìn)行注冊(cè)、修改和刪除等操作。</p><p><b>  2)用戶</b></p><p>  是一個(gè)能夠發(fā)送HTTP請(qǐng)求到指定URL的

45、瀏覽器或是URL對(duì)象本身,也可以是一個(gè)跨企業(yè)的應(yīng)用程序,發(fā)送的請(qǐng)求首先被定向到UDDI注冊(cè)中心。請(qǐng)求多采用XML格式通訊。當(dāng)外部用戶發(fā)出訪問請(qǐng)求時(shí),首先需要到UDDI注冊(cè)中心進(jìn)行服務(wù)查詢,一旦查詢到滿足要求的相應(yīng)服務(wù)時(shí),則由UDDI注冊(cè)中心負(fù)責(zé)將用戶的請(qǐng)求重定向到相應(yīng)的服務(wù)端翻譯器,而內(nèi)部用戶則仍然按原有方式使用遺留系統(tǒng),不受任何影響,除非要訪問其他企業(yè)的CORBA對(duì)象。</p><p><b>  3

46、)服務(wù)對(duì)象</b></p><p>  服務(wù)對(duì)象是分布式對(duì)象應(yīng)用程序的基本組成模塊,它為一般服務(wù)提供接口信息。被使用的OMG對(duì)象服務(wù)統(tǒng)稱為CORBA服務(wù),包括安全服務(wù)、消息服務(wù)、生命周期服務(wù)、命名服務(wù)、持久性對(duì)象服務(wù)、事務(wù)處理服務(wù)、數(shù)據(jù)交換服務(wù)、并發(fā)控制服務(wù)等。</p><p><b>  4)接口庫</b></p><p>  用

47、來存儲(chǔ)各接口的信息,例如接口定義、常量、屬性、類型定義等。接口庫本身就是一個(gè)CORBA對(duì)象,應(yīng)用程序使用接口庫的接口信息可以訪問OMG IDL的類型系統(tǒng),獲得對(duì)象接口的所有信息。</p><p>  2.5 CORBA規(guī)范的主要應(yīng)用方向</p><p>  CORBA規(guī)范的推出,重新調(diào)整了客戶機(jī)與服務(wù)器之間的關(guān)系??蛻魴C(jī)可以向服務(wù)器提出事務(wù)請(qǐng)求,同時(shí)也可以為下一個(gè)請(qǐng)求充當(dāng)服務(wù)器角色。由于C

48、ORBA系統(tǒng)引入了中間件的概念,即事務(wù)代理,由中間件完成客戶機(jī)與服務(wù)器之間的通信,使得服務(wù)器對(duì)于客戶機(jī)的位置相對(duì)透明,取消了原有分布式計(jì)算模型中客戶機(jī)、服務(wù)器之間的一一對(duì)應(yīng)關(guān)系。CORBA客戶機(jī)可以在運(yùn)行時(shí)動(dòng)態(tài)獲得服務(wù)對(duì)象的位置,并且可以對(duì)多個(gè)服務(wù)對(duì)象提交事務(wù)請(qǐng)求,因此,極大推動(dòng)了分布計(jì)算的發(fā)展。分布計(jì)算是指網(wǎng)絡(luò)中兩個(gè)或兩個(gè)以上的軟件相互共享信息資源。這些軟件可以位于同一臺(tái)計(jì)算機(jī)中,也可以部署在網(wǎng)絡(luò)節(jié)點(diǎn)的任意位置?;诜植际侥P偷能浖?/p>

49、統(tǒng)具有均衡運(yùn)行系統(tǒng)負(fù)載、共享網(wǎng)絡(luò)資源的技術(shù)優(yōu)勢(shì)。</p><p>  另外,CORBA規(guī)范約束采用面向?qū)ο蟮姆植际杰浖臉?gòu)造方法,以接口定義語言的形式實(shí)現(xiàn)對(duì)象內(nèi)部細(xì)節(jié)的完整封裝,從而降低了軟件系統(tǒng)的復(fù)雜程度,增加了軟件功能的可重用性。CORBA提供到C/C++、Java、SmallTalk等高級(jí)語言的映射,很大程度地減小了對(duì)程序設(shè)計(jì)語言的依賴性,使軟件開發(fā)人員可以在較大范圍內(nèi)共享已有成果。正是以上特點(diǎn)推動(dòng)了分布式

50、多層軟件體系結(jié)構(gòu)的發(fā)展。目前,CORBA技術(shù)在銀行、電信、保險(xiǎn)、電力和電子商務(wù)領(lǐng)域都有廣泛的應(yīng)用。而本課題就是CORBA技術(shù)在電子商務(wù)中的研究與應(yīng)用。</p><p>  3 基于CORBA的銀行ATM機(jī)系統(tǒng)的研究與設(shè)計(jì)</p><p>  以網(wǎng)絡(luò)為基礎(chǔ)的銀行ATM系統(tǒng),需要強(qiáng)健的平臺(tái)架構(gòu)。同時(shí),為了在競(jìng)爭(zhēng)中立于不敗之地,系統(tǒng)必須具有良好的可擴(kuò)展性、開放性、透明性及事務(wù)處理能力。這就要求我

51、們?cè)谠O(shè)計(jì)系統(tǒng)時(shí)應(yīng)盡可能考慮到功能的完備性。Internet/Intranet/Web技術(shù)使現(xiàn)代企業(yè)的各項(xiàng)日常管理活動(dòng)在日趨電子化的同時(shí)越來越依賴企業(yè)網(wǎng)。分布式對(duì)象的解決方案已經(jīng)成為未來建立企業(yè)級(jí)信息的中心,隨著網(wǎng)絡(luò)技術(shù)的進(jìn)一步發(fā)展,人類對(duì)網(wǎng)絡(luò)的利用要求愈來愈高,信息時(shí)代的企業(yè)不應(yīng)該再是一個(gè)信息孤立的單位,企業(yè)可以通過Intranet組成企業(yè)內(nèi)的信息集成,通過桌面產(chǎn)品訪問后臺(tái)數(shù)據(jù)庫,例如實(shí)時(shí)數(shù)據(jù)可以在制造中共享,企業(yè)將通過Extranet

52、(外部網(wǎng))給合作者或客戶提供信息,可以說這樣的企業(yè)將真正擁有信息的優(yōu)勢(shì)。但是企業(yè)內(nèi)部以及企業(yè)之間,往往是一個(gè)異構(gòu)環(huán)境, 異構(gòu)環(huán)境不僅局限于網(wǎng)絡(luò)(包括介質(zhì)、傳輸協(xié)議、網(wǎng)絡(luò)技術(shù)等)和操作系統(tǒng)的不同,也包括了今天人們使用的編程語言以及由這些語言開發(fā)的軟件產(chǎn)品。當(dāng)今企業(yè)中的計(jì)算機(jī)及網(wǎng)絡(luò)環(huán)境存在著廣泛的異構(gòu)現(xiàn)象。歸納起來,現(xiàn)階段設(shè)計(jì)一個(gè)銀行ATM系統(tǒng),應(yīng)該考慮的目標(biāo)主要包括:</p><p>  (1)系統(tǒng)功能及工具的完備

53、性;</p><p>  (2)系統(tǒng)體系結(jié)構(gòu)的可擴(kuò)展性;</p><p>  (3)多種數(shù)據(jù)源的存儲(chǔ)訪問能力;</p><p>  (4)基于Web的發(fā)布和表現(xiàn)能力。</p><p>  于是,本課題的主要任務(wù)和目標(biāo)便是利用VisiBroker作為連接客戶與銀行的中間件,運(yùn)用CORBA規(guī)范技術(shù),通過定義接口,實(shí)現(xiàn)用戶、ATM機(jī)、銀行的三層結(jié)構(gòu)

54、,實(shí)現(xiàn)用戶的帳號(hào)管理及銀行ATM系統(tǒng)相關(guān)服務(wù)。</p><p>  3.1系統(tǒng)可行性分析</p><p>  3.1.1 分析銀行ATM機(jī)系統(tǒng)的現(xiàn)狀 </p><p>  隨著銀行業(yè)務(wù)的不斷發(fā)展,ATM自動(dòng)提款機(jī)逐漸普及,銀行ATM系統(tǒng)成為如今社會(huì)的新熱點(diǎn),給人們的經(jīng)濟(jì)和生活帶來了極大的便利。但今天的銀行ATM系統(tǒng)卻只是在各個(gè)銀行各自擁有的平臺(tái)上運(yùn)行,因此應(yīng)用程序并

55、不能互操作,也不能建立在對(duì)方的基礎(chǔ)上。安全性和支付系統(tǒng)仍然不成熟,并且常常是不相稱的。為了使ATM機(jī)更好的為經(jīng)濟(jì)生活服務(wù),未來的銀行ATM系統(tǒng)的主要問題是它們必須通過復(fù)雜的組件技術(shù)和信托關(guān)系在一個(gè)動(dòng)態(tài)并開放的,從而也是不受控制的環(huán)境中操作。現(xiàn)階段的銀行ATM系統(tǒng)不能迎合這些關(guān)于功能性和安全性的需求,于是為了能更好的解決這方面問題的,基于CORBA的電子商務(wù)系統(tǒng)便應(yīng)運(yùn)而生。</p><p>  3.1.2 新系統(tǒng)的

56、確立</p><p>  1) 新系統(tǒng)的設(shè)計(jì)目標(biāo)</p><p>  針對(duì)以上問題,我們研究與設(shè)計(jì)基于CORBA的電子商務(wù)系統(tǒng),以對(duì)現(xiàn)有系統(tǒng)在其功能及操作上做一些改進(jìn)。銀行ATM系統(tǒng)處在典型的異構(gòu)和分布式環(huán)境中,CORBA所具備的分布式計(jì)算處理能力為完成大型復(fù)雜的銀行ATM系統(tǒng)提供了技術(shù)上的保證,在當(dāng)今各種開發(fā)工具積極提供與CORBA的接口情況下,運(yùn)用CORBA技術(shù)創(chuàng)建更加完善的銀行ATM

57、系統(tǒng)已成為這個(gè)領(lǐng)域中相當(dāng)領(lǐng)先的技術(shù)。</p><p>  2) 新系統(tǒng)的設(shè)計(jì)原則</p><p><b>  a.模塊化設(shè)計(jì)原則</b></p><p>  通過模塊化設(shè)計(jì),使各個(gè)模塊能完成相對(duì)獨(dú)立的功能,這樣方便開發(fā)者的開發(fā)和調(diào)試,同時(shí)也利于客戶的操作。</p><p><b>  b.可擴(kuò)充性原則</

58、b></p><p>  一般來說,軟件的生命期不會(huì)很長(zhǎng),在使用了一段時(shí)間后可能會(huì)出現(xiàn)功能欠缺等現(xiàn)象,無法滿足應(yīng)用需要。如果要重新編寫軟件會(huì)浪費(fèi)很多財(cái)力,物力。繼承性原則彌補(bǔ)了這一點(diǎn)。當(dāng)有新的功能出現(xiàn)時(shí),只需在原來的基礎(chǔ)上稍做一些改動(dòng)(增添、刪除等)則可擴(kuò)充其功能。</p><p><b>  c.可維護(hù)性</b></p><p>  用

59、傳統(tǒng)的方法和面向過程的語言來開發(fā)本系統(tǒng),很難維護(hù)。因?yàn)樵撓到y(tǒng)的功能或信息是可變的,這樣軟件危機(jī)會(huì)隨著時(shí)間越來越嚴(yán)重。本系統(tǒng)采用面向?qū)ο蟮恼Z言來開發(fā),提高可維護(hù)性,使該系統(tǒng)的生命力更強(qiáng)。</p><p>  3) 新系統(tǒng)的可行性</p><p>  CORBA是一系列定義分布式操作系統(tǒng)的標(biāo)準(zhǔn)。它是分布式的,不同種類的對(duì)象可以一起工作。CORBA將很多種機(jī)器,從迷你機(jī),臺(tái)式機(jī)到手掌機(jī)和嵌入系統(tǒng)

60、以一種簡(jiǎn)單的方式集成起來,成為大型(和非大型)企業(yè)的中間件的選擇。其中最重要也是最常用的是用于服務(wù)器高效可靠地控制大量的客戶機(jī)。CORBA在世界上許多最大的www站點(diǎn)的機(jī)房里都有應(yīng)用。它給這些系統(tǒng)提供了可測(cè)量性和容錯(cuò)的特殊支持。除了大型應(yīng)用程序,一些CORBA還運(yùn)行于實(shí)事系統(tǒng)和小型嵌入系統(tǒng)。</p><p>  從操作可行性方面考慮:客戶端ATM機(jī)操作復(fù)雜度簡(jiǎn)單,使本系統(tǒng)為廣大的普通用戶所接受,而不僅僅局限于少數(shù)

61、受過專業(yè)培訓(xùn)的專業(yè)用戶。</p><p>  從平臺(tái)獨(dú)立性方面考慮:如今越來越多的軟件公司推出基于CORBA結(jié)構(gòu)的中間件,并將其運(yùn)用到實(shí)際的電子商務(wù)活動(dòng)中。Web技術(shù)的發(fā)展使C/S結(jié)構(gòu)進(jìn)一步發(fā)展為B/S結(jié)構(gòu)??蛻舳吮M可能的簡(jiǎn)單,只需要一個(gè)標(biāo)準(zhǔn)的瀏覽器就能以上述的方式訪問服務(wù)器。</p><p>  從系統(tǒng)成本方面考慮:用CORBA創(chuàng)建的電子商務(wù)系統(tǒng)方案有實(shí)現(xiàn)的可能和開發(fā)的價(jià)值;系統(tǒng)所帶來的

62、經(jīng)濟(jì)效益也是超過開發(fā)和維護(hù)系統(tǒng)所需要費(fèi)用的。</p><p>  使用基于CORBA技術(shù)的電子商務(wù)系統(tǒng)具有開放、高效、可重用性等優(yōu)點(diǎn)。該系統(tǒng)完全實(shí)現(xiàn)了客戶方調(diào)用請(qǐng)求的透明性,將底層細(xì)節(jié)完全屏蔽,減少了開發(fā)應(yīng)用的難度和復(fù)雜度,并且具有很高的可重用性,適用于復(fù)雜的分布式環(huán)境。</p><p>  3.2 系統(tǒng)的整體設(shè)計(jì)</p><p>  整個(gè)系統(tǒng)涉及到三個(gè)角色:銀行、

63、ATM機(jī)以及客戶,是一個(gè)非常接近生活的電子商務(wù)實(shí)例。</p><p>  系統(tǒng)首先假設(shè)共有兩家銀行,用戶可以在其中開設(shè)一定的帳戶,而每個(gè)銀行可以根據(jù)自己的時(shí)間上下班。</p><p>  整個(gè)系統(tǒng)可以有一臺(tái)或多臺(tái)ATM機(jī)器,我們?yōu)槊颗_(tái)ATM機(jī)命名。每臺(tái)ATM機(jī)可以歸屬于任何一個(gè)指定的銀行,但它們能夠處理所有銀行的交易。我們還可以根據(jù)需要關(guān)閉或啟動(dòng)每臺(tái)ATM機(jī)。</p><

64、;p>  每個(gè)合法客戶都有一個(gè)名字和開戶銀行規(guī)定的個(gè)人身份標(biāo)志號(hào)PIN,用戶可以選定自己希望使用的ATM機(jī)名稱,通過ATM機(jī),客戶可以對(duì)自己的帳戶進(jìn)行查存、支出或存款,也可以對(duì)自己的支票進(jìn)行查詢、提款或撥款。</p><p>  銀行、ATM機(jī)將檢查每一筆交易的可行性,并忠實(shí)記錄每一筆成功的交易。</p><p><b>  3.3系統(tǒng)開發(fā)工具</b></

65、p><p>  3.3.1 基于VISIBROKER的智能代理應(yīng)用研究</p><p>  1)VisiBroker簡(jiǎn)介</p><p>  當(dāng)前已有許多公司都已經(jīng)按照OMG的標(biāo)準(zhǔn)開發(fā)出形式、功能各具特色的CORBA中間件系統(tǒng),如IONA公司的Orbix(C++版)、OrbixWeb(Java版),Digital公司的ObjectBroker;IBM公司的Compone

66、nt Broker等等。</p><p>  而本次課題所主要運(yùn)用的VisiBroker則是Inprise公司的產(chǎn)品。VisiBroker最初被稱作Black Window,由PostModer公司研制。這是世界上第一個(gè)同時(shí)支持客戶、對(duì)象實(shí)現(xiàn)的ORB,采用Java語言編寫。1996年初,PostModern被Visigenic公司收購,1996年7月,Black Window被正式命名為VisiBroker fo

67、r Java,而PostModer的另一個(gè)產(chǎn)品C++ Orbeline被正式命名為VisiBroker for C++.</p><p>  1996年7月底,Netscape公司宣布他們的Netscape ONE(Open Network Environment)將集成VisiBroker for Java以支持CORBA分布式軟件結(jié)構(gòu);1997年2月,Oracle公司宣布在他們的NCA(Network Com

68、puting Architecture)體系結(jié)構(gòu)中,將以VisiBroker作為請(qǐng)求對(duì)象代理ORB。</p><p>  1998年2月,Visigenic被Inprise收購,而Inprise的前身就是著名的Broland公司。Broland公司的創(chuàng)業(yè)產(chǎn)品是Turbo pascal編譯器,他們的Borland C++、Turbo C++曾經(jīng)成為我國(guó)程序開發(fā)工具中的壟斷產(chǎn)品。在Microsoft推出Visual

69、Basic、Visual C++后,Borland C++霸主地位受到?jīng)_擊。不過,在相當(dāng)長(zhǎng)的時(shí)間內(nèi),Broland C++ 4.x~5.x繼續(xù)與Visual C++ 1.x~6.x抗衡。</p><p>  Delphi的出現(xiàn)為Borland帶來了轉(zhuǎn)機(jī)。目前,Delphi已經(jīng)成為可視化編程工具的經(jīng)典“作品”,具有強(qiáng)大的數(shù)據(jù)庫、網(wǎng)絡(luò)、多媒體軟件開發(fā)功能,用戶、第三方支持遍布世界各地。如果說,“希臘美女”Delphi

70、(因?yàn)镈elphi的標(biāo)志是一個(gè)希臘美女)的出現(xiàn)使所有程序員啞口無言的話,那么,她的“妹妹”C++ Builder則更加風(fēng)姿卓越。</p><p>  C++ Builder具備Delphi的所有功能,直接使用源自Delphi的可視化組件庫(Wizard),可以將原來已經(jīng)用Borland C++或Visual C++開發(fā)的軟件自動(dòng)轉(zhuǎn)換為現(xiàn)有格式,同時(shí)支持OWL以及MFC類庫。</p><p>

71、;  更為重要的是,現(xiàn)在,C++ Builder已經(jīng)集成了他們自己公司(也就是Inprise)的CORBA產(chǎn)品,也就是VisiBroker.</p><p>  2)VisiBroker的特點(diǎn)</p><p>  目前,VisiBroker有C++、Java、Delphi三個(gè)版本,均符合CORBA2.0規(guī)范,支持跨平臺(tái)、支持多種操作系統(tǒng)、內(nèi)置IIOP引擎。同時(shí),VisiBroker還實(shí)現(xiàn)了

72、事務(wù)服務(wù)、命名服務(wù)、事件服務(wù)等CORBA基本服務(wù);能夠完成基于SSL協(xié)議的IIOP加密傳輸。</p><p>  通常情況下,借助VisiBroker構(gòu)建的CORBA分布式軟件包括以下幾部分:</p><p>  a . 接口存根對(duì)象Stub被CORBA客戶當(dāng)作CORBA服務(wù)的提供者直接使用;而接口存根對(duì)象Stub卻僅僅是一個(gè)代理,真正的對(duì)象實(shí)現(xiàn)既可以與客戶程序駐留在相同進(jìn)程中,也可以與客

73、戶程序駐留在相同機(jī)器的不同進(jìn)程中,還可以駐留在別的機(jī)器中。</p><p>  b . 接口存根對(duì)象Stub會(huì)把客戶的請(qǐng)求轉(zhuǎn)發(fā)給與客戶程序駐留在相同機(jī)器上的ORB;ORB通過運(yùn)行在局域網(wǎng)上的Smart Agent定位對(duì)象實(shí)現(xiàn)的實(shí)例。Smart Agent能夠在動(dòng)態(tài)變化的分布式環(huán)境下定位一個(gè)可以響應(yīng)客戶請(qǐng)求的服務(wù)對(duì)象。而且,在必要的時(shí)候,Smart Agent能夠自動(dòng)進(jìn)行負(fù)載均衡,當(dāng)服務(wù)器突然崩潰時(shí),Smart A

74、gent能夠重新定位一個(gè)服務(wù)對(duì)象或重新啟動(dòng)服務(wù)對(duì)象。當(dāng)然,在客戶機(jī)器所在的局域網(wǎng)內(nèi),至少需要運(yùn)行一個(gè)Smart Agent。</p><p>  c . 對(duì)象實(shí)現(xiàn)所在的機(jī)器可以被認(rèn)為是服務(wù)器。當(dāng)客戶發(fā)出請(qǐng)求時(shí),服務(wù)器上的本地ORB會(huì)把請(qǐng)求傳遞給接口框架對(duì)象Skeleton,激發(fā)有關(guān)操作,獲取服務(wù)。接口框架對(duì)象Skeleton還可以通過基本對(duì)象適配器BOA與本地ORB通信。比如,當(dāng)對(duì)象實(shí)現(xiàn)啟動(dòng)、激活后,接口框架對(duì)象

75、Skeleton會(huì)通過BOA向Smart Agent注冊(cè)有關(guān)信息。</p><p>  d . 通常情況下,對(duì)象實(shí)現(xiàn)的實(shí)例應(yīng)該手動(dòng)啟動(dòng)、關(guān)閉。但是,如果對(duì)象實(shí)現(xiàn)向OAD(Object Activation Daemon)注冊(cè)過,則可以在需要的時(shí)候由OAD自動(dòng)啟動(dòng)、激活對(duì)象實(shí)現(xiàn)的實(shí)例。像OAD注冊(cè)過的對(duì)象實(shí)現(xiàn)信息被保存在對(duì)象實(shí)現(xiàn)倉庫中。當(dāng)服務(wù)器的本地ORB在接收到有關(guān)請(qǐng)求后,會(huì)自動(dòng)與OAD通信,如果有必要,OAD將

76、負(fù)責(zé)啟動(dòng)、激活一個(gè)對(duì)象實(shí)例。當(dāng)然,如果希望實(shí)現(xiàn)上述功能,在服務(wù)器對(duì)象實(shí)現(xiàn)所在的局域網(wǎng)內(nèi),至少需要運(yùn)行一個(gè)OAD。</p><p>  另外,VisiBroker還提供了接口倉庫管理工具,用戶可以把用OMG IDL定義的對(duì)象接口信息存儲(chǔ)在自由選定的接口倉庫中,并通過各種圖形界面查詢、獲取這些信息。這樣,CORBA開發(fā)人員就可以十分方便的發(fā)布、維護(hù)對(duì)象接口信息。當(dāng)用向OAD注冊(cè)對(duì)象實(shí)現(xiàn)時(shí),也可以從接口倉庫中獲益。&l

77、t;/p><p>  隨著Inprise的兼并,VisiBroker具備了許多額外的工具,如緊密集成了VisiBroker的開發(fā)工具C++ Builder、JBuilder、Delphi;用來監(jiān)控CORBA網(wǎng)絡(luò)運(yùn)行環(huán)境的VisiBroker Manager;用來遠(yuǎn)程調(diào)試CORBA程序模塊的RemoteDebugger等等。</p><p>  3)VisiBroker的Smart Agent&

78、lt;/p><p>  如果我們希望調(diào)試、運(yùn)行CORBA程序,在本機(jī)或本機(jī)所處的局域網(wǎng)內(nèi)必須至少運(yùn)行一個(gè)Smart Agent。Smart Agent是ORB的擴(kuò)展部分,能夠在動(dòng)態(tài)變化的分布式環(huán)境中定位一個(gè)對(duì)象實(shí)現(xiàn)的實(shí)例,完成客戶要求的服務(wù)。在VisiBroker中,ORB功能由orb_b.dll、orb_br.dll、orb_r.dll等動(dòng)態(tài)鏈接庫實(shí)現(xiàn);Smart Agent功能由osagent.exe實(shí)現(xiàn),這些文

79、件均位于VisiBroker安裝目錄的Bin子目錄下。</p><p>  Smart Agent具有以下一些功能、特點(diǎn):</p><p>  a .當(dāng)客戶向CORBA對(duì)象發(fā)出請(qǐng)求時(shí),如果Smart Agent僅僅能夠定位一個(gè)對(duì)象實(shí)現(xiàn)的實(shí)例,就直接向該實(shí)例傳遞請(qǐng)求;如果Smart Agent能夠定為多個(gè)對(duì)象實(shí)現(xiàn)的實(shí)例(也就是發(fā)現(xiàn)多個(gè)可用服務(wù)器),就會(huì)自動(dòng)進(jìn)行負(fù)載均衡。</p>

80、<p>  b .當(dāng)某個(gè)對(duì)象實(shí)現(xiàn)的實(shí)例因網(wǎng)絡(luò)連接故障等原因出現(xiàn)運(yùn)行錯(cuò)誤時(shí),Smart Agent可以重定位一個(gè)對(duì)象實(shí)例;如果設(shè)置正確,Smart Agent還可以重啟動(dòng)服務(wù)器。</p><p>  c .ORB通過向所在局域網(wǎng)廣播的方式與Smart Agent建立通信關(guān)系。如果局域網(wǎng)內(nèi)有多個(gè)Smart Agent運(yùn)行,ORB則與最先響應(yīng)的Smart Agent建立通信關(guān)系。一旦與Smart Agent

81、建立起通信連接,ORB自動(dòng)采用點(diǎn)到點(diǎn)的UDP(User data protocol)通信協(xié)議與Smart Agent通信,以便減少網(wǎng)絡(luò)運(yùn)行開銷。</p><p>  d .當(dāng)局域網(wǎng)上有多個(gè)Smart Agent運(yùn)行時(shí),每個(gè)Smart Agent僅僅需要注冊(cè)一部分對(duì)象實(shí)現(xiàn)實(shí)例的定位信息;如果某個(gè)Smart Agent發(fā)現(xiàn)不能直接定位的對(duì)象實(shí)例,會(huì)自動(dòng)與其它Smart Agent通信(互操作)。</p>

82、<p>  e .當(dāng)局域網(wǎng)上有多個(gè)Smart Agent運(yùn)行時(shí),如果某個(gè)Smart Agent發(fā)生故障,它所記錄的對(duì)象實(shí)例定位信息會(huì)自動(dòng)注冊(cè)到其他的Smart Agent上。</p><p>  d .用戶可以通過設(shè)置Smart Agent的偵聽端口,將位于同一個(gè)局域網(wǎng)上的多個(gè)Smart Agent歸屬于不同的ORB域。</p><p>  值得一提的是,在編譯程序時(shí),我們需要

83、一個(gè)叫JDK的組件。JDK是Java的核心,包括了Java運(yùn)行環(huán)境(Java Runtime Envirnment),一堆Java工具和Java基礎(chǔ)的類庫(rt.jar)。在安裝C++ Builder時(shí),會(huì)有自帶的JDK某個(gè)版本自定義安裝。最主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM公司開發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開發(fā)的JDK等等。其中IBM的JD

84、K包含的JVM(Java Virtual Machine)運(yùn)行效率要比Sun JDK包含的JVM高出許多。而專門運(yùn)行在x86平臺(tái)的Jrocket在服務(wù)端運(yùn)行效率也要比Sun JDK好很多。而我們VisiBroker只支持JDK1.3的版本,所以在默認(rèn)使用C++ Builder的JDK時(shí),會(huì)出現(xiàn)編譯錯(cuò)誤“C:\jdk1.3.1_01\jre\bin\classic\jvm.dll”,這也是我在編譯程序當(dāng)中遇到的問題之一。</p>

85、;<p>  3.3.2 C++ Builder開發(fā)環(huán)境</p><p>  1) C++語言簡(jiǎn)介</p><p>  C++是當(dāng)今最流行的高級(jí)程序設(shè)計(jì)語言之一,應(yīng)用十分廣泛。它與C語言兼容,既支持結(jié)構(gòu)化的程序設(shè)計(jì)方法,也支持面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。C++語言是在C語言的基礎(chǔ)上擴(kuò)充而成的,具有C語言緊湊、高效等優(yōu)點(diǎn)并支持程序設(shè)計(jì)技術(shù)。</p><p>

86、  自20世紀(jì)80年代以來,面向?qū)ο蟮募夹g(shù)引起了計(jì)算機(jī)界的極大關(guān)注。隨著面向?qū)ο蟪绦蛟O(shè)計(jì)語言的漸趨成熟,作為一種新的程序設(shè)計(jì)風(fēng)格,其應(yīng)用也得到了迅速發(fā)展。</p><p>  在面向?qū)ο笙到y(tǒng)中,人們并不是逐個(gè)地描述各個(gè)具體的對(duì)象,而是將注意力集中于具有相同特性的一類事物,抽象出這樣一類事物的共同結(jié)構(gòu)和行為。類(Class)是對(duì)象的抽象及描述,是具有共同屬性和操作的多個(gè)對(duì)象的相似特性的統(tǒng)一描述體,類中的每個(gè)對(duì)象都是

87、該類的實(shí)例。由于類描述了數(shù)據(jù)結(jié)構(gòu)(對(duì)象屬性)、算法(方法)和外部接口(消息協(xié)議),因此,類提供了完成的解決問題的能力。</p><p>  一個(gè)成熟的面向?qū)ο蟮木幊汰h(huán)境往往會(huì)提供一組精心設(shè)計(jì)而成能在程序中被反復(fù)使用的類供用戶使用,以提高軟件開發(fā)的效率和質(zhì)量,一般稱這樣的一組類為類庫。C++ Builder提供的類庫名為VCL,VC++則提供了一個(gè)叫做MFC的類庫。</p><p>  面向

88、對(duì)象程序設(shè)計(jì)的概念提出來以后,某些公司和機(jī)構(gòu)曾經(jīng)開發(fā)出一些純粹的面向?qū)ο笤O(shè)計(jì)語言,如Smalltalk、Ada等,但是由于種種原因,這些語言沒能夠廣泛地流行起來。從本質(zhì)上講,C++并不是純粹的面向?qū)ο蟮脑O(shè)計(jì)語言。C++是C語言的一個(gè)超集,它既能支持傳統(tǒng)的面向過程程序設(shè)計(jì),又支持面向?qū)ο蟪绦蛟O(shè)計(jì),C++與C語言的這種兼容性是其成功的一個(gè)重要方面。</p><p>  C++的創(chuàng)造靈感來源于當(dāng)時(shí)計(jì)算機(jī)語言多方面成果的

89、凝集,特別是BCPL和Simula67。C++的標(biāo)準(zhǔn)化工作于1989年開始,在支持面向?qū)ο筇匦缘拈_發(fā)平臺(tái)上,日趨進(jìn)步和完善。</p><p>  2) Windows環(huán)境下的快速開發(fā)工具</p><p>  C++ Builder是Borland公司開發(fā)的Windows下可視化的C++編程環(huán)境,它常被簡(jiǎn)稱為BCB或CB。BCB不僅功能強(qiáng)大,而且學(xué)習(xí)簡(jiǎn)單、使用方便。C++ Builder目前

90、的最新版本是6.0版。</p><p>  傳統(tǒng)的“軟件工程”提倡“先設(shè)計(jì),后編程”設(shè)計(jì)一旦完成,則不允許做過多修改。這種設(shè)計(jì)原則固然有其合理的一面,但嚴(yán)重制約了開發(fā)效率。對(duì)于某些開始時(shí)對(duì)需求并不十分清楚的應(yīng)用項(xiàng)目,若按此辦理則往往將開發(fā)人員逼入窘境?!翱焖僭头ā被騌AD(Rapid Application Development,快速開發(fā)工具)則反其道而行之,它把設(shè)計(jì)看成需經(jīng)多次反復(fù)才能完成的工作:對(duì)一個(gè)項(xiàng)目

91、的初步分析完成后,即據(jù)此開發(fā)出一個(gè)程序“原型”;然后與用戶一起對(duì)該“原型”進(jìn)行評(píng)價(jià),找出不足,修改設(shè)計(jì)后再產(chǎn)生程序。這一過程可重復(fù)多次,直到所開發(fā)的系統(tǒng)達(dá)到用戶要求為止。但要有效實(shí)現(xiàn)RAD,必須擁有優(yōu)良的編程環(huán)境和代碼生成工具,由于BCB具有可視化、面向?qū)ο蟮忍匦裕貏e適合作為Windows下企業(yè)級(jí)應(yīng)用的RAD開發(fā)環(huán)境使用。目前,稱得上RAD的產(chǎn)品有VB、Delphi、C++ Builder等。相對(duì)于VB等“解釋型”的語言來說,Delp

92、hi、BCB這些以“編譯型”的語言為基礎(chǔ)的RAD編程環(huán)境效率較高,功能也更強(qiáng)大。</p><p>  作為一個(gè)RAD開發(fā)環(huán)境,BCB對(duì)Windows和Internet上的各種流行技術(shù)都提供了充分的支持,C++ Builder 6.0在先前版本基礎(chǔ)上又增加了許多新的功能和特性。它具有很強(qiáng)的圖形、圖像和多媒體處理功能;對(duì)Windows下的OLE、COM、ActiveX技術(shù)提供了很好的支持;在數(shù)據(jù)庫編程方面,BCB提供

93、了各種連接方案以及多層分布式數(shù)據(jù)處里等先進(jìn)技術(shù);在Internet和Intranet編程方面,BCB提供了Socket組件和Internet Express、Web Snap等技術(shù)。</p><p>  BCB的另一優(yōu)點(diǎn)是具有極強(qiáng)的兼容能力,它可以編譯連接Turbo C、Borland C++、VC++、Delphi等工具開發(fā)的源代碼或目標(biāo)模塊。</p><p>  4 基于CORBA的銀

94、行ATM機(jī)系統(tǒng)的具體實(shí)現(xiàn)</p><p>  本系統(tǒng)包括兩家銀行和一臺(tái)ATM機(jī)器。每個(gè)銀行可以根據(jù)自己的時(shí)間上下班。ATM機(jī)能夠處理所有銀行的交易。我們還可以根據(jù)需要關(guān)閉或啟動(dòng)每臺(tái)ATM機(jī)。每個(gè)合法客戶都有一個(gè)名字和開戶銀行規(guī)定的個(gè)人身份標(biāo)志號(hào)PIN,用戶可以選定自己希望使用的ATM機(jī)名稱。通過ATM機(jī),客戶可以對(duì)自己的帳戶進(jìn)行查存、支出或存款,也可以對(duì)自己的支票進(jìn)行查詢、提款或撥款。銀行、ATM機(jī)將檢查每一筆交

95、易的可行性,并忠實(shí)記錄每一筆成功的交易??蛻粼贏TM機(jī)上對(duì)自己的賬戶進(jìn)行操作后,ATM服務(wù)器就把這些交易信息分配到客戶所在的銀行服務(wù)器上,然后在銀行服務(wù)器端對(duì)客戶的操作信息進(jìn)行處理,然后返回,最終顯示在ATM機(jī)的顯示屏幕上,讓客戶了解交易結(jié)果。</p><p>  運(yùn)用VisiBroker開發(fā)CORBA程序的一般設(shè)計(jì)步驟如下: ①編寫IDL文件, 然后用開發(fā)工具所帶的編譯程序?qū)DL文件編譯成C++程序。②編寫服

96、務(wù)器端程序, 實(shí)現(xiàn)分布式對(duì)象。③編寫客戶端程序, 調(diào)用服務(wù)器端對(duì)象提供的服務(wù)。</p><p>  4.1 編寫IDL接口</p><p>  與所有CORBA程序一樣,在分析完這個(gè)商務(wù)系統(tǒng)以后,我們首先開始編寫有關(guān)的IDL接口。本系統(tǒng)中共定義了兩個(gè)接口文件,介紹如下:</p><p>  1) xaction.idl,這是在ATM客戶端與ATM服務(wù)器端進(jìn)行數(shù)據(jù)通訊

97、的接口。在這個(gè)接口文件中定義的操作枚舉類型、操作執(zhí)行狀態(tài)枚舉類型、交易結(jié)構(gòu)體以及Server接口實(shí)際上是對(duì)ATM的一種抽象表示。接口定義文件及其說明。:</p><p>  enum EnumAction {//定義三種常見操作</p><p>  balance,//查詢</p><p>  withdraw,//支出</p><p>  

98、deposit,//存款</p><p><b>  };</b></p><p>  enum EnumStatus {//定義操作執(zhí)行狀態(tài)</p><p><b>  OK,//成功</b></p><p>  invalid,//無效</p><p>  complet

99、e,//完成</p><p>  incomplete,未完成</p><p><b>  };</b></p><p>  struct xaction {//定義一個(gè)結(jié)構(gòu)體,記錄一筆交易的有關(guān)內(nèi)容</p><p>  long UserID;//用戶ID</p><p>  long PIN;

100、//用戶個(gè)人身份標(biāo)志號(hào)</p><p>  long account;//帳號(hào)</p><p>  double amount;//操作金額</p><p>  ::EnumAction action;//操作類型,根據(jù)定義,共有三種可能</p><p>  double balance;//現(xiàn)有余額</p><p>

101、  ::EnumStatus status;//操作執(zhí)行狀態(tài)</p><p><b>  };</b></p><p>  interface Server {//定義ATM機(jī)服務(wù)接口</p><p>  exception NoServer {</p><p>  string message;</p>

102、<p><b>  };</b></p><p>  ::xaction HandleTransaction(//定義交易處理函數(shù),返回類型位交易結(jié)構(gòu)體</p><p>  inout ::xaction Transaction//參數(shù)為交易結(jié)構(gòu)體,方向?qū)傩詾閕nout</p><p><b>  ); </b>

103、</p><p>  long Balance();//返回帳戶余額</p><p><b>  };</b></p><p>  2)banking.idl,這是在ATM服務(wù)器端與銀行服務(wù)器端進(jìn)行數(shù)據(jù)通信的接口。這個(gè)接口文件主要用來抽象表達(dá)“銀行”。當(dāng)然,這里只關(guān)心銀行中與ATM機(jī)相關(guān)的服務(wù)。接口定義文件及其說明:</p>&l

104、t;p>  #include "xaction.idl"//引用xaction.idl中定義的內(nèi)容</p><p>  interface BankServer {//銀行中與ATM機(jī)相關(guān)的服務(wù)接口</p><p>  ::xaction HandleTransaction(//定義交易處理函數(shù),返回類型為交易結(jié)構(gòu)體</p><p>  i

105、nout ::xaction Transaction//參數(shù)為交易結(jié)構(gòu)體,方向?qū)傩詾閕nout</p><p><b>  );</b></p><p>  long BankID();//返回所在銀行ID</p><p><b>  };</b></p><p>  module Bank {//

106、銀行模塊</p><p>  interface Account {//定義Account接口</p><p>  float balance();</p><p><b>  };</b></p><p>  interface AccountManager {//定義AccountManager接口</p>

107、;<p>  ::Bank::Account open(</p><p>  in string name</p><p><b>  );</b></p><p><b>  };</b></p><p><b>  };</b></p><

108、p>  在編譯了IDL文件后,會(huì)在客戶端和服務(wù)器端分別生成存根文件。如圖4.1所示??蛻舳薎DL存根(Client IDL Stubs)為對(duì)象服務(wù)器提供靜態(tài)的接口。這些預(yù)編譯的存根定義了客戶如何調(diào)用服務(wù)器上的相應(yīng)服務(wù)。從客戶的角度來看,存根像是一個(gè)本地調(diào)用,它是一個(gè)遠(yuǎn)程服務(wù)器對(duì)象的本地代理。服務(wù)由IDL定義,而客戶和服務(wù)器的存根都由IDL編譯器生成。對(duì)于它所使用的服務(wù)器上的每一個(gè)接口,客戶都必須有一個(gè)IDL存根。服務(wù)器IDL存根(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論