




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
分布計算環(huán)境鄒華北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院2015.9
Chapter3
面向?qū)ο蟮姆植加嬎悱h(huán)境分布式系統(tǒng)中的面向?qū)ο蠹夹g(shù)開放式分布處理ODPCORBA技術(shù):CommonObjectRequestBrokerArchitecture主要內(nèi)容緒論
OMG組織制定的一個工業(yè)規(guī)范,是一個體系結(jié)構(gòu)和一組規(guī)范。目的:在分布式環(huán)境下實現(xiàn)應(yīng)用的集成,使基于對象的軟件成員,在分布的、異構(gòu)的環(huán)境下可重用、可移植、可互操作。OMG的理念:不存在統(tǒng)一的硬件平臺、不存在統(tǒng)一的操作系統(tǒng)、編程語言、網(wǎng)絡(luò)協(xié)議、應(yīng)用模式,必須在互操作上達成一致。方法:提供一個框架,如果符合這一框架,就可以在主要的硬件平臺和操作系統(tǒng)上建立一個異質(zhì)的分布式應(yīng)用。CORBA結(jié)合了計算機工業(yè)中的兩個重要趨勢:面向?qū)ο筌浖_發(fā)和客戶機/服務(wù)器計算。主要內(nèi)容
綜述基于CORBA的軟件開發(fā)基本過程RM-ODP與CORBA總結(jié)綜述
對象管理體系結(jié)構(gòu)OMAOMG的接口定義語言IDL對象請求代理ORBCORBA服務(wù)ORB之間的互操作綜述
對象管理體系結(jié)構(gòu)OMAOMG的接口定義語言IDL對象請求代理ORBCORBA服務(wù)ORB之間的互操作對象管理體系結(jié)構(gòu)OMA
定義異構(gòu)環(huán)境下對象透明地發(fā)送請求和接收響應(yīng)的基本機制。支持客戶程序與對象實現(xiàn)在一個分布式環(huán)境中通信?;诜植际綄ο蟮乃袘?yīng)用程序都可能用到的通用服務(wù)的接口可用于大多數(shù)應(yīng)用領(lǐng)域的面向終端用戶的工具接口水平公用設(shè)施:領(lǐng)域間可共享垂直公用設(shè)施:面向某個領(lǐng)域由CORBA支持的頂層業(yè)務(wù)對象和應(yīng)用系統(tǒng),是針對特定應(yīng)用開發(fā)的接口OMACORBA不只定義了面向?qū)ο蟮倪h(yuǎn)程調(diào)用機制,它還定義了不同抽象層次的框架。OSORBServicesFacilitiesObjectObjectObject核心ORB提供了網(wǎng)絡(luò)編程復(fù)雜性的抽象以面向?qū)ο蟮姆绞教峁┝说湫偷南到y(tǒng)級功能。提供了領(lǐng)域間共享或面向特定領(lǐng)域的服務(wù)綜述
對象管理體系結(jié)構(gòu)OMAOMG的接口定義語言IDL對象請求代理ORBCORBA服務(wù)ORB之間的互操作OMG接口定義語言IDL
僅定義接口,不定義實現(xiàn)分隔“對象作什麼(WHAT)”與“如何做(HOW)”強類型、面向?qū)ο?、語言中立的說明(描述)型語言ANSIC++的子集支持多繼承支持到多種語言的映射ORBCC++AdaIDLIDLIDLIDLIDLIDLClientSideObjectImplementationSideCOBOLCAdaC++SmalltalkJAVAIDLIDLIDLIDLIDLIDLORBCOBOLSmalltalkJAVARoleofCORBAIDLIDL
&Stub
一個實例(1)ModuleBANK{
InterfaceBANKAccount{
enumaccount_kind{checking,saving};
exceptionaccount_not_available{string,reason};
exceptionincorrect_PIN{};
readonly
attributefloatbalance;
attribueaccount_kindkind_of_account;
voidaccess(instringaccount,instringpin)
raises(accout_not_available,incorrect_pin);一個實例(2)voiddeposit(in
floatf,out
floatnew_balance)
raises(account_not_available);
voidwithdraw(infloatf,outfloatnew_balance)
raises(account_not_available);
onewayop1(ininti); }}IDL到編程語言的映射定義相應(yīng)編程語言所用到的數(shù)據(jù)類型的定義,如:
OMGIDL Java short short longlong longlong octet byte……目前有:Ada、C、C++、Java、Lisp、COBOL、Python、Smalltalk。IDL的使用綜述
對象管理體系結(jié)構(gòu)OMAOMG的接口定義語言IDL對象請求代理ORBCORBA服務(wù)ORB之間的互操作對象請求代理ORB
對象請求代理ORB(ObjectRequestBroker):定義異構(gòu)環(huán)境下對象透明地發(fā)送請求和接收響應(yīng)的基本機制。ORB為客戶隱藏:對象位置對象實現(xiàn)方式對象執(zhí)行狀態(tài)對象通信機制ORB并不需要作為一個單獨的組件來實現(xiàn)。它定義了一系列的接口,任何一種支持了該接口的實現(xiàn)方式都是可行的。ORB體系結(jié)構(gòu)
主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器接口接口:客戶程序與對象實現(xiàn)之間的界面,描述了客戶可訪問的對象操作的一個集合;完全獨立于對象所處的位置、實現(xiàn)對象的程序設(shè)計語言以及對象接口中未反映的其他特性;客戶程序只能通過對象的接口定義掌握對象的邏輯結(jié)構(gòu),并通過發(fā)送請求來影響對象的行為與狀態(tài)對象接口采用接口定義語言IDL定義;ORB的各種接口主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器對象引用對象引用-臨時的不透明的句柄,標(biāo)識ORB中的一個對象實例。它用于定位響應(yīng)請求的對象實現(xiàn)??苫ゲ僮鞯膶ο笠肐OR:在異構(gòu)ORB間傳遞OR。對象引用的獲取從命名服務(wù)或交易服務(wù)中獲取使用工廠對象使用對象引用字符串。轉(zhuǎn)換為字符串,在文件中、email等中傳遞。Object_to_string()和string_to_object();特定ORB實現(xiàn)的方法獲取初始引用,如:CORBA::ORB::resolve_initial_references()作為方法調(diào)用的返回值主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器客戶和對象實現(xiàn)客戶(Client)客戶訪問對象的對象引用,并且調(diào)用對象上的操作客戶只知道對象的接口,通過調(diào)用感受對象的行為對象實現(xiàn)(ObjectImplementation)通過為對象實例定義數(shù)據(jù)和為對象方法定義代碼提供對象的語義;對象可以具有不同的實現(xiàn)方式;對象實現(xiàn)不依賴于ORB或者客戶調(diào)用對象的方式;一個對象的實現(xiàn)可以是其它對象的客戶;對象實現(xiàn)的實例Servant:譯為伺服對象或者仆從服務(wù)器服務(wù)器是一個(或一組)組件,能為其它組件提供某種服務(wù)。即,如果某個組件創(chuàng)建了一個對象,并能被其它組件通過對象引用來訪問,則擁有對象的組件就是該對象的服務(wù)器,其它組件對這個對象的請求操作都將由創(chuàng)建該組件的服務(wù)器來執(zhí)行。例如一個進程;客戶客戶服務(wù)器服務(wù)器對象實現(xiàn)的實例:Servant主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器ORB核心ORB核心提供的接口ORB內(nèi)核提供的服務(wù)對象接口,同時為客戶方和對象實現(xiàn)方所見,可直接為應(yīng)用程序所使用:對象引用操作:提供對象引用的串化和反串化及對象引用復(fù)制、刪除、比較及探測對象引用存在與否等操作。如object_to_string();release();ORB和對象適配器初始化:使應(yīng)用得到指向ORB的對象引用。如ORB_init();獲取初始對象引用:ORB規(guī)定了客戶對象在ORB初始時獲取初始對象引用的方法,如resolve_initial_references();主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器接口庫和實現(xiàn)庫主要功能接口庫(IFR,InterFaceRepository)ORB的一個組件,提供服務(wù),用于接口定義的存儲、查找和管理;CORBA對其接口進行了定義;實現(xiàn)庫(IR,ImplemetationRepository)ORB的一個組件,用于存儲對象實現(xiàn)的相關(guān)信息,如;如何定位對象實現(xiàn),如何激活對象實現(xiàn),以及其它的與ORB和操作系統(tǒng)相關(guān)的信息;OMG沒有對其進行詳細(xì)規(guī)范,與具體實現(xiàn)相關(guān);如OrbixWeb:
putit-hHostNameServerName-jServerAbsoluteClassName主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器靜態(tài)和動態(tài)調(diào)用從IDL到存根和骨架靜態(tài)調(diào)用:存根和骨架OMGIDL編譯器根據(jù)接口定義來產(chǎn)生客戶方的存根和服務(wù)方的骨架。靜態(tài)IDL存根(IDLstubs):
編譯時確定的的靜態(tài)接口,位于客戶對象本地,對客戶來說相當(dāng)于遠(yuǎn)程的執(zhí)行對象。由存根向ORB提交請求。負(fù)責(zé)對請求參數(shù)的封裝和發(fā)送,以及對返回結(jié)果的接收和解封裝,并以適當(dāng)?shù)母袷竭M行通信傳輸。靜態(tài)IDL骨架(IDLskeletons):在本地調(diào)用執(zhí)行對象服務(wù),并與ORB通信。針對執(zhí)行對象來說,代表了遠(yuǎn)程客戶。骨架接收經(jīng)ORB來的請求,將請求參數(shù)解封裝,識別客戶所請求的服務(wù),(向上)調(diào)用服務(wù)器中的對象實現(xiàn),把執(zhí)行結(jié)果封裝,并將結(jié)果返回給客戶程序。主要內(nèi)容
接口對象引用客戶和對象實現(xiàn)ORB核心接口庫和實現(xiàn)庫動態(tài)調(diào)用和靜態(tài)調(diào)用對象適配器對象適配器CORBA對象和伺服對象CORBA對象:可看作是一個具有對象標(biāo)識、對象接口及對象實現(xiàn)的抽象實體。從客戶程序的角度看,IOR中包含了對象的標(biāo)識、接口類型及其他信息以查找對象實現(xiàn)。伺服對象(Servant):指具體程序設(shè)計語言的對象實例或?qū)嶓w,通常存在于一個服務(wù)程序進程之中。對象適配器(ObjectAdaptor):一個重要的ORB組件,它負(fù)責(zé)將抽象的CORBA對象映射到具體的伺服對象。主要功能服務(wù)器利用對象實現(xiàn)創(chuàng)建伺服對象,然后將這些服務(wù)端本地的對象實例轉(zhuǎn)換為可供遠(yuǎn)程使用的CORBA對象:給該本地對象實例關(guān)聯(lián)了對象標(biāo)識、對象引用;對象引用=宿主服務(wù)器地址端口+POA標(biāo)識+ObjectID例:CORBA Hello_implhelloImpl=newHello_impl(); Hellohello=helloImpl._this(orb);對象適配器是管理服務(wù)端伺服對象、對象標(biāo)識、對象引用及它們之間關(guān)聯(lián)的主要工具。它負(fù)責(zé)決定在收到客戶請求時應(yīng)調(diào)用哪個伺服對象,然后調(diào)用該伺服對象上的合適操作;例:POA:PortableObjectAdapterPOA概貌P101存儲允許ORB的定位和激活對象實現(xiàn)的信息,如Server支持的類、實例化對象、這些對象的ID等運行時信息。對象引用的生成、維護,方法調(diào)用、對象的激活與終止、對象定位等功能。BOA:BasicObjectAdapterPOA:PortableObjectAdapterDII在Server方的對應(yīng)。DSI從進入的消息找出調(diào)用的目標(biāo)對象及相應(yīng)的方法,并提供運行時的連接機制。允許動態(tài)地構(gòu)造對象調(diào)用。客戶機可推遲到運行時選擇對象的實現(xiàn)接口和操作。靜態(tài)IDL存根在Server側(cè)的對應(yīng)。由IDL編譯程序自動生成。服務(wù)的靜態(tài)接口。由IDL編譯程序自動生成。在客戶端,如同一本地調(diào)用,是遠(yuǎn)程SERVER對象的代理。訪問某個對象實現(xiàn)所提供的服務(wù)的程序。根據(jù)其接口了解其邏輯結(jié)構(gòu),并通過調(diào)用掌握對象的行為所定義的IDL接口的真正實現(xiàn)。可用語言:C,C++,Java,Smalltalk,Ada…是ORB最關(guān)鍵的部分,負(fù)責(zé)請求的通信設(shè)施:對象的定位編組與解組啟動初始服務(wù)屏蔽底層網(wǎng)絡(luò)細(xì)節(jié)提供接口庫和其它的APIORB體系結(jié)構(gòu)回顧
對象的IDL接口定義的存儲、分布和管理。客戶對象可以在運行時查閱接口倉庫的內(nèi)容,獲得對象實現(xiàn)的IDL接口信息,從而向?qū)ο髮崿F(xiàn)發(fā)出請求。當(dāng)客戶程序要調(diào)用遠(yuǎn)程對象上的方法時,首先要得到這個遠(yuǎn)程對象的引用,之后就可以像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程對象的方法。當(dāng)發(fā)出一個調(diào)用時,實際上ORB會截取這個調(diào)用(通過客戶Stub完成),因為客戶和服務(wù)器可能在不同的網(wǎng)絡(luò)、不同的操作系統(tǒng)上甚至用不同的語言實現(xiàn),ORB還要負(fù)責(zé)將調(diào)用的名字、參數(shù)等編碼成標(biāo)準(zhǔn)的方式(稱Marshaling)通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器方(有時在同一臺機器上也如此),并通過將參數(shù)Unmarshaling的過程,傳到正確的對象上(這整個過程叫重定向,Redirecting),服務(wù)器對象完成處理后,ORB通過同樣的Marshaling/Unmarshaling方式將結(jié)果返回給客戶。ORB內(nèi)核提供的服務(wù)對象接口,同時為客戶方和對象實現(xiàn)方所見,可直接為應(yīng)用程序所使用。綜述
對象管理體系結(jié)構(gòu)OMAOMG的接口定義語言IDL對象請求代理ORBCORBA服務(wù)ORB之間的互操作CORBA服務(wù)公共對象服務(wù):系統(tǒng)級的對象框架。擴展了基本的CORBA體系結(jié)構(gòu)。CORBA服務(wù)代表了一組預(yù)先實現(xiàn)的,軟件開發(fā)商通常需要的分布式對象。CORBA服務(wù)清單例命名服務(wù)(NamingService):為客戶程序通過名字查找對象實現(xiàn)提供支持。事件服務(wù)(EventService):使對象間的通信能夠以松耦合的方式進行。生命周期服務(wù)(LifeCycleService):為對象的創(chuàng)建、刪除、拷貝和移動提供支持。持久狀態(tài)服務(wù)(PersistentStateService):為對象持久狀態(tài)的維護和管理提供支持。事務(wù)服務(wù)(TransactionService):為事務(wù)處理提供支持。并發(fā)服務(wù)(ConcurrencyService):為多個客戶協(xié)調(diào)一致地同時訪問共享資源提供支持。CORBA服務(wù)清單例(2)關(guān)系服務(wù)(RelationshipService):為實體和它們之間地關(guān)系的外在表示提供支持。外部服務(wù)(ExternalizationService):為對象的外部化(externalizing)和內(nèi)在化(internalizing)提供支持.查詢服務(wù)(QueryService)::為客戶在對象集合中查找滿足某種查詢標(biāo)準(zhǔn)的對象提供支持。許可證服務(wù)(LicensingService):為軟件許可證的管理提供支持。屬性服務(wù)(PropertyService):為對象屬性的定義和操縱提供支持。時間服務(wù)(TimeService):為客戶獲取當(dāng)前時間以及可能的誤差提供支持。安全服務(wù)(SecurityService):為基于CORBA的整個系統(tǒng)的安全提供支持。CORBA服務(wù)清單例(3)交易對象服務(wù)(TradingObjectService):為提供和查找具有特定屬性的對象提供支。集合服務(wù)(CollectionsService):為創(chuàng)建以及操縱各種常用集合類型提供支持。通知服務(wù)(NotificationService):對事件服務(wù)的擴展,支持事件的類型定義、過濾條件的設(shè)定、服務(wù)質(zhì)量的設(shè)定等。增強的時間視圖服務(wù)(EnhancedViewofTimeService
):為一致地使用具有各種自身特點的時鐘提供支持。
命名服務(wù)目的:為通過名字查找對象提供支持。方法:定義了一系列的接口,使客戶可以管理對象的命名空間、在命名空間中查找對象?;靖拍睿好舷挛腘amingcontext:一種命名空間,在該范圍內(nèi),所有名字是唯一的。名字Name:一個有序的由組件(component)構(gòu)成的序列,也叫對象的復(fù)合名。在這個序列中,除最后一個組件以外,其它都是一個命名空間的名字。最后的組件是這個對象的簡單名。名字綁定Namebinding:名字到對象的關(guān)連。支持分層命名的CORBA對象命名服務(wù)的使用使用NamingContext接口提供的API,可以:將一個對象與一個名字綁定:voidbind(inNamen,inObjectobj);在一個命名空間中,刪除一個對象綁定:voidunbind(inNamen);通過名字查找一個對象:Objectresolve(inNamen);創(chuàng)建一個命名空間:NamingContextbind_new_context(inNamen);等等.使用BindingIterator接口,可以在一個給定的命名空間中漫游(Navigate)。CORBA服務(wù)小結(jié)OMG為每個服務(wù)定義了標(biāo)準(zhǔn)API通過IDL定義實現(xiàn)廠商提供支持這些API的具體產(chǎn)品,它們的實現(xiàn)方法可能不同,但接口是一致的用戶購買、部署需要的服務(wù)產(chǎn)品買源代碼或者可執(zhí)行代碼安裝并在需要的時候?qū)嵗诔绦蛑惺褂脮r,首先獲取服務(wù)中相應(yīng)對象的IOR,然后調(diào)用它的操作即可。綜述
對象管理體系結(jié)構(gòu)OMAOMG的接口定義語言IDL對象請求代理ORBCORBA服務(wù)ORB之間的互操作ORB的互操作可互操作性(interoperability)是指在一個系統(tǒng)中用不同工具或不同供應(yīng)商的產(chǎn)品開發(fā)出來的兩個組件是否可以協(xié)調(diào)工作。ORB之間的互操作與基于DCE、DCOM等的系統(tǒng)的互操作GIOP、IIOP和ESIOP為了不同的ORB間可以互操作,有必要制訂傳輸請求的統(tǒng)一標(biāo)準(zhǔn),規(guī)定傳輸?shù)讓拥臄?shù)據(jù)表示方法與消息格式,GIOP:通用ORB間協(xié)議,定義了傳送語法和消息格式的標(biāo)準(zhǔn)集,能夠在任何面向連接的傳輸上實現(xiàn)ORB間的互操作性。IIOP:InternetORB間協(xié)議,定義了如何在TCP/IP傳輸上構(gòu)建GIOP。GIOP和IIOP之間的關(guān)系類似于接口定義及其實現(xiàn)。ESIOP:能夠針對已使用特定分布式計算基礎(chǔ)結(jié)構(gòu)的特殊情況(例如DCE-CIOP)構(gòu)建ORB。GIOP的基本組成部分
TheCommonDataRepresentation(CDR)definition:通用數(shù)據(jù)表示定義,它實際上是IDL數(shù)據(jù)類型在網(wǎng)上傳輸時的編碼方案。它對所有IDL數(shù)據(jù)類型的映射都作了規(guī)定。GIOPMessageFormats:規(guī)定了Client和Server兩個角色之間要傳輸?shù)南⒏袷健?種消息格式:Request、Reply、CancelRequest、LocateRequest、LocateReply、CloseConnection、MessageError、Fragment。GIOPTransportAssumptions:主要規(guī)定在任何面向連接的網(wǎng)絡(luò)傳輸層上的一些操作規(guī)則。如:傳輸應(yīng)該是面向連接的;傳輸應(yīng)是可靠的;在非正常情況下斷開連接時,傳輸應(yīng)能提供某種通知機制等;綜述
對象管理體系結(jié)構(gòu)OMAOMG的接口定義語言IDL對象請求代理ORBCORBA服務(wù)ORB之間的互操作主要內(nèi)容
綜述基于CORBA的軟件開發(fā)基本過程RM-ODP與CORBA總結(jié)ORBacus簡介什么是ORBacus:
ORBacus是IONA公司的ORB產(chǎn)品。ORBacus小巧但功能齊全,尤其是性能很高,提供實時CORBA特性,非常適合于電信領(lǐng)域。另外,ORBacus提供源代碼,這對我們進一步揭開CORBAORB內(nèi)幕、提高程序性能、解決棘手問題都有好處。同時它還是免費的,當(dāng)然商業(yè)用途例外。支持Java、C++本節(jié)使用Java
環(huán)境安裝本節(jié)使用ORBacus4.0.5ORBacus不需要安裝過程,只需將它拷貝到某個目錄下就行。這里假設(shè)在C:\ORBacus目錄下。ORBacus的bin\目錄,存放可執(zhí)行文件,如jidl.exe(ORBacus的IDL編譯器)。其lib\目錄,存放ORBacus的庫文件,以壓縮包(.jar)的形式存在為CLASSPATH增加:C:\Orbacus\lib\ob.jar;.\;.\classes為PATH增加:C:\Orbacus\bin需要安裝Java環(huán)境,如JDK1.3等。示例來源ORBacus附帶的一個例子:src\ob\demo\hello需要使用的文件:Hello.idl idl定義文件Hello_Impl.java 對象實現(xiàn)Client.java 客戶程序Server.java 服務(wù)器程序拷貝hello目錄到某一個工作目錄,如D:\mywork基于ORB的軟件開發(fā)過程回顧第一步:定義IDLHello.idl定義如下:interfaceHello{voidsay_hello();};第二步:編譯IDL為JavaStub和
Skeleton打開DOS窗口,轉(zhuǎn)到D:\mywork\hello目錄下鍵入:jidl--packagehelloHello.idl編譯后生成以下幾個文件:Client側(cè):HelloOperations.java:定義publicinterfaceHelloOperationsHello.java:定義接口InterfaceHello_HelloStub.java:樁代碼,定義了class_HelloStub HelloHelper.java:定義publicclassHelloHelper對象Server側(cè):HelloOperations.java:定義publicinterfaceHelloOperationsHelloHolder.java:定義publicfinalclassHelloHolderHelloPOA.java:定義類abstractpublicclassHelloPOA第三步:編寫對象實現(xiàn)對象實現(xiàn)代碼所在的類名字可由程序員自由掌握,只要不與IDL編譯器自動產(chǎn)生的Java類產(chǎn)生名字沖突即可??蛻舫绦蛞矡o須了解對象實現(xiàn)是由哪一個Java類完成的。CORBA應(yīng)用程序的對象實現(xiàn)最常用、最簡單的實現(xiàn)方式是使用繼承,即直接繼承由IDL編譯器生成的xxxPOA類。當(dāng)對象實現(xiàn)需要利用繼承機制達到其他目的時,就必須改用CORBA對象實現(xiàn)的另一種實現(xiàn)方式──紐帶機制(tiemechanism)。我們的例子程序采用簡單的繼承方式編寫對象實現(xiàn),即繼承xxxPOA類。HelloPOA類HelloPOA.java是Hello對象的服務(wù)端框架代碼。xxxPOA類的主要功能:解包in類型的參數(shù)并將參數(shù)傳遞給對象實現(xiàn)。打包返回值與所有out類型的參數(shù)。打包(marshal):指將特定程序設(shè)計語言描述的數(shù)據(jù)類型轉(zhuǎn)換為CORBA的IIOP流格式。解包(unmarshal):從IIOP流格式轉(zhuǎn)換為依賴于具體程序設(shè)計語言的數(shù)據(jù)結(jié)構(gòu)。編寫對象實現(xiàn)的最簡單途徑是繼承這些POA類,即把它們作為對象實現(xiàn)的基類。對象實現(xiàn)類packagehello;publicclassHello_implextendsHelloPOA{publicvoid;say_hello(){ System.out.println("HelloWorld!");}}第四步:編寫ServerServer用來創(chuàng)建相應(yīng)的Servant對象,準(zhǔn)備接受來自Client的請求。本例主要包括兩個方法。run()方法:1.獲取RootPOAManager的引用。2.創(chuàng)建實現(xiàn)對象,并將其引用保存在某個適當(dāng)?shù)牡胤?,以便客戶程序獲取。3.激活POA管理器,以允許接受請求。4.將控制權(quán)交給ORB,并處于運行狀態(tài)。Main()方法:初始化ORB;調(diào)用run()方法運行結(jié)束后,撤銷ORB對象,退出;第五步:編寫ClientClient程序發(fā)起CORBA調(diào)用,本例定義了兩個方法。Run()方法:1.獲取遠(yuǎn)程對象的引用;2.調(diào)用遠(yuǎn)程對象上的方法;Main()方法:初始化ORB;調(diào)用run()方法;運行結(jié)束后,撤銷ORB對象,退出;第六步:編譯和運行轉(zhuǎn)到D:\mywork\hello目錄下,創(chuàng)建classes目錄:mkdirclasses編譯Java文件:javac–dclasseshello\*.javajavac–dclassesClient.javajavac–dclassesHello_impl.javajavac–dclassesServer.java進入classes目錄,先運行Server:javahello.Server重開一個DOS窗口,進入D:\mywork\hello\classes目錄,運行Client:javahello.Client運行結(jié)果在Client運行的DOS窗口,輸入:Enter‘h’forhelloor‘x’forexit:>h>在Server運行的DOS窗口運行結(jié)果如下:>HelloWorld!主要內(nèi)容
綜述基于CORBA的軟件開發(fā)基本過程RM-ODP與CORBA總結(jié)RM-ODP是分布式計算領(lǐng)域內(nèi)容最廣泛的一個國際標(biāo)準(zhǔn),是功能最強的分布計算“元標(biāo)準(zhǔn)”。CORBA是開放式分布處理思想的一個實現(xiàn)。體系結(jié)構(gòu)的比較--語言語言:CORBA沒有企業(yè)語言、信息語言和技術(shù)語言計算語言RM-ODP的每個對象都可以調(diào)用其它對象在接口上所提供的操作。系統(tǒng)分布的特性對系統(tǒng)設(shè)計者應(yīng)該是透明的。CORBA支持RM-ODP計算語言中的接口類型概念,由OMGIDL表示。
RM-ODP主要支持兩種類型的操作:詢問型和公告型。CORBA支持三種類型的調(diào)用:同步調(diào)用、單向調(diào)用和延遲調(diào)用.前兩種方式分別對應(yīng)于
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度車輛事故環(huán)境損害賠償協(xié)議
- 二零二五年度退租協(xié)議書及舊房裝修拆除工程合同
- 2025年度期刊發(fā)行權(quán)轉(zhuǎn)讓認(rèn)刊書審核及執(zhí)行合同
- 二零二五年度房屋租賃合同租賃房屋租賃合同解除程序
- 二零二五年度品牌形象維護營銷人員保密及合作協(xié)議
- 2025年度科技研發(fā)領(lǐng)域自愿出資入股協(xié)議
- 2025年度貴金屬首飾典當(dāng)借款服務(wù)協(xié)議
- 二零二五年度互聯(lián)網(wǎng)企業(yè)職工勞動合同優(yōu)化方案
- 二零二五年度電子行業(yè)經(jīng)典實習(xí)期勞動合同模板
- 《物流系統(tǒng)分析》課件 項目七任務(wù)四 了解物流系統(tǒng)仿真實踐
- 藍曬創(chuàng)作方案
- 醫(yī)院隔離技術(shù)標(biāo)準(zhǔn)2023
- 探討630MW超臨界機組深度調(diào)峰安全技術(shù)措施
- 紅色旅游線路
- 柔性印刷技術(shù)課件
- 膝骨關(guān)節(jié)炎中醫(yī)診療指南
- 北京電子科技職業(yè)學(xué)院招聘考試題庫2024
- 貸款的培訓(xùn)課件
- 無人系統(tǒng)自主控制
- 化工原理陳敏恒課件
- 景區(qū)保安投標(biāo)方案(技術(shù)方案)
評論
0/150
提交評論