基于CORBA的分布式程序設(shè)計(jì)(入門與提高)_第1頁
基于CORBA的分布式程序設(shè)計(jì)(入門與提高)_第2頁
基于CORBA的分布式程序設(shè)計(jì)(入門與提高)_第3頁
基于CORBA的分布式程序設(shè)計(jì)(入門與提高)_第4頁
基于CORBA的分布式程序設(shè)計(jì)(入門與提高)_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于CORBA的分布式程序設(shè)計(jì) Advanced CORBA Distributed ProgrammingAuthor : 尹峻峰Version: 1.01Date : 2003年5月20日Update : 2003-07-11目 錄引言.3摘錄. 4聲明.5第一章CORBA簡介1.1 CORBA概述1.2 CORBA 的發(fā)展與演化第二章CORBA 的核心32.1基本概念:32.2 CORBA體系結(jié)構(gòu)概述52.3 核心ORB的結(jié)構(gòu)82.3.1 ORB結(jié)構(gòu)92.3.2 主要構(gòu)件122.3.3 系統(tǒng)集成152.3.4 互操作16第三章CORBA程序的編寫過程223.1 開發(fā)CORBA的步驟223

2、.2 CORBA程序的工作流程223.3 工作流程的細(xì)節(jié)223.3.1 Server啟動(dòng)223.3.2 Client調(diào)用233.3.3 調(diào)用完成23第四章CORBA的服務(wù)類型254.1 詳解CORBA事件服務(wù)實(shí)現(xiàn)254.1.1兩種事件數(shù)據(jù)傳送模型254.1.2事件信道254.1.3推模型264.1.4拉模型274.2 Corba互操作的命名服務(wù)29第五章基于CORBA的分布式軟件開發(fā)335.1 分布式技術(shù)的基本原理335.1.1傳統(tǒng)的面向?qū)ο蠓治雠c面向?qū)ο笤O(shè)計(jì)方法335.1.2分布式對(duì)象技術(shù)335.2 分布式軟件構(gòu)件的特征345.3 分布式對(duì)象的服務(wù)345.4 基于CORBA的分布式應(yīng)用345

3、.4.1分布式應(yīng)用程序設(shè)計(jì)的主要問題345.4.2 Corba中IDL的設(shè)計(jì)35第六章應(yīng)用實(shí)例376.1 新一代BOSS系統(tǒng)的CORBA解決方案376.1.1 應(yīng)用背景376.1.2 簡介376.1.3 BOSS系統(tǒng)體系結(jié)構(gòu)386.1.4 開發(fā)新一代BOSS系統(tǒng)396.1.5本系統(tǒng)具有的特點(diǎn)416.2 基于CORBA的聊天軟件42第七章結(jié)束語557.1 CORBA的應(yīng)用方向557.2 CORBA應(yīng)用前景55第八章 附錄578.1 CORBA 版本578.2最新CORBA產(chǎn)品578.3 最新標(biāo)準(zhǔn)CORBA358第九章參考資料61引 言近年來,隨著互聯(lián)網(wǎng)技術(shù)的日益成熟,公眾及商業(yè)企業(yè)正享受著高速、

4、低價(jià)網(wǎng)絡(luò)信息傳輸所帶來的高品質(zhì)數(shù)字生活。但是,由于網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大以及計(jì)算機(jī)軟硬件技術(shù)水平的飛速提高,給傳統(tǒng)的應(yīng)用軟件系統(tǒng)的實(shí)現(xiàn)方式帶來了巨大挑戰(zhàn)。 首先,在企業(yè)級(jí)應(yīng)用中,硬件系統(tǒng)集成商基于性能、價(jià)格、服務(wù)等方面的考慮,通常在同一系統(tǒng)中集成來自不同廠商的硬件設(shè)備、操作系統(tǒng)、數(shù)據(jù)庫平臺(tái)和網(wǎng)絡(luò)協(xié)議等,由此帶來的異構(gòu)性給應(yīng)用軟件的互操作性、兼容性以及平滑升級(jí)能力帶來了嚴(yán)重問題。 另外,隨著基于網(wǎng)絡(luò)的業(yè)務(wù)不斷增多,傳統(tǒng)的客戶/服務(wù)器(C/S)模式的分布式應(yīng)用方式越來越顯示出在運(yùn)行效率、系統(tǒng)網(wǎng)絡(luò)安全性和系統(tǒng)升級(jí)能力等方面的局限性。 為了解決分布式計(jì)算環(huán)境(DCE,Distributed Computi

5、ng Environment)中不同硬件設(shè)備和軟件系統(tǒng)的互聯(lián),增強(qiáng)網(wǎng)絡(luò)間軟件的互操作性,解決傳統(tǒng)分布式計(jì)算模式中的不足等問題,對(duì)象管理組織(OMG)提出了公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(CORBA),以增強(qiáng)軟件系統(tǒng)間的互操作能力,使構(gòu)造靈活的分布式應(yīng)用系統(tǒng)成為可能。 正是基于面向?qū)ο蠹夹g(shù)的發(fā)展和成熟、客戶/服務(wù)器軟件系統(tǒng)模式的普遍應(yīng)用以及集成已有系統(tǒng)等方面的需求,推動(dòng)了CORBA技術(shù)的成熟與發(fā)展。作為面向?qū)ο笙到y(tǒng)的對(duì)象通信的核心,CORBA為當(dāng)今網(wǎng)絡(luò)計(jì)算環(huán)境帶來了真正意義上的互聯(lián)。 摘 要文章主要介紹了CORBA(公用對(duì)象請(qǐng)求代理結(jié)構(gòu))的基本原理和總體框架,以及應(yīng)用CORBA中間件技術(shù)進(jìn)行企業(yè)級(jí)分布

6、式應(yīng)用軟件開發(fā)的基本方法。針對(duì)不斷開展的新數(shù)據(jù)業(yè)務(wù),不斷增長的數(shù)據(jù)量和不斷提高的實(shí)時(shí)性要求,出于增強(qiáng)軟件系統(tǒng)間的互操作能力,構(gòu)造靈活的分布式應(yīng)用系統(tǒng)的考慮,中國移動(dòng)BOSS系統(tǒng)采用了CORBA分布式多層體系構(gòu)架,實(shí)現(xiàn)了整體化、集中化、實(shí)時(shí)化和三層平臺(tái)的設(shè)計(jì)初衷。為了適應(yīng)江蘇網(wǎng)通集成數(shù)據(jù)網(wǎng)綜合業(yè)務(wù)計(jì)費(fèi)與管理系統(tǒng)和BOSS系統(tǒng)的需求,LCMIS系統(tǒng)與佳都公司飛馬系統(tǒng)的接口準(zhǔn)備構(gòu)架在CORBA的服務(wù)體系上。文章中基于CORBA的聊天軟件實(shí)現(xiàn)了不同中間件(CORBA與TUXEDO)之間的通信,使LICMS與飛馬系統(tǒng)的集成成為可能,為兩系統(tǒng)的順利集成打好了技術(shù)基礎(chǔ)。關(guān)鍵詞:CORBA (公用對(duì)象請(qǐng)求代理

7、服務(wù))、分布式、IDL(接口定義語言)、ORB(對(duì)象請(qǐng)求代理)、中間件、BOSS聲 明本文為我在開發(fā)過程中對(duì)CORBA技術(shù)的鉆研與總結(jié),現(xiàn)整理后放在網(wǎng)上,供編程愛好者、軟件工程師(從事分布式方向)學(xué)習(xí)和參考。由于基于CORBA的分布式程序設(shè)計(jì)一直以來都是困擾程序員的復(fù)雜技術(shù),學(xué)習(xí)起來費(fèi)時(shí)費(fèi)力,較難掌握。故將此文檔公開,本著自己的經(jīng)驗(yàn)應(yīng)該讓大家共享的精神,希望您能從中學(xué)到知識(shí)與技術(shù),歡迎與我交流Email:,我會(huì)盡量回答您遇到的問題,并很高興與您探討其他前沿的技術(shù)問題。本文當(dāng)前版本為1.01(對(duì)1.0版的一些不準(zhǔn)確的地方和排版做了修正),應(yīng)廣大網(wǎng)友的要求我會(huì)在短期內(nèi)再次對(duì)

8、其修改,增刪一些內(nèi)容。我愿意給您提供該文的最新版本。真誠的期望大家對(duì)本文提出批評(píng)與建議。版權(quán)聲明如下:(1)讀者可以任意拷貝、修改本書的內(nèi)容,但不可以篡改作者及所屬單位。(2)未經(jīng)作者許可,不得出版或大量印發(fā)本文。 尹峻峰2003年7月10日第一章CORBA簡介1.1 CORBA概述CORBA(The Common Object Request Broker Architecture:通用對(duì)象請(qǐng)求代理結(jié)構(gòu))是一個(gè)分布式的面向?qū)ο髴?yīng)用架構(gòu)規(guī)范,它是由OMG研究組在80年代末提出,在90年代逐步完善,形成現(xiàn)在被軟件行業(yè)普遍認(rèn)可的標(biāo)準(zhǔn)CORBA/IIOP 規(guī)范2.3。CORBA的開發(fā)者OMG最初由3

9、Com、American Airlines、Canon、Data General、HewlettPackard、Philips、 Sun 和Unisys等八家公司在1989年組建,專門從事公共軟件平臺(tái)的研究和行業(yè)標(biāo)準(zhǔn)的制訂, 目前已經(jīng)有800多個(gè)成員單位加入OMG。CORBA是在當(dāng)今快速發(fā)展的軟件與硬件資源的情況下發(fā)展出的一種新技術(shù)。它可以讓分布的應(yīng)用程序完成通信,無論這種應(yīng)用程序是什么廠商生產(chǎn)的,只要符合CORBA標(biāo)準(zhǔn)就可以相互通信。CORBA 1.1于1991年由OMG提出,同時(shí)還提出了接口定義語言Interface Definition Language,IDL)以及能夠讓客戶/服務(wù)器對(duì)

10、象在特定的ORB(對(duì)象請(qǐng)求代理)實(shí)現(xiàn)中進(jìn)行通信。而1994年提出并被采納的CORBA 2.0標(biāo)準(zhǔn)才真正實(shí)現(xiàn)了不同生產(chǎn)廠商間的互操作性。CORBA是對(duì)象管理組織(OMG)在分布式對(duì)象項(xiàng)目方面資助的一個(gè)工業(yè)標(biāo)準(zhǔn)。CORBA只是一個(gè)標(biāo)準(zhǔn),它是為了實(shí)現(xiàn)分布式計(jì)算而引入的。為了說明CORBA在分布計(jì)算上有何特點(diǎn),我們從它與其它幾種分布計(jì)算技術(shù)的比較中進(jìn)行說明。與過去的面向過程的RPC(Remote Procedure Call)不同,CORBA是基于面向?qū)ο蠹夹g(shù)的,它能解決遠(yuǎn)程對(duì)象之間的互操作問題。MicroSoft 的DCOM (Distributed Component Object Model)也

11、是解決這一問題的, 但它基于Windows操作系統(tǒng),盡管到本書編寫時(shí),DCOM已有在其他操作系統(tǒng)如Sun Solaris, Digital Unix, IBM MVS 上的實(shí)現(xiàn),但毫無疑問,只有在微軟的操作系統(tǒng)上才會(huì)實(shí)現(xiàn)得更好。而只有CORBA是真正跨平臺(tái)的,平臺(tái)獨(dú)立性正是CORBA的初衷之一。另一種做到平臺(tái)無關(guān)性的技術(shù)是Java RMI(Remote Method Invocation),但它只能用JAVA實(shí)現(xiàn)。CORBA與此不同,它通過一種叫IDL(Interface Definition Language)的接口定義語言,能做到語言無關(guān),也就是說,任何語言都能制作CORBA組件,而COR

12、BA組件能在任何語言下使用。 因此,可以這樣理解CORBA:CORBA一種異構(gòu)平臺(tái)下的語言無關(guān)的對(duì)象互操作模型。即,CORBA的設(shè)計(jì)是獨(dú)立于平臺(tái)和語言的,因此CORBA可以在任何平臺(tái)上運(yùn)行,可以定位在網(wǎng)絡(luò)的任何地方,能夠使用任何有IDL(Interface Definition Language )映射的語言。1.2 CORBA 的發(fā)展與演化CORBA經(jīng)過近十年的發(fā)展,已逐步走向成熟,并成功地應(yīng)用在我國許多大型的軟件系統(tǒng)中,由此產(chǎn)生了對(duì)掌握CORBA技術(shù)的軟件開發(fā)人員的大量需求。在此,我們應(yīng)廣大讀者的要求組織了本次講座。 本系列講座分別介紹了CORBA的基本思想、體系結(jié)構(gòu)以及CORBA應(yīng)用程序

13、的設(shè)計(jì)與開發(fā),希望借此能幫助廣大軟件開發(fā)、設(shè)計(jì)人員,開闊思路,加深對(duì)CORBA的理解,進(jìn)而真正掌握這門技術(shù),并能在實(shí)際工作中加以靈活運(yùn)用,更高效、迅速地開發(fā)出更強(qiáng)壯的軟件系統(tǒng),最終促進(jìn)我國軟件事業(yè)的蓬勃發(fā)展。 CORBA的發(fā)展歷程 1. 對(duì)象管理組織(OMG)簡介 OMG成立于1989年,作為一個(gè)非營利性組織,集中致力于開發(fā)在技術(shù)上具有先進(jìn)性、在商業(yè)上具有可行性并且獨(dú)立于廠商的軟件互聯(lián)規(guī)范,推廣面向?qū)ο竽P图夹g(shù),增強(qiáng)軟件的可移植性(Portability)、可重用性(Reusability)和互操作性(Interoperability)。 該組織成立之初,成員包括Unisys、Sun、Cann

14、on、Hewlett-Packard、Philips等在業(yè)界享有聲譽(yù)的軟硬件廠商,目前該組織擁有800多家成員。 2. CORBA主要版本的發(fā)展歷程 1990年11月,OMG發(fā)表對(duì)象管理體系指南,初步闡明了CORBA的思想; 1991年10月,OMG推出1.0版,其中定義了接口定義語言(IDL)、對(duì)象管理模型以及基于動(dòng)態(tài)請(qǐng)求的API和接口倉庫等內(nèi)容; 1991年12月,OMG推出了CORBA 1.1版,在澄清了1.0版中存在的二義性的基礎(chǔ)上,引入了對(duì)象適配器的概念; 1996年8月,OMG基于以前的升級(jí)版本,完成了2.0版的開發(fā),該版本中重要的內(nèi)容是對(duì)象請(qǐng)求代理間協(xié)議(IIOP,Interne

15、t Inter-ORB Protocol)的引入,用以實(shí)現(xiàn)不同廠商的ORB真正意義上的互通; 1998年9月,OMG發(fā)表了CORBA 2.3版,增加了支持CORBA對(duì)象的異步實(shí)時(shí)傳輸、服務(wù)質(zhì)量規(guī)范等內(nèi)容。目前,宣布支持CORBA 2.3規(guī)范的中間件廠商包括Inprise (Borland)、Iona、BEA System等著名的CORBA產(chǎn)品生產(chǎn)商。 2000年10月,OMG發(fā)布的CORBA 2.4版具備CORBA 3的雛形,包括:QoS Specification, Asynchronous Messaging, Minimum CORBA, Real-Time CORBA, CORBACo

16、mponents, Notification Services, Firewall Specification等。 2001年12月,OMG推出CORBA2.6版。 2002年8月,OMG發(fā)布了CORBA 3標(biāo)準(zhǔn)規(guī)范,到本文發(fā)布(2003-7-4)為止,CORBA3版規(guī)范仍是最新的版本。因CORBA 3在之前的CORBA版本上新增了大量內(nèi)容,故本文對(duì)CORBA 3做了詳細(xì)介紹,具體可參看附錄8.3最新標(biāo)準(zhǔn)CORBA 3。第二章CORBA 的核心2.1基本概念1、ORB(Object Request Broker)對(duì)象請(qǐng)求代理:它作為一個(gè)“軟件總線”來連接網(wǎng)絡(luò)上的不同對(duì)象,提供對(duì)象的定位和方法調(diào)

17、用,它是CORBA實(shí)現(xiàn)的關(guān)鍵。 2、OA(Object Adapter)對(duì)象適配器:用于構(gòu)造對(duì)象實(shí)現(xiàn)與ORB之間的接口。它給框架發(fā)送方法,調(diào)用并且支持服務(wù)器對(duì)象的生命周期(如:對(duì)象的創(chuàng)建和刪除)。 3、BOA(Basic Object Adapter)基本對(duì)象適配器:負(fù)責(zé)激活對(duì)象,即當(dāng)客戶請(qǐng)求對(duì)象的服務(wù)時(shí),激活對(duì)象實(shí)現(xiàn)的能力。 4、POA(Portable Object Adapter)可移植對(duì)象適配器:是BOA的替代方式,提供大量可擴(kuò)展的接口,來處理一些對(duì)于BOA來說不合理的要求。特性: (1) 支持透明激活對(duì)象。 (2) 允許單個(gè)服務(wù)者支持很多對(duì)象標(biāo)識(shí)。 (3) 允許一個(gè)服務(wù)者上有多個(gè)PO

18、A,每個(gè)都有自己的一套管理策略。 (4) 將對(duì)不存在服務(wù)者的請(qǐng)求委托給默認(rèn)服務(wù)者,或者向服務(wù)者的管理器請(qǐng)求一個(gè)合適的服務(wù)者。 5、DII(Dynamic Invocation Interface)動(dòng)態(tài)調(diào)用接口:位于客戶端,發(fā)送客戶端的調(diào)用請(qǐng)求。6、DSI(Dynamic Skeleton Interface)動(dòng)態(tài)框架接口,位于服務(wù)器端,傳送客戶端的調(diào)用請(qǐng)求。7、IDL(Interface Definition Language)接口定義語言:定義客戶和服務(wù)器之間的靜態(tài)接口,通過編譯器生成客戶存根、服務(wù)器框架,以及根據(jù)支持的語言映射,自動(dòng)生成來自一個(gè)CORBA IDL的代碼。目前支持的語言映射包

19、括:Java,C+,Ada,SmallTalk和COBOL等。 CORBA IDL是由對(duì)象管理組織(Object Management Group)為定義所有的CORBA界面而制定的。這里提供一個(gè)IDL的瀏覽,讓你能夠建立IDL文件定義大多數(shù)的對(duì)象。最新的IDL完整定義見OMG的Web站點(diǎn)()。你可以用IDL定義types(類型),constans(常量)和interfaces(界面)。這與C+中定義類型、常量和類相似。IDL是定義界面和類型的語言,它沒有供你編寫實(shí)現(xiàn)部分的元素。界面定義在IDL文件中的對(duì)象必須實(shí)現(xiàn)在分離的實(shí)現(xiàn)單元中。IDL文件的標(biāo)識(shí)符包括英文字母、數(shù)字和

20、下劃線,但不可以用下劃線開頭。IDL是大小寫敏感的。然而,避免使用下劃線通常是個(gè)好主意,因?yàn)閷DL翻譯到不支持下劃線的語言時(shí)會(huì)出問題。類似的,僅用大小寫區(qū)標(biāo)識(shí)符也不好,這在大小寫不敏感的語言中會(huì)引起問題。8、SII(Static Invocation Interface)靜態(tài)調(diào)用接口:位于客戶端,客戶與ORB之間的靜態(tài)接口。 9、SSI(Static Skeleton Interface)靜態(tài)框架接口:位于服務(wù)器端,ORB與服務(wù)器之間的靜態(tài)接口。 10、stub 存根:位于客戶端,由IDL編譯器編譯IDL文件生成,其功能類似一個(gè)客戶代理。 11、skeleton 框架:位于服務(wù)器端,由IDL

21、編譯器編譯IDL文件生成,其功能是負(fù)責(zé)發(fā)送一個(gè)操作調(diào)用給能實(shí)現(xiàn)此操作的服務(wù)。 12、IR(Interface Repository)接口存儲(chǔ)庫:存儲(chǔ)運(yùn)行時(shí)所需要的IDL規(guī)范。 13、IMR(Implementation Repository)實(shí)現(xiàn)存儲(chǔ)庫:存儲(chǔ)對(duì)象實(shí)現(xiàn)(一個(gè)服務(wù)器)的詳細(xì)信息(即一個(gè)執(zhí)行程序需要被放置在哪一個(gè)服務(wù)器上)。 14、GIOP(General Inter-ORB Protocol)通用ORB之間的協(xié)議:定義了一個(gè)不同ORB之間的接口。 GIOP 是 CORBA 方法調(diào)用的核心部分。GIOP 不基于任何特別的網(wǎng)絡(luò)協(xié)議,如 IPX 或 TCP/IP。為了確?;ゲ僮餍?,OMG

22、 必須將 GIOP 定義在所有供應(yīng)商都支持的特定傳輸之上。如果有詳細(xì)和簡潔的消息規(guī)范,則不會(huì)提供互操作性,因?yàn)樗泄?yīng)商使用不同的傳送機(jī)制來實(shí)現(xiàn)這個(gè)互操作性。15、IIOP(Internet Inter-ORB Protocol)因特網(wǎng)ORB之間的協(xié)議:IIOP把GIOP消息數(shù)據(jù)映射為TCP/IP連接行為和輸入/輸出流讀/寫。OMG 在最廣泛使用的通信傳輸平臺(tái) - TCP/IP 上標(biāo)準(zhǔn)化 GIOP。GIOP 加 TCP/IP 等于 IIOP!就這么簡單。注意:IIOP不是完全從GIOP分離出來的協(xié)議,它更像是GIOP的一個(gè)實(shí)例。 16、IOR(Interoperable Object Refe

23、rence)可操作對(duì)象引用:它包括所有客戶與服務(wù)器聯(lián)系所需的各種信息(包括CORBA服務(wù)器對(duì)象進(jìn)程的IP地址和TCP端口等),ORB將通過它產(chǎn)生在網(wǎng)絡(luò)上唯一標(biāo)識(shí)那個(gè)將被分布對(duì)象的消息。 17、ORBAservices CORBA服務(wù):在ORB級(jí)別之上,定義了大多數(shù)分布式企業(yè)對(duì)象利用的公共服務(wù)。 如: 命名服務(wù) 交易對(duì)象服務(wù) 關(guān)系服務(wù) 生命周期服務(wù) 外表化服務(wù) 查詢服務(wù) 事件服務(wù) 許可服務(wù) 時(shí)間服務(wù) 對(duì)象事務(wù)服務(wù) 并發(fā)服務(wù) 安全服務(wù) 收集服務(wù)特性服務(wù)持久對(duì)象服務(wù)通知服務(wù)增強(qiáng)時(shí)間視圖18、CORBA Facilities CORBA工廠:位于CORBA Services之上,定義了更高層次的分布式

24、服務(wù)與框架。如:打印、電子郵件、文檔管理等。下圖是CORBA的一張框架圖:圖2-1 CORBA框架圖2.2 CORBA體系結(jié)構(gòu)概述CORBA規(guī)范充分利用了現(xiàn)今軟件技術(shù)發(fā)展的最新成果,在基于網(wǎng)絡(luò)的分布式應(yīng)用環(huán)境下實(shí)現(xiàn)應(yīng)用軟件的集成,使得面向?qū)ο蟮能浖诜植肌悩?gòu)環(huán)境下實(shí)現(xiàn)可重用、可移植和互操作。其特點(diǎn)可以總結(jié)為如下幾個(gè)方面: CORBA的核心是一套標(biāo)準(zhǔn)的語言、接口和協(xié)議,以支持異構(gòu)分布應(yīng)用程序間的互操作性及獨(dú)立于平臺(tái)和編程語言的對(duì)象重用。 引入中間件(Middleware)作為事務(wù)代理,完成客戶機(jī)(Client)向服務(wù)對(duì)象方(Server)提出的業(yè)務(wù)請(qǐng)求(引入中間件概念后分布計(jì)算模式如圖2-2所

25、示); 圖2-2 引入中間件后客戶機(jī)與服務(wù)器之間的關(guān)系 2. 實(shí)現(xiàn)客戶與服務(wù)對(duì)象的完全分離,客戶不再需要了解服務(wù)對(duì)象的實(shí)現(xiàn)過程以及具體位置(參見圖2所示的CORBA系統(tǒng)體系結(jié)構(gòu)圖); 3. 提供軟總線機(jī)制,使得在任何環(huán)境下、采用任何語言開發(fā)的軟件只要符合接口規(guī)范的定義,均能夠集成到分布式系統(tǒng)中; 4. CORBA規(guī)范軟件系統(tǒng)采用面向?qū)ο蟮能浖?shí)現(xiàn)方法開發(fā)應(yīng)用系統(tǒng),實(shí)現(xiàn)對(duì)象內(nèi)部細(xì)節(jié)的完整封裝,保留對(duì)象方法的對(duì)外接口定義。 在以上特點(diǎn)中,最突出的是中間件的引入, 在CORBA系統(tǒng)中稱為對(duì)象請(qǐng)求代理(ORB,Object Request Broker)和采用面向?qū)ο蟮拈_發(fā)模式。 對(duì)象模型是應(yīng)用開發(fā)人

26、員對(duì)客觀事物屬性和功能的具體抽象。由于CORBA使用了對(duì)象模型,將CORBA系統(tǒng)中所有的應(yīng)用看成是對(duì)象及相關(guān)操作的集合,因此通過對(duì)象請(qǐng)求代理(ORB),使CORBA系統(tǒng)中分布在網(wǎng)絡(luò)中應(yīng)用對(duì)象的獲取只取決于網(wǎng)絡(luò)的暢通性和服務(wù)對(duì)象特征獲取的準(zhǔn)確程度,而與對(duì)象的位置以及對(duì)象所處的設(shè)備環(huán)境無關(guān)。 圖2-3 CORBA系統(tǒng)體系結(jié)構(gòu)圖 CORBA體系的主要內(nèi)容包括以下幾部分: (1) 對(duì)象請(qǐng)求代理ORB(Object Request Broker):負(fù)責(zé)對(duì)象在分布環(huán)境中透明地收發(fā)請(qǐng)求和響應(yīng),它是構(gòu)建分布對(duì)象應(yīng)用、在異構(gòu)或同構(gòu)環(huán)境下實(shí)現(xiàn)應(yīng)用間互操作的基礎(chǔ)。 (2) 對(duì)象服務(wù)(Object Services)

27、:為使用和實(shí)現(xiàn)對(duì)象而提供的基本對(duì)象集合,這些服務(wù)應(yīng)獨(dú)立于應(yīng)用領(lǐng)域。主要的CORBA服務(wù)有:名錄服務(wù)(Naming Service)、事件服務(wù)(Event Service)、生命周期服務(wù)(Life Cycle Service)、關(guān)系服務(wù)(Relationship Service)、事務(wù)服務(wù)(Transaction Service)等。這些服務(wù)幾乎包括分布系統(tǒng)和面向?qū)ο笙到y(tǒng)的各個(gè)方面,每個(gè)組成部分都非常復(fù)雜。 (3) 公共設(shè)施(Common Facilitites):向終端用戶提供一組共享服務(wù)接口,例如系統(tǒng)管理、組合文檔和電子郵件等。 (4) 應(yīng)用接口(Application Interfaces

28、):由銷售商提供的可控制其接口的產(chǎn)品,相應(yīng)于傳統(tǒng)的應(yīng)用層表示,處于參考模型的最高層。 (5) 領(lǐng)域接口(Domain Interfaces):為應(yīng)用領(lǐng)域服務(wù)而提供的接口。如OMG組織為PDM系統(tǒng)制定的規(guī)范。 CORBA的產(chǎn)生有其特定的背景,它是在面向?qū)ο蟮募夹g(shù)興起,客戶/服務(wù)器模式普遍得到應(yīng)用的前提下,為屏蔽通信和實(shí)現(xiàn)細(xì)節(jié)的需求,繼承已有系統(tǒng),消除“孤島”現(xiàn)象而產(chǎn)生的。他彌補(bǔ)了傳統(tǒng)分布處理系統(tǒng)的不足(如RPC等),具有很多新的特色: (1) 引入代理(Broker)概念。代理起到如下作用:完成對(duì)客戶方提出的抽象服務(wù)請(qǐng)求的映射;自動(dòng)發(fā)現(xiàn)和找到服務(wù)器;自動(dòng)設(shè)定路由,實(shí)現(xiàn)服務(wù)方程序的執(zhí)行。 (2)

29、客戶方程序與服務(wù)方程序完全分離。用傳統(tǒng)的客戶/服務(wù)器方式有很大的不同,客戶將不再與服務(wù)方發(fā)生直接的聯(lián)系,而僅需要與代理發(fā)生聯(lián)系,客戶與服務(wù)器方都可方便升級(jí)。 (3) 提供“軟件總線”機(jī)制。任何應(yīng)用系統(tǒng)只要提供符合CORBA系統(tǒng)定義的一組接口規(guī)范,就可以方便的集成到CORBA系統(tǒng)中,這個(gè)接口規(guī)范獨(dú)立于任何實(shí)現(xiàn)語言和環(huán)境。如此,客戶應(yīng)用于服務(wù)對(duì)象之間可以透明地交互運(yùn)行,實(shí)現(xiàn)應(yīng)用軟件在“軟件總線”上的“即插即用”。 (4) 分層的設(shè)計(jì)原則和實(shí)現(xiàn)方式。CORBA系統(tǒng)的底層核心是一個(gè)精練的系統(tǒng),各種復(fù)雜系統(tǒng)和應(yīng)用可以由核心擴(kuò)展和延伸。 CORBA技術(shù)是先進(jìn)技術(shù)發(fā)展的結(jié)果,它將面向?qū)ο蟮母拍钊嗪系椒植加?jì)算

30、中,使得CORBA規(guī)范成為開放的、基于客戶/服務(wù)器模式的、面向?qū)ο蟮姆植加?jì)算的工業(yè)標(biāo)準(zhǔn)。 2.3 核心ORB的結(jié)構(gòu)ORB是CORBA規(guī)范中的主要核心,下面重點(diǎn)分析一下ORB的結(jié)構(gòu)。ORB是一個(gè)中間件(middleware),它可以建立對(duì)象之間的client/server關(guān)系。通過ORB,一個(gè)client可以透明的引用同一臺(tái)機(jī)器上或網(wǎng)絡(luò)上的一個(gè)server對(duì)象的方法。ORB解釋該調(diào)用并負(fù)責(zé)查找一個(gè)實(shí)現(xiàn)該請(qǐng)求的對(duì)象,找到后,把參數(shù)傳給該對(duì)象,調(diào)用它的方法,最后返回結(jié)果。client并不清楚該對(duì)象的位置,它的編程語言,它的操作系統(tǒng)以及其它不是對(duì)象接口的系統(tǒng)信息。 ORB能實(shí)現(xiàn)分布環(huán)境中位于不同機(jī)器上

31、的應(yīng)用之間的互操作以及多對(duì)象系統(tǒng)之間的無縫連接。 在傳統(tǒng)的client/server)應(yīng)用中,開發(fā)者使用自己設(shè)計(jì)的標(biāo)準(zhǔn)或通用標(biāo)準(zhǔn)來定義設(shè)備之間的協(xié)議。協(xié)議定義與實(shí)現(xiàn)的語言、網(wǎng)絡(luò)傳輸及其它因素有關(guān)。ORB簡化了這一過程,它使用IDL來定義應(yīng)用接口之間的協(xié)議。ORB允許程序員選擇通用操作系統(tǒng),運(yùn)行環(huán)境和編程語言。更重要的是,它能集成現(xiàn)存元素。 2.3.1 ORB結(jié)構(gòu) 圖 2-4 通過ORB傳遞請(qǐng)求 圖2-4顯示了一個(gè)client向?qū)ο髮?shí)現(xiàn)發(fā)送一個(gè)請(qǐng)求。Client是一個(gè)想對(duì)對(duì)象進(jìn)行操作的一個(gè)實(shí)體,對(duì)象實(shí)體是實(shí)現(xiàn)對(duì)象的代碼和數(shù)據(jù)。ORB負(fù)責(zé)根據(jù)一個(gè)請(qǐng)求來定位一個(gè)對(duì)象,安排對(duì)象實(shí)現(xiàn)準(zhǔn)備接受請(qǐng)求,與請(qǐng)求

32、的數(shù)據(jù)通訊。Client的接口與對(duì)象的位置完全,實(shí)現(xiàn)對(duì)象的語言及其它不在對(duì)象接口反映出來的方面等無關(guān)。 圖2-5顯示了單個(gè)ORB的結(jié)構(gòu)。用斜條文的矩形框表示ORB的接口, 箭頭表示調(diào)用ORB或ORB使用接口把信息向上傳遞。 圖 2-5 ORB接口結(jié)構(gòu) Clinet使用Dynamic Invocation interface (與目標(biāo)對(duì)象的接口無關(guān))或OMG IDL stub (與目標(biāo)對(duì)象接口有關(guān)的stub)來發(fā)出請(qǐng)求。由于某種原因,Client也可以直接與ORB聯(lián)系。對(duì)象實(shí)現(xiàn)使用OMG IDL生成的skeleton或動(dòng)態(tài) skeleton以向上傳送(up-call)的方式接受請(qǐng)求。對(duì)象實(shí)現(xiàn)也可

33、以調(diào)用Object Adapter和ORB??梢杂脙煞N方式來定義對(duì)象接口:一是用OMG Interface Definition Language (OMG IDL)來定義接口。該語言根據(jù)可能對(duì)對(duì)象進(jìn)行的操作和這些操作使用的參數(shù)來定義對(duì)象類型。第二種方法是,把接口(interface)放入Interface Repository service中; 該服務(wù)把接口中的元素描述成一個(gè)對(duì)象。任何能實(shí)現(xiàn)ORB的軟件中,Interface Definition Language (可能根據(jù)文檔的內(nèi)容而改變)和Interface Repository具有相同的作用。一個(gè)client要使用Object Re

34、ference完成請(qǐng)求,它必須知道對(duì)象的類型的及具體的操作。Client初始化請(qǐng)求有兩種方法,一是通過調(diào)用目標(biāo)對(duì)象的stub routines,二是動(dòng)態(tài)的創(chuàng)造請(qǐng)求(如圖2-6所示)。 圖 2-6 Client使用Stub 或Dynamic Invocation Interface 不論使用Stub還是Dynamic Invocation Interface來發(fā)出請(qǐng)求具有相同的語義,信息的接收者不能分辨出該請(qǐng)求是使用哪種方法來傳遞的。ORB確定適當(dāng)?shù)膶?shí)現(xiàn)代碼,傳遞參數(shù),通過IDL skeleton或dynamic skeleton (如圖Figure 2-7 所示)把控制傳給Object Imp

35、lementation。每一個(gè)接口和object adapter 使用不同的Skeletons。為了完成請(qǐng)求,object implementation 可能通過Object Adapter 使用來自O(shè)RB的服務(wù)。當(dāng)完成請(qǐng)求后,控制和輸出結(jié)果返回給client。 圖 2-7 Object Implementation 接受請(qǐng)求 Object Implementation選擇使用何種Object Adapter。它是根據(jù)Object Implementation 需要服務(wù)的種類來確定的。圖2-7 顯示了clients和object implementations如何使用接口和實(shí)現(xiàn)信息。用OMG

36、IDL或Interface Repository來定義接口;該定義用于產(chǎn)生client Stubs和object implementation Skeletons。 圖 2-8 Interface 和 Implementation Repositories 在安裝時(shí)把object implementation 信息放入Implementation Repository中,以備請(qǐng)求使用。 2.3.2主要構(gòu)件 圖2-9CORBA ORB結(jié)構(gòu) Object Implementation(對(duì)象實(shí)現(xiàn)): 它定義了實(shí)現(xiàn)一個(gè)CORBA IDL接口的操作。它可以用各種語言來寫,如C, C+, Java, Sm

37、alltalk和Ada。 圖2-10 典型的Object Implementation 結(jié)構(gòu) Client(客戶): 這是一個(gè)程序?qū)嶓w,它調(diào)用了某一個(gè)對(duì)象實(shí)現(xiàn)中操作。對(duì)調(diào)用這來講,訪問遠(yuǎn)程對(duì)象server應(yīng)該是透明的。它應(yīng)該和調(diào)用對(duì)象中的方法一樣簡單,如,obj-op(args)。 Client只能根據(jù)對(duì)象的接口了解對(duì)象的邏輯結(jié)構(gòu),雖然,我們一般都把client看作是一個(gè)程序或一個(gè)進(jìn)程,但是,知道一個(gè)client都是某一個(gè)對(duì)象有關(guān)的。例如,一個(gè)對(duì)象的實(shí)現(xiàn)可能是其他對(duì)象的client。 圖 2-11 典型的Client結(jié)構(gòu) Client通過語言映射(language mapping)來使用對(duì)象和

38、ORB 接口。當(dāng)這種映射關(guān)系改變時(shí),不需要改變Client。Client不需要了解對(duì)象的實(shí)現(xiàn)方式,對(duì)象適配器及ORB。 Object Request Broker(ORB): ORB提供了一種機(jī)制,能實(shí)現(xiàn)client請(qǐng)求與目標(biāo)對(duì)象實(shí)現(xiàn)之間的透明通信。它使得client請(qǐng)求就象一個(gè)本地過程調(diào)用一樣。當(dāng)一個(gè)client引用一個(gè)操作,ORB負(fù)責(zé)找到對(duì)象實(shí)現(xiàn),如果需要?jiǎng)t透明的激活它,然后把該請(qǐng)求遞交給該對(duì)象,最后返回應(yīng)答給調(diào)用者。實(shí)現(xiàn)時(shí),可以把ORB不作為單個(gè)成分,但它只能由它的接口來定義。任何ORB實(shí)現(xiàn)方式提供的接口都是可以接受的??梢园呀涌谥械牟僮鞣譃槿悾?1. 對(duì)于所有的ORB實(shí)現(xiàn)都一樣的操作

39、 2. 特定類型對(duì)象的操作 3. 與對(duì)象實(shí)現(xiàn)種特定類別有關(guān)的操作 不同的ORB有不同的實(shí)現(xiàn)方式,但都包括有:IDL 編譯器, 倉庫(repositories),各種Object Adapters,給client提供各種服務(wù)集,具有不同屬性的對(duì)象實(shí)現(xiàn)等。 現(xiàn)在有各種不同的ORB實(shí)現(xiàn)。一個(gè)client可以同時(shí)訪問兩個(gè)由不同ORB實(shí)現(xiàn)管理的對(duì)象引用(object references)當(dāng)這兩個(gè)ORB需要一起工作時(shí),它們能區(qū)分出各自的對(duì)象引用。Client不需要對(duì)此負(fù)責(zé)。ORB Core是ORB的一個(gè)組成部分,它提供對(duì)象的基本表示和與請(qǐng)求的通信。 有四種不同類型的ORB: 1Client- and I

40、mplementation-resident ORB 2Server-based ORB 3System-based ORB 4Library-based ORB ORB Interface: 一個(gè)ORB是一個(gè)邏輯實(shí)體(logical entity),它可以用各種方法實(shí)現(xiàn)(如一個(gè)或多個(gè)過程,或一個(gè)libraries集合)。為了減輕編寫程序的困難,CORBA規(guī)范定義了一個(gè)抽象的接口。該接口提供各種幫助函數(shù)。 CORBA IDL stubs and skeletons: 它相當(dāng)于client、server應(yīng)用程序和ORB之間的“膠水”。由CORBA IDL編譯器自動(dòng)實(shí)現(xiàn)CORBA IDL定義與目標(biāo)

41、編程語言之間的轉(zhuǎn)換。 使用編譯器可以減少client stub和server skeletons之間的潛在矛盾。 Dynamic Invocation Interface(DII): 該接口允許client直接調(diào)用ORB所提供得最底層的請(qǐng)求機(jī)制。應(yīng)用程序使用DII動(dòng)態(tài)地把請(qǐng)求傳給對(duì)象而不需要IDL接口(包括特定stub)。與IDL stub(它只允許RPC模式的請(qǐng)求)不同,DII也允許clients使用無塊的延遲同步調(diào)用(non-blocking deferred synchronous)(發(fā)送操作是獨(dú)立的)和單向調(diào)用(send-only)。 Dynamic Skeleton Interfac

42、e(DSI): 與client端的DII類似的,位于server端的接口。DSI允許ORB把請(qǐng)求發(fā)送給對(duì)象實(shí)現(xiàn),該對(duì)象實(shí)現(xiàn)不包含編譯時(shí)所需要的類型。發(fā)出請(qǐng)求的client不知道該實(shí)現(xiàn)是使用指定類型的IDL skeletons 還是使用動(dòng)態(tài)的skeletons。 Object Adapter: 它幫助ORB把請(qǐng)求傳給對(duì)象并激活該對(duì)象。更重要的是一個(gè)object adapter總是與一個(gè)對(duì)象實(shí)現(xiàn)(object implementations)聯(lián)系的。Object adapter可以被定義來支持特定的對(duì)象實(shí)現(xiàn)類型(如OODBobject adapters用于持續(xù)對(duì)象(persistence)而lib

43、rary object adapters 用于非遠(yuǎn)程對(duì)象)。 圖2-12 典型的Object Adapter結(jié)構(gòu) 它的作用有: (1)產(chǎn)生和解釋對(duì)象引用 (2)Method調(diào)用 (3)相互作用的安全性 (4)對(duì)象和激活實(shí)現(xiàn)及撤銷實(shí)現(xiàn) (5)把對(duì)象引用映射到相應(yīng)的對(duì)象實(shí)現(xiàn) (6)注冊(cè)對(duì)象實(shí)現(xiàn) 2.3.3 系統(tǒng)集成 圖2-13 不同對(duì)象系統(tǒng)集成的方法 2.3.4 互操作 ORB 的互操作性提供了種易于理解的、方便的途徑來支持網(wǎng)絡(luò)中的對(duì)象,這些對(duì)象由多樣的,不同種類的(與CORBA 兼容的)ORB管理。由于CORBA中的元素能以很多方式結(jié)合在一起以滿足各種不同的需要,因此取得“interORBabi

44、lity”的方法很方便。 支持互操作的元素 能支持互操作的元素有:: 1. ORB 互操作結(jié)構(gòu) 2. Inter-ORB 橋支持(bridge support) 3. General and Internet inter-ORB Protocols (GIOPs and IIOPs) 而且,該結(jié)構(gòu)還支持environment-specific inter-ORB protocols (ESIOP),它能優(yōu)化特定領(lǐng)域如DCE) ORB 互操作結(jié)構(gòu) 該結(jié)構(gòu)引入了ORB域中immediate and mediated bridging(直接橋接和間接橋接)這兩個(gè)概念。IIOP是廣域網(wǎng)橋接的基礎(chǔ)。而i

45、nter-ORB 橋接既能用于直接橋接,也能用于“半橋接”,使用半橋接能搭建用于間接橋接。使用這些橋接技術(shù),ORB能互操作,而不需要知道彼此的實(shí)現(xiàn)細(xì)節(jié),如,使用何種特殊的IPC或協(xié)議(如ESIOP)來實(shí)現(xiàn)CORBA規(guī)范。 使用能用IIOP通訊的“半橋接”, 兩個(gè)或多個(gè)ORB能相互橋接在一起。這種方法既能用于單機(jī)ORB,也能用于網(wǎng)絡(luò)ORB如ESIOP。IIOP也能用于實(shí)現(xiàn)ORB中的內(nèi)部消息機(jī)制。 Inter-ORB Bridge Support 互操作結(jié)構(gòu)明確指出ORB中不同域的作用,這些域包括對(duì)象引用域(object reference domain),類型域(type domain),安全域

46、(safety domain)(如the scope of a Principal identifier), 事物域(transaction domain)等等。 當(dāng)兩個(gè)ORB位于同一個(gè)域中,它們能直接通訊,多數(shù)情況下,這是一個(gè)很好的方法。但由于各個(gè)機(jī)構(gòu)需要建造各自控制域,因此,這種方法不常使用。當(dāng)需要的信息離開它的域時(shí),就必須使用橋接來傳遞信息。橋接的作用是確保信息能完整的從一個(gè)ORB映射到另一個(gè)ORB。inter-ORB 橋接支持也能提供與非CORBA系統(tǒng)(如Microsofts Component Object Model (COM)之間的互操作。 General Inter-ORB P

47、rotocol (GIOP) General Inter-ORB Protocol (GIOP) 元件提供了一個(gè)標(biāo)準(zhǔn)傳輸語法(低層數(shù)據(jù)表示方法)和ORB之間通信的信息格式集。GIOP只能用在ORB與ORB之間,而且,只能在符合理想條件的面向連接傳輸協(xié)議中使用。它不需要使用更高一層的RPC機(jī)制。這個(gè)協(xié)議是簡單的(盡可能簡單,但不是簡單化),可升級(jí)的,使用方便。它被設(shè)計(jì)為可移動(dòng)的、高效能的表現(xiàn)、較少依靠其它的低層傳輸協(xié)議。當(dāng)然,由于不同傳輸使用不同版本的GIOP,它們可能不能直接協(xié)作工作,但它能很容易的連接網(wǎng)絡(luò)域。 Internet Inter-ORB Protocol (IIOP) Intern

48、et Inter-ORB Protocol (IIOP) 元件指出如何通過TCP/IP連接交換GIOP信息。IIOP為Internet提供了一個(gè)標(biāo)準(zhǔn)的協(xié)作工作協(xié)議,它使兼容的ORB能基于現(xiàn)在流行的協(xié)議和產(chǎn)品進(jìn)行“out of the box”方式的協(xié)作工作。它也能被用于兩個(gè)半橋(half-bridges )之間的協(xié)議。該協(xié)議能用于任何ORB與IP(Internet Protocol)域之間的協(xié)作工作,除非ORB選擇了特殊的協(xié)議。這時(shí),它是TCP/IP環(huán)境下基本的inter-ORB 協(xié)議,最普遍的傳輸層。 IIOP與GIOP的關(guān)系就象特特殊語言與OMG IDL之間的關(guān)系;GIOP能被映射到不同層

49、,它能指定協(xié)議。就象IDL不能見招完整的程序一樣,GIOP 本身也不能提供完整的協(xié)作工作。IIOP和不同傳輸層上的其它相似映射,實(shí)現(xiàn)抽象的GIOP定義,如圖2-14所示。 圖 2-14 Inter-ORB Protocol 關(guān)系 Environment-Specific Inter-ORB Protocols (ESIOPs) 它為使用Environment-Specific Inter-ORB Protocols (ESIOPs)的條件提出了解決方案。 Domain(域) 域把一個(gè)系統(tǒng)中的元素按照某種特征分成幾個(gè)部分。在本結(jié)構(gòu)中,域是一個(gè)范圍,一個(gè)對(duì)象的集合,對(duì)象是域的成員,這些成員有共同的

50、特征。可以把域看作是一個(gè)對(duì)象,它本生也可能是其它域的一個(gè)成員。 圖2-15 各種類型的域 CORBA中的域分為以下幾個(gè)部分: Referencing domain 對(duì)象引用范圍 Representation domain 信息傳輸語法和協(xié)議范圍 Network addressing domain 網(wǎng)絡(luò)地址范圍 Network connectivity domain 可能的網(wǎng)絡(luò)信息范圍 Security domain 特殊安全策略 Type domain 特殊標(biāo)識(shí)符范圍 Transaction domain 特定事物服務(wù)范圍 有兩種方式使用域:一是嵌入,一個(gè)域包括在另一個(gè)域中;二是聯(lián)合,兩個(gè)域聯(lián)

51、合起來使用。當(dāng)兩個(gè)域的邊界上發(fā)生交互作用時(shí),就需要使用一種映射機(jī)制(如橋接)在邊界處傳遞相關(guān)元素。這里有兩種方法,一是間接橋接(mediated bridging),一是直接橋接(immediate bridging)。 圖2-16 兩種橋接技術(shù), 都用于兩個(gè)域之間 1. Mediated Bridging 使用間接橋接時(shí),在每一個(gè)域的邊界上,以一種協(xié)商的、通用的格式來傳遞與域有關(guān)的元素??梢詮囊韵聨讉€(gè)方面來觀察間接橋接: (1)公共格式的應(yīng)用范圍可能與兩個(gè)ORB/域的私下約定不同。 (2)可能有多個(gè)公共格式,每一種格式對(duì)應(yīng)一個(gè)應(yīng)用目的。 (3)如果有多個(gè)可供選擇的公共格式,選擇方式可以分為兩

52、種,一是靜態(tài)選擇(兩個(gè)ORB開發(fā)商之間),二是動(dòng)態(tài)選擇(每一個(gè)對(duì)象各自選擇)。 (4)這種方法隨著嵌入式編譯(與stub相比)或普通的庫代碼(如加密例程)的不同,它的格式不同 2Immediate Bridging 使用直接橋接時(shí),在每一個(gè)域的邊界上,相關(guān)的元素直接從一個(gè)域的內(nèi)部格式轉(zhuǎn)到另一個(gè)域的內(nèi)部格式。 可以從以下幾個(gè)方面來觀察間接橋接: (1)這種方法有被優(yōu)化的可能性(這時(shí)交互不通過第三方)但它是以犧牲靈活性和通用性來取得的。 (2)一般只當(dāng)需要在與邊界傳遞純管理(不交換技術(shù))才使用這種方法。例如,當(dāng)需要在兩個(gè)相似ORB的安全管理域傳遞消息時(shí),就不需要使用通用的間接標(biāo)準(zhǔn)。 綜上所述,當(dāng)兩

53、個(gè)ORB/域使用私有機(jī)制時(shí),就比較難于區(qū)分這兩種方法。 3Inter-Domain Functionality的位置 從邏輯上講,不論是間接橋接還是直接橋接,只要是域間橋(inter-domain bridge),它在兩個(gè)域中都有元素。但是,一方面,域可以跨越ORB邊界,而ORB也可以跨越機(jī)器和系統(tǒng)邊界;另一方面,一個(gè)機(jī)器或一個(gè)進(jìn)程可能跨越多個(gè)ORB。從工程學(xué)的角度來講,這意味著一個(gè)域間橋中的元素根據(jù)ORB或系統(tǒng)的不同而采取分散或同處的分布方式。例如,如果一個(gè)ORB包括兩個(gè)安全域,那么,域間橋就可以在ORB的內(nèi)部實(shí)現(xiàn)。同樣的,也可能在一個(gè)進(jìn)程或系統(tǒng)中實(shí)現(xiàn)兩個(gè)ORB或域間的橋。從工程學(xué)來講,這種

54、情況下,域間橋是有限的,它局限于單個(gè)系統(tǒng)或進(jìn)程。如果所有的橋都用這種方式實(shí)現(xiàn),那么系統(tǒng)或進(jìn)程之間的協(xié)作只能在單個(gè)域或ORB中發(fā)生。 4橋接級(jí)別(Bridging Level) 橋接可以在ORB級(jí)或更高以及實(shí)現(xiàn)。它們分別叫做嵌入(in-line)級(jí)橋接和請(qǐng)求級(jí)(request-level)橋接。請(qǐng)求級(jí)橋接使用CORBA API,包括使用Dynamic Skeleton Interface,來接受和流出(issue)請(qǐng)求。但是,也存在“implicit context”類,它與某些引用聯(lián)合起來,持有如事物信息和安全信息等的ORB Service信息,通常的API中部包括這種類。 5網(wǎng)絡(luò)中橋接的結(jié)構(gòu)

55、 在網(wǎng)絡(luò)情況中的ORB,我們將引入“backbone”O(jiān)RB的概念。不論是大型網(wǎng)絡(luò)還是小規(guī)模網(wǎng)絡(luò)倒要用到它。大型網(wǎng)絡(luò)的制造商可以定義自己的中樞ORB,而小規(guī)模網(wǎng)絡(luò)則選擇一個(gè)商業(yè)的ORB作為它的中樞。 圖 2-17 一個(gè)ORB作為中樞,它通過半橋和全橋連接其它的ORB 這種中樞結(jié)構(gòu)是一種標(biāo)準(zhǔn)的網(wǎng)絡(luò)管理技術(shù)。它能減少橋接又能滿足網(wǎng)絡(luò)館管理。對(duì)于大型網(wǎng)絡(luò)來講,增加ORB橋接并不需要給網(wǎng)絡(luò)線路增加新的節(jié)點(diǎn)(hop)。 橋接的種類 1.In-line Bridging(嵌入橋接) 嵌入橋接的代碼位于ORB中,它完成必要的翻譯和映射功能。它是兩個(gè)ORB進(jìn)行橋接的最直接方法。它與單個(gè)ORB中的系統(tǒng)進(jìn)行僑界的

56、結(jié)構(gòu)相似(例如,間接使用某些內(nèi)部處理通訊模式,如網(wǎng)絡(luò)協(xié)議)。這表明,實(shí)現(xiàn)嵌入橋接可能會(huì)修改ORB中的某些基本的元素,例如插入新的內(nèi)部處理通訊模式。(有一些ORB被設(shè)計(jì)成可以進(jìn)行某些修改)。使用這種方法時(shí),在不同級(jí)別上用軟件元素的集成來完成所需要的橋接功能: (1)面的ORB提供附加的或可選擇的服務(wù) (2)附加的或可選擇的stub和skeleton代碼 圖2-18 使用ORB內(nèi)部的API構(gòu)造 In-Line bridges 2. Request-Level Bridging(請(qǐng)求級(jí)橋接) 請(qǐng)求級(jí)橋接的代碼位于ORB的外面,它完成必要的翻譯和映射功能。它通過位于不同執(zhí)行環(huán)境中兩個(gè)ORB的元素(一個(gè)ORB一個(gè)

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論