




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Beijing University of Posts and Telecommunications Page 1Beijing University of Posts and Telecommunications Page 2 Beijing University of Posts and Telecommunications Page 3t分布式系統(tǒng)中的面向?qū)ο蠹夹g(shù)分布式系統(tǒng)中的面向?qū)ο蠹夹g(shù)t開放式分布處理開放式分布處理ODPtCORBA技術(shù)技術(shù):Common Object Request Broker Architecture主要內(nèi)容Beijing University of Posts
2、 and Telecommunications Page 4緒論緒論 t OMG組織制定的一個(gè)工業(yè)規(guī)范,是一個(gè)體系結(jié)構(gòu)和一組規(guī)范。t 目的:在分布式環(huán)境下實(shí)現(xiàn)應(yīng)用的集成,使基于對象的軟件成員,在分布的、異構(gòu)的環(huán)境下可重用、可移植、可互操作可互操作。n OMG的理念:不存在統(tǒng)一的硬件平臺、不存在統(tǒng)一的操作系統(tǒng)、編程語言、網(wǎng)絡(luò)協(xié)議、應(yīng)用模式,必須在互操作上達(dá)成一致。t 方法:提供一個(gè)框架,如果符合這一框架,就可以在主要的硬件平臺和操作系統(tǒng)上建立一個(gè)異質(zhì)的分布式應(yīng)用。t CORBA結(jié)合了計(jì)算機(jī)工業(yè)中的兩個(gè)重要趨勢:面向?qū)ο筌浖_發(fā)和客戶機(jī)/服務(wù)器計(jì)算。Beijing University of Po
3、sts and Telecommunications Page 5主要內(nèi)容主要內(nèi)容 t綜述綜述t基于基于CORBA的軟件開發(fā)基本過程的軟件開發(fā)基本過程tRM-ODP與與CORBAt總結(jié)總結(jié)Beijing University of Posts and Telecommunications Page 6綜述綜述 t 對象管理體系結(jié)構(gòu)對象管理體系結(jié)構(gòu)OMAt OMG的接口定義語言的接口定義語言IDLt 對象請求代理對象請求代理ORBt CORBA服務(wù)t ORB之間的互操作Beijing University of Posts and Telecommunications Page 7綜述綜述 t
4、對象管理體系結(jié)構(gòu)OMAt OMG的接口定義語言的接口定義語言IDLt 對象請求代理對象請求代理ORBt CORBA服務(wù)t ORB之間的互操作Beijing University of Posts and Telecommunications Page 8對象管理體系結(jié)構(gòu)對象管理體系結(jié)構(gòu)OMA 定義異構(gòu)環(huán)境下對象透明地發(fā)送請求和接收響應(yīng)的基本機(jī)制。支持客戶程序與對象實(shí)現(xiàn)在一個(gè)分布式環(huán)境中通信?;诜植际綄ο蟮乃袘?yīng)用程序都可能用到的通用服務(wù)的接口可用于大多數(shù)應(yīng)用領(lǐng)域的面向終端用戶的工具接口水平公用設(shè)施:領(lǐng)域間可共享垂直公用設(shè)施:面向某個(gè)領(lǐng)域由CORBA支持的頂層業(yè)務(wù)對象和應(yīng)用系統(tǒng),是針對特定應(yīng)用
5、開發(fā)的接口Beijing University of Posts and Telecommunications Page 9OMAt CORBA不只定義了面向?qū)ο蟮倪h(yuǎn)程調(diào)用機(jī)制,它還定義了不同抽象層次的框架。OS ORBServicesFacilitiesObjectObjectObject核心ORB提供了網(wǎng)絡(luò)編程復(fù)雜性的抽象以面向?qū)ο蟮姆绞教峁┝说湫偷南到y(tǒng)級功能。提供了領(lǐng)域間共享或面向特定領(lǐng)域的服務(wù)Beijing University of Posts and Telecommunications Page 10綜述綜述 t 對象管理體系結(jié)構(gòu)OMAt OMG的接口定義語言的接口定義語言IDL
6、t 對象請求代理對象請求代理ORBt CORBA服務(wù)t ORB之間的互操作Beijing University of Posts and Telecommunications Page 11OMG接口定義語言接口定義語言IDL t僅定義接口,不定義實(shí)現(xiàn)t分隔“對象作什麼 (WHAT)”與“如何做 (HOW)”t強(qiáng)類型、面向?qū)ο?、語言中立的說明(描述)型語言tANSI C+ 的子集 t支持多繼承t支持到多種語言的映射Beijing University of Posts and Telecommunications Page 12ORBCC+AdaI D LI D LI D LI D LI D
7、LI D LClient SideObject Implementation SideCOBOLCAdaC+SmalltalkJAVAI D LI D LI D LI D LI D LI D LORBCOBOLSmalltalkJAVARole of CORBA IDLBeijing University of Posts and Telecommunications Page 13IDL & Stub Beijing University of Posts and Telecommunications Page 14一個(gè)實(shí)例一個(gè)實(shí)例(1)Module BANKInterface BANKAc
8、countenum account_kind checking,saving;exception account_not_availablestring,reason;exception incorrect_PIN;readonly attribute float balance; attribue account_kind kind_of_account;void access(in string account, in string pin) raises(accout_not_available,incorrect_pin);Beijing University of Posts and
9、 Telecommunications Page 15一個(gè)實(shí)例一個(gè)實(shí)例(2) void deposit (in float f, out float new_balance)raises (account_not_available);void withdraw (in float f, out float new_balance)raises (account_not_available);oneway op1(in int i);Beijing University of Posts and Telecommunications Page 16IDL到編程語言的映射到編程語言的映射t 定義
10、相應(yīng)編程語言所用到的數(shù)據(jù)類型的定義,如: OMG IDLJavashortshortlong longlong longoctetbytet t 目前有:Ada、C、C+、Java、Lisp、COBOL、Python、Smalltalk。Beijing University of Posts and Telecommunications Page 17IDL的使用的使用IDL定義文件定義文件IDL CompilerCLIENTIDLSTUBSERVERIDLSKELETONJavaCompilerC+CompilerCLIENT應(yīng)用CODESERVER實(shí)現(xiàn)代碼CLIENTPROGRAMSERV
11、ERPROGRAMCORBARUN-TIMELIBRARIES接口庫Beijing University of Posts and Telecommunications Page 18綜述綜述 t 對象管理體系結(jié)構(gòu)OMAt OMG的接口定義語言的接口定義語言IDLt 對象請求代理對象請求代理ORBt CORBA服務(wù)t ORB之間的互操作Beijing University of Posts and Telecommunications Page 19對象請求代理對象請求代理ORB t 對象請求代理ORB(Object Request Broker):定義異構(gòu)環(huán)境下對象透明地發(fā)送請求和接收響應(yīng)的
12、基本機(jī)制。ORB 為客戶隱藏:n對象位置n對象實(shí)現(xiàn)方式n對象執(zhí)行狀態(tài)n對象通信機(jī)制t ORB并不需要作為一個(gè)單獨(dú)的組件來實(shí)現(xiàn)。它定義了一系列的接口,任何一種支持了該接口的實(shí)現(xiàn)方式都是可行的。Beijing University of Posts and Telecommunications Page 20ORB體系結(jié)構(gòu)體系結(jié)構(gòu) 接口庫 ORB 核客客戶戶機(jī)機(jī)對對象象實(shí)實(shí)現(xiàn)現(xiàn)動動態(tài)態(tài)調(diào)調(diào)用用接接口口ORB接接口口對對象象適適配配器器in argsOperation( )out args + return valusGIOP/IIOPNETWORK(服務(wù)器 )實(shí)現(xiàn)庫動動態(tài)態(tài)骨骨架架接接口口靜靜態(tài)態(tài)
13、I ID DL L骨骨架架靜靜態(tài)態(tài)I ID DL L存存根根圖3-3 CORBA ORB的體系結(jié)構(gòu)Beijing University of Posts and Telecommunications Page 21主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t 對象適配器Beijing University of Posts and Telecommunications Page 22主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t 對象適配器Beijing Uni
14、versity of Posts and Telecommunications Page 23接口接口t 接口:n客戶程序與對象實(shí)現(xiàn)之間的界面,描述了客戶可訪問的對象操作的一個(gè)集合;完全獨(dú)立于對象所處的位置、實(shí)現(xiàn)對象的程序設(shè)計(jì)語言以及對象接口中未反映的其他特性;n客戶程序只能通過對象的接口定義掌握對象的邏輯結(jié)構(gòu),并通過發(fā)送請求來影響對象的行為與狀態(tài)n對象接口采用接口定義語言IDL定義;Beijing University of Posts and Telecommunications Page 24ORB的各種接口的各種接口接口庫 ORB 核客客戶戶機(jī)機(jī)對對象象實(shí)實(shí)現(xiàn)現(xiàn)動動態(tài)態(tài)調(diào)調(diào)用用接接口口
15、ORB接接口口對對象象適適配配器器in argsOperation( )out args + return valusGIOP/IIOPNETWORK(服務(wù)器 )實(shí)現(xiàn)庫動動態(tài)態(tài)骨骨架架接接口口靜靜態(tài)態(tài)I ID DL L骨骨架架靜靜態(tài)態(tài)I ID DL L存存根根圖3-3 CORBA ORB的體系結(jié)構(gòu)Beijing University of Posts and Telecommunications Page 25主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t 對象適配器Beijing University of Posts and
16、 Telecommunications Page 26對象引用對象引用t對象引用 臨時(shí)的不透明的句柄,標(biāo)識ORB中的一個(gè)對象實(shí)例。它用于定位響應(yīng)請求的對象實(shí)現(xiàn)。t可互操作的對象引用IOR:在異構(gòu)ORB間傳遞OR。Beijing University of Posts and Telecommunications Page 27對象引用的獲取對象引用的獲取t從命名服務(wù)或交易服務(wù)中獲取t使用工廠對象t使用對象引用字符串。轉(zhuǎn)換為字符串,在 文 件 中 、 e m a i l 等 中 傳 遞 。Object_to_string()和string_to_object();t特定ORB實(shí)現(xiàn)的方法t獲取初始
17、引用,如:CORBA:ORB:resolve_initial_references()t作為方法調(diào)用的返回值Beijing University of Posts and Telecommunications Page 28主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t 對象適配器Beijing University of Posts and Telecommunications Page 29客戶和對象實(shí)現(xiàn)客戶和對象實(shí)現(xiàn)t 客戶(客戶(ClientClient)n客戶訪問對象的對象引用,并且調(diào)用對象上的操作n客戶只知道對象的接
18、口,通過調(diào)用感受對象的行為t 對象實(shí)現(xiàn)(對象實(shí)現(xiàn)(Object ImplementationObject Implementation)n通過為對象實(shí)例定義數(shù)據(jù)和為對象方法定義代碼提供對象的語義;n對象可以具有不同的實(shí)現(xiàn)方式;n對象實(shí)現(xiàn)不依賴于ORB或者客戶調(diào)用對象的方式;n一個(gè)對象的實(shí)現(xiàn)可以是其它對象的客戶;n對象實(shí)現(xiàn)的實(shí)例Servant:譯為伺服對象或者仆從Beijing University of Posts and Telecommunications Page 30服務(wù)器服務(wù)器t 服務(wù)器是一個(gè)(或一組)組件,能為其它組件提供某種服務(wù)。即,如果某個(gè)組件創(chuàng)建了一個(gè)對象,并能被其它組件通過
19、對象引用來訪問,則擁有對象的組件就是該對象的服務(wù)器,其它組件對這個(gè)對象的請求操作都將由創(chuàng)建該組件的服務(wù)器來執(zhí)行。n例如一個(gè)進(jìn)程;客戶客戶客戶客戶服務(wù)器服務(wù)器服務(wù)器服務(wù)器對象實(shí)現(xiàn)的實(shí)例:對象實(shí)現(xiàn)的實(shí)例:ServantBeijing University of Posts and Telecommunications Page 31主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t 對象適配器Beijing University of Posts and Telecommunications Page 32ORB核心核心接口庫 ORB
20、核客客戶戶機(jī)機(jī)對對象象實(shí)實(shí)現(xiàn)現(xiàn)動動態(tài)態(tài)調(diào)調(diào)用用接接口口ORB接接口口對對象象適適配配器器in argsOperation( )out args + return valusGIOP/IIOPNETWORK(服務(wù)器 )實(shí)現(xiàn)庫動動態(tài)態(tài)骨骨架架接接口口靜靜態(tài)態(tài)I ID DL L骨骨架架靜靜態(tài)態(tài)I ID DL L存存根根圖3-3 CORBA ORB的體系結(jié)構(gòu)Beijing University of Posts and Telecommunications Page 33ORB核心提供的接口核心提供的接口t ORB內(nèi)核提供的服務(wù)對象接口,同時(shí)為客戶方和對象實(shí)現(xiàn)方所見,可直接為應(yīng)用程序所使用:n對象引用
21、操作:提供對象引用的串化和反串化及對象引用復(fù)制、刪除、比較及探測對象引用存在與否等操作。如object_to_string();release();nORB和對象適配器初始化:使應(yīng)用得到指向ORB的對象引用。如ORB_init();n獲取初始對象引用:ORB規(guī)定了客戶對象在ORB初始時(shí)獲取初始對象引用的方法, 如resolve_initial_references();Beijing University of Posts and Telecommunications Page 34主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t
22、 對象適配器Beijing University of Posts and Telecommunications Page 35接口庫和實(shí)現(xiàn)庫接口庫和實(shí)現(xiàn)庫接口庫 ORB 核客客戶戶機(jī)機(jī)對對象象實(shí)實(shí)現(xiàn)現(xiàn)動動態(tài)態(tài)調(diào)調(diào)用用接接口口ORB接接口口對對象象適適配配器器in argsOperation( )out args + return valusGIOP/IIOPNETWORK(服務(wù)器 )實(shí)現(xiàn)庫動動態(tài)態(tài)骨骨架架接接口口靜靜態(tài)態(tài)I ID DL L骨骨架架靜靜態(tài)態(tài)I ID DL L存存根根圖3-3 CORBA ORB的體系結(jié)構(gòu)Beijing University of Posts and Teleco
23、mmunications Page 36主要功能主要功能t 接口庫(IFR,InterFace Repository)nORB的一個(gè)組件,提供服務(wù),用于接口定義的存儲、查找和管理;nCORBA對其接口進(jìn)行了定義;t 實(shí)現(xiàn)庫(IR,Implemetation Repository)nORB的一個(gè)組件,用于存儲對象實(shí)現(xiàn)的相關(guān)信息,如;如何定位對象實(shí)現(xiàn),如何激活對象實(shí)現(xiàn),以及其它的與ORB和操作系統(tǒng)相關(guān)的信息;nOMG沒有對其進(jìn)行詳細(xì)規(guī)范,與具體實(shí)現(xiàn)相關(guān);如Orbix Web: putit -hHostName ServerName -j ServerAbsoluteClassNameBeijing
24、 University of Posts and Telecommunications Page 37主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t 對象適配器Beijing University of Posts and Telecommunications Page 38靜態(tài)和動態(tài)調(diào)用靜態(tài)和動態(tài)調(diào)用接口庫 ORB 核客客戶戶機(jī)機(jī)對對象象實(shí)實(shí)現(xiàn)現(xiàn)動動態(tài)態(tài)調(diào)調(diào)用用接接口口ORB接接口口對對象象適適配配器器in argsOperation( )out args + return valusGIOP/IIOPNETWORK(服務(wù)器
25、)實(shí)現(xiàn)庫動動態(tài)態(tài)骨骨架架接接口口靜靜態(tài)態(tài)I ID DL L骨骨架架靜靜態(tài)態(tài)I ID DL L存存根根圖3-3 CORBA ORB的體系結(jié)構(gòu)Beijing University of Posts and Telecommunications Page 39從從IDL到存根和骨架到存根和骨架IDL定義文件定義文件IDL CompilerCLIENTIDLSTUBSERVERIDLSKELETONJavaCompilerC+CompilerCLIENT應(yīng)用CODESERVER實(shí)現(xiàn)代碼CLIENTPROGRAMSERVERPROGRAMCORBARUN-TIMELIBRARIES接口庫Beijing
26、University of Posts and Telecommunications Page 40靜態(tài)調(diào)用:存根和骨架靜態(tài)調(diào)用:存根和骨架t OMG IDL編譯器根據(jù)接口定義來產(chǎn)生客戶方的存根和服務(wù)方的骨架。t 靜態(tài)IDL存根 (IDL stubs):n 編譯時(shí)確定的的靜態(tài)接口,位于客戶對象本地, 對客戶來說相當(dāng)于遠(yuǎn)程的執(zhí)行對象。由存根向ORB提交請求。n 負(fù)責(zé)對請求參數(shù)的封裝和發(fā)送,以及對返回結(jié)果的接收和解封裝,并以適當(dāng)?shù)母袷竭M(jìn)行通信傳輸。t 靜態(tài)IDL骨架 ( IDL skeletons ):n 在本地調(diào)用執(zhí)行對象服務(wù),并與ORB通信。n 針對執(zhí)行對象來說,代表了遠(yuǎn)程客戶。骨架接收經(jīng)OR
27、B來的請求,將請求參數(shù)解封裝,識別客戶所請求的服務(wù),(向上)調(diào)用服務(wù)器中的對象實(shí)現(xiàn),把執(zhí)行結(jié)果封裝,并將結(jié)果返回給客戶程序。Beijing University of Posts and Telecommunications Page 41主要內(nèi)容主要內(nèi)容 t 接口t 對象引用t 客戶和對象實(shí)現(xiàn)t ORB核心t 接口庫和實(shí)現(xiàn)庫t 動態(tài)調(diào)用和靜態(tài)調(diào)用t 對象適配器Beijing University of Posts and Telecommunications Page 42對象適配器對象適配器接口庫 ORB 核客客戶戶機(jī)機(jī)對對象象實(shí)實(shí)現(xiàn)現(xiàn)動動態(tài)態(tài)調(diào)調(diào)用用接接口口ORB接接口口對對象象適適配配
28、器器in argsOperation( )out args + return valusGIOP/IIOPNETWORK(服務(wù)器 )實(shí)現(xiàn)庫動動態(tài)態(tài)骨骨架架接接口口靜靜態(tài)態(tài)I ID DL L骨骨架架靜靜態(tài)態(tài)I ID DL L存存根根圖3-3 CORBA ORB的體系結(jié)構(gòu)Beijing University of Posts and Telecommunications Page 43CORBA對象和伺服對象對象和伺服對象t CORBA對象:n可看作是一個(gè)具有對象標(biāo)識、對象接口及對象實(shí)現(xiàn)的抽象實(shí)體。n從客戶程序的角度看,IOR中包含了對象的標(biāo)識、接口類型及其他信息以查找對象實(shí)現(xiàn)。t 伺服對象(Se
29、rvant):n指具體程序設(shè)計(jì)語言的對象實(shí)例或?qū)嶓w,通常存在于一個(gè)服務(wù)程序進(jìn)程之中。t對象適配器(Object Adaptor):n一個(gè)重要的ORB組件,它負(fù)責(zé)將抽象的CORBA對象映射到具體的伺服對象。Beijing University of Posts and Telecommunications Page 44主要功能主要功能t 服務(wù)器利用對象實(shí)現(xiàn)創(chuàng)建伺服對象,然后將這些服務(wù)端本地的對象實(shí)例轉(zhuǎn)換為可供遠(yuǎn)程使用的CORBA對象:n 給該本地對象實(shí)例關(guān)聯(lián)了對象標(biāo)識、對象引用;n 對象引用宿主服務(wù)器地址端口+POA標(biāo)識ObjectIDn 例:CORBAHello_impl helloImpl
30、 = new Hello_impl();Hello hello = helloImpl._this(orb);t 對象適配器是管理服務(wù)端伺服對象、對象標(biāo)識、對象引用及它們之間關(guān)聯(lián)的主要工具。n 它負(fù)責(zé)決定在收到客戶請求時(shí)應(yīng)調(diào)用哪個(gè)伺服對象,然后調(diào)用該伺服對象上的合適操作;n 例:POA: Portable Object AdapterBeijing University of Posts and Telecommunications Page 45POA概貌概貌tP101Beijing University of Posts and Telecommunications Page 46接口庫
31、ORB 核客客戶戶機(jī)機(jī)對對象象實(shí)實(shí)現(xiàn)現(xiàn)動動態(tài)態(tài)調(diào)調(diào)用用接接口口ORB接接口口對對象象適適配配器器in argsOperation( )out args + return valusGIOP/IIOPNETWORK(服務(wù)器 )實(shí)現(xiàn)庫動動態(tài)態(tài)骨骨架架接接口口靜靜態(tài)態(tài)I ID DL L骨骨架架靜靜態(tài)態(tài)I ID DL L存存根根圖3-3 CORBA ORB的體系結(jié)構(gòu)存儲允許ORB的定位和激活對象實(shí)現(xiàn)的信息,如Server支持的類、實(shí)例化對象、這些對象的ID等運(yùn)行時(shí)信息。對象引用的生成、維護(hù),方法調(diào)用、對象的激活與終止、對象定位等功能。BOA:Basic Object AdapterPOA:Portab
32、le Object AdapterDII在Server方的對應(yīng)。DSI從進(jìn)入的消息找出調(diào)用的目標(biāo)對象及相應(yīng)的方法,并提供運(yùn)行時(shí)的連接機(jī)制。允許動態(tài)地構(gòu)造對象調(diào)用。客戶機(jī)可推遲到運(yùn)行時(shí)選擇對象的實(shí)現(xiàn)接口和操作。靜態(tài)IDL存根在Server側(cè)的對應(yīng)。由IDL編譯程序自動生成。服務(wù)的靜態(tài)接口。 由IDL編譯程序自動生成。在客戶端,如同一本地調(diào)用,是遠(yuǎn)程SERVER對象的代理。訪問某個(gè)對象實(shí)現(xiàn)所提供的服務(wù)的程序。根據(jù)其接口了解其邏輯結(jié)構(gòu),并通過調(diào)用掌握對象的行為所定義的IDL接口的真正實(shí)現(xiàn)??捎谜Z言: C, C+, Java, Smalltalk, Ada 是ORB最關(guān)鍵的部分,負(fù)責(zé)請求的通信設(shè)施:對
33、象的定位編組與解組啟動初始服務(wù)屏蔽底層網(wǎng)絡(luò)細(xì)節(jié)提供接口庫和其它的APIORB體系結(jié)構(gòu)回顧體系結(jié)構(gòu)回顧 對象的IDL 接口定義的存儲、分布和管理??蛻魧ο罂梢栽谶\(yùn)行時(shí)查閱接口倉庫的內(nèi)容,獲得對象實(shí)現(xiàn)的IDL接口信息,從而向?qū)ο髮?shí)現(xiàn)發(fā)出請求。當(dāng)客戶程序要調(diào)用遠(yuǎn)程對象上的方法時(shí),首先要得到這個(gè)遠(yuǎn)程對象的引用,之后就可以像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程對象的方法。當(dāng)發(fā)出一個(gè)調(diào)用時(shí),實(shí)際上ORB會截取這個(gè)調(diào)用(通過客戶Stub完成),因?yàn)榭蛻艉头?wù)器可能在不同的網(wǎng)絡(luò)、不同的操作系統(tǒng)上甚至用不同的語言實(shí)現(xiàn),ORB還要負(fù)責(zé)將調(diào)用的名字、參數(shù)等編碼成標(biāo)準(zhǔn)的方式(稱Marshaling)通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器方(有時(shí)在
34、同一臺機(jī)器上也如此),并通過將參數(shù)Unmarshaling的過程,傳到正確的對象上(這整個(gè)過程叫重定向,Redirecting),服務(wù)器對象完成處理后,ORB通過同樣的Marshaling/Unmarshaling方式將結(jié)果返回給客戶。ORB內(nèi)核提供的服務(wù)對象接口,同時(shí)為客戶方和對象實(shí)現(xiàn)方所見,可直接為應(yīng)用程序所使用。Beijing University of Posts and Telecommunications Page 47綜述綜述 t 對象管理體系結(jié)構(gòu)OMAt OMG的接口定義語言的接口定義語言IDLt 對象請求代理對象請求代理ORBt CORBA服務(wù)t ORB之間的互操作Beiji
35、ng University of Posts and Telecommunications Page 48 CORBA服務(wù)服務(wù)t 公共對象服務(wù):系統(tǒng)級的對象框架。擴(kuò)展了基本的CORBA體系結(jié)構(gòu)。t CORBA 服務(wù)代表了一組預(yù)先實(shí)現(xiàn)的,軟件開發(fā)商通常需要的分布式對象。Beijing University of Posts and Telecommunications Page 49CORBA服務(wù)清單例服務(wù)清單例t 命名服務(wù)(命名服務(wù)(Naming Service):):為客戶程序通過名字查找對象實(shí)現(xiàn)提供支持。t 事件服務(wù)(事件服務(wù)(Event Service):):使對象間的通信能夠以松耦合的
36、方式進(jìn)行。t 生命周期服務(wù)(生命周期服務(wù)(Life Cycle Service):):為對象的創(chuàng)建、刪除、拷貝和移動提供支持。 t 持久狀態(tài)服務(wù)(持久狀態(tài)服務(wù)(Persistent State Service):):為對象持久狀態(tài)的維護(hù)和管理提供支持。t 事務(wù)服務(wù)(事務(wù)服務(wù)(Transaction Service):):為事務(wù)處理提供支持。t 并發(fā)服務(wù)(并發(fā)服務(wù)(Concurrency Service):):為多個(gè)客戶協(xié)調(diào)一致地同時(shí)訪問共享資源提供支持。Beijing University of Posts and Telecommunications Page 50CORBA服務(wù)清單例(服務(wù)
37、清單例(2)n 關(guān)系服務(wù)(關(guān)系服務(wù)(Relationship Service):):為實(shí)體和它們之間地關(guān)系的外在表示提供支持。n 外部服務(wù)(外部服務(wù)(Externalization Service):):為對象的外部化(externalizing)和 內(nèi)在化(internalizing)提供支持.n 查詢服務(wù)(查詢服務(wù)(Query Service):)::為客戶在對象集合中查找滿足某種查詢標(biāo)準(zhǔn)的對象提供支持。n 許可證服務(wù)(許可證服務(wù)(Licensing Service):):為軟件許可證的管理提供支持。 n 屬性服務(wù)(屬性服務(wù)(Property Service):):為對象屬性的定義和操縱提
38、供支持。n 時(shí)間服務(wù)(時(shí)間服務(wù)(Time Service):):為客戶獲取當(dāng)前時(shí)間以及可能的誤差提供支持。n 安全服務(wù)(安全服務(wù)(Security Service):):為基于CORBA的整個(gè)系統(tǒng)的安全提供支持。Beijing University of Posts and Telecommunications Page 51CORBA服務(wù)清單例(服務(wù)清單例(3)n交易對象服務(wù)(交易對象服務(wù)(Trading Object Service): 為提供和查找具有特定屬性的對象提供支。n集合服務(wù)(集合服務(wù)(Collections Service): 為創(chuàng)建以及操縱各種常用集合類型提供支持。n通知服務(wù)
39、(通知服務(wù)(Notification Service):對事件服務(wù)的擴(kuò)展,支持事件的類型定義、過濾條件的設(shè)定、服務(wù)質(zhì)量的設(shè)定等。n增強(qiáng)的時(shí)間視圖服務(wù)增強(qiáng)的時(shí)間視圖服務(wù)(Enhanced View of Time Service ):為一致地使用具有各種自身特點(diǎn)的時(shí)鐘提供支持。Beijing University of Posts and Telecommunications Page 52 命名服務(wù)命名服務(wù)t 目的:為通過名字查找對象提供支持。t 方法:定義了一系列的接口,使客戶可以管理對象的命名空間、在命名空間中查找對象。t 基本概念:n命名上下文命名上下文Naming context:一種
40、命名空間,在該范圍內(nèi),所有名字是唯一的。 n名字名字Name:一個(gè)有序的由組件(component)構(gòu)成的序列,也叫對象的復(fù)合名復(fù)合名。在這個(gè)序列中,除最后一個(gè)組件以外,其它都是一個(gè)命名空間的名字。最后的組件是這個(gè)對象的簡單名簡單名。n名字綁定名字綁定Name binding:名字到對象的關(guān)連。Beijing University of Posts and Telecommunications Page 53支持分層命名的支持分層命名的CORBA對象對象MexicoClub MedHyattCreeceHawaiiResortsPlaya BlanceCancunIxtapacontext n
41、amesimple nameCompound Name:ResortsMexicoClub MedPlaya BlanceCORBA Objects Support Hierachical Naming Beijing University of Posts and Telecommunications Page 54命名服務(wù)的使用命名服務(wù)的使用t 使用NamingContext接口提供的API,可以:n 將一個(gè)對象與一個(gè)名字綁定:void bind(in Name n, in Object obj);n 在一個(gè)命名空間中,刪除一個(gè)對象綁定:void unbind (in Name n); n
42、 通過名字查找一個(gè)對象:Object resolve (in Name n); n 創(chuàng)建一個(gè)命名空間:NamingContext bind_new_context(in Name n);n 等等.t 使用BindingIterator接口, 可以在一個(gè)給定的命名空間中漫游(Navigate)。Beijing University of Posts and Telecommunications Page 55CORBA服務(wù)小結(jié)服務(wù)小結(jié)t OMG為每個(gè)服務(wù)定義了標(biāo)準(zhǔn)APIn通過IDL定義t 實(shí)現(xiàn)廠商提供支持這些API的具體產(chǎn)品,它們的實(shí)現(xiàn)方法可能不同,但接口是一致的t 用戶購買、部署需要的服務(wù)產(chǎn)品
43、n買源代碼或者可執(zhí)行代碼n安裝并在需要的時(shí)候?qū)嵗痶 在程序中使用時(shí),首先獲取服務(wù)中相應(yīng)對象的IOR,然后調(diào)用它的操作即可。Beijing University of Posts and Telecommunications Page 56綜述綜述 t 對象管理體系結(jié)構(gòu)OMAt OMG的接口定義語言的接口定義語言IDLt 對象請求代理對象請求代理ORBt CORBA服務(wù)t ORB之間的互操作Beijing University of Posts and Telecommunications Page 57ORB的互操作的互操作t可互操作性(interoperability)是指在一個(gè)系統(tǒng)中用不
44、同工具或不同供應(yīng)商的產(chǎn)品開發(fā)出來的兩個(gè)組件是否可以協(xié)調(diào)工作。nORB之間的互操作n與基于DCE、DCOM等的系統(tǒng)的互操作Beijing University of Posts and Telecommunications Page 58 GIOP、IIOP和和ESIOPt 為了不同的ORB間可以互操作,有必要制訂傳輸請求的統(tǒng)一標(biāo)準(zhǔn),規(guī)定傳輸?shù)讓拥臄?shù)據(jù)表示方法與消息格式,nGIOP: 通用ORB間協(xié)議,定義了傳送語法和消息格式的標(biāo)準(zhǔn)集,能夠在任何面向連接的傳輸上實(shí)現(xiàn)ORB間的互操作性。nIIOP: Internet ORB間協(xié)議,定義了如何在TCP/IP傳輸上構(gòu)建GIOP。GIOP和IIOP之間
45、的關(guān)系類似于接口定義及其實(shí)現(xiàn)。nESIOP:能夠針對已使用特定分布式計(jì)算基礎(chǔ)結(jié)構(gòu)的特殊情況(例如DCE-CIOP)構(gòu)建ORB。Beijing University of Posts and Telecommunications Page 59GIOP的基本組成部分的基本組成部分 t The Common Data Representation (CDR) definition:通用數(shù)據(jù)表示定義,它實(shí)際上是IDL數(shù)據(jù)類型在網(wǎng)上傳輸時(shí)的編碼方案。它對所有IDL數(shù)據(jù)類型的映射都作了規(guī)定。t GIOP Message Formats:規(guī)定了Client和Server兩個(gè)角色之間要傳輸?shù)南⒏袷健?種消
46、息格式:Request、Reply、CancelRequest、LocateRequest、LocateReply、CloseConnection、MessageError、Fragment。t GIOP Transport Assumptions:主要規(guī)定在任何面向連接的網(wǎng)絡(luò)傳輸層上的一些操作規(guī)則。如:傳輸應(yīng)該是面向連接的;傳輸應(yīng)是可靠的;在非正常情況下斷開連接時(shí),傳輸應(yīng)能提供某種通知機(jī)制等;Beijing University of Posts and Telecommunications Page 60綜述綜述 t 對象管理體系結(jié)構(gòu)OMAt OMG的接口定義語言的接口定義語言IDLt 對
47、象請求代理對象請求代理ORBt CORBA服務(wù)t ORB之間的互操作Beijing University of Posts and Telecommunications Page 61主要內(nèi)容主要內(nèi)容 t綜述綜述t基于基于CORBA的軟件開發(fā)基本過程的軟件開發(fā)基本過程tRM-ODP與與CORBAt總結(jié)總結(jié)Beijing University of Posts and Telecommunications Page 62ORBacus簡介簡介t什么是ORBacus:n ORBacus是IONA公司的ORB產(chǎn)品。ORBacus小巧但功能齊全,尤其是性能很高,提供實(shí)時(shí)CORBA特性,非常適合于電信領(lǐng)
48、域。另外,ORBacus提供源代碼,這對我們進(jìn)一步揭開CORBA ORB內(nèi)幕、提高程序性能、解決棘手問題都有好處。同時(shí)它還是免費(fèi)的,當(dāng)然商業(yè)用途例外。t支持Java、C+t本節(jié)使用JavaBeijing University of Posts and Telecommunications Page 63 環(huán)境安裝環(huán)境安裝t 本節(jié)使用ORBacus4.0.5t ORBacus不需要安裝過程,只需將它拷貝到某個(gè)目錄下就行。這里假設(shè)在C:ORBacus目錄下。t ORBacus的bin目錄,存放可執(zhí)行文件,如jidl.exe( ORBacus 的IDL編譯器)。t 其lib目錄,存放ORBacus的
49、庫文件,以壓縮包(.jar)的形式存在t 為 CLASSPATH增加:C:Orbacuslibob.jar; .; .classest 為PATH增加:C:Orbacusbint 需要安裝Java環(huán)境,如JDK1.3等。Beijing University of Posts and Telecommunications Page 64示例來源示例來源tORBacus附帶的一個(gè)例子:srcobdemohellot需要使用的文件:nHello.idl idl定義文件nHello_Impl.java 對象實(shí)現(xiàn)nClient.java 客戶程序nServer.java 服務(wù)器程序t拷貝hello目錄到
50、某一個(gè)工作目錄,如D:myworkBeijing University of Posts and Telecommunications Page 65基于基于ORB的軟件開發(fā)過程回顧的軟件開發(fā)過程回顧IDL定義文件定義文件IDL CompilerCLIENTIDLSTUBSERVERIDLSKELETONJavaCompilerC+CompilerCLIENT應(yīng)用CODESERVER實(shí)現(xiàn)代碼CLIENTPROGRAMSERVERPROGRAMCORBARUN-TIMELIBRARIES接口庫Beijing University of Posts and Telecommunications P
51、age 66第一步:定義第一步:定義IDLtHello.idl定義如下:interface Hello void say_hello();Beijing University of Posts and Telecommunications Page 67第二步:編譯第二步:編譯IDL為為Java Stub和和Skeletont 打開DOS窗口,轉(zhuǎn)到D:myworkhello目錄下t 鍵入:jidl -package hello Hello.idlt 編譯后生成以下幾個(gè)文件:nClient側(cè):HelloOperations.java:定義public interface HelloOperati
52、onsHello.java:定義接口 Interface Hello_HelloStub.java:樁代碼,定義了class _HelloStubHelloHelper.java:定義 public class HelloHelper對象nServer側(cè):HelloOperations.java:定義public interface HelloOperationsHelloHolder.java: 定義public final class HelloHolderHelloPOA.java:定義類abstract public class HelloPOABeijing University o
53、f Posts and Telecommunications Page 68第三步:編寫對象實(shí)現(xiàn)第三步:編寫對象實(shí)現(xiàn)t 對象實(shí)現(xiàn)代碼所在的類名字可由程序員自由掌握,只要不與IDL編譯器自動產(chǎn)生的Java類產(chǎn)生名字沖突即可。客戶程序也無須了解對象實(shí)現(xiàn)是由哪一個(gè)Java類完成的。t CORBA應(yīng)用程序的對象實(shí)現(xiàn)最常用、最簡單的實(shí)現(xiàn)方式是使用繼承,即直接繼承由IDL編譯器生成的xxxPOA類。n當(dāng)對象實(shí)現(xiàn)需要利用繼承機(jī)制達(dá)到其他目的時(shí),就必須改用CORBA對象實(shí)現(xiàn)的另一種實(shí)現(xiàn)方式 紐帶機(jī)制(tie mechanism)。t 我們的例子程序采用簡單的繼承方式編寫對象實(shí)現(xiàn),即繼承xxxPOA類。Beij
54、ing University of Posts and Telecommunications Page 69HelloPOA類類t HelloPOA.java是Hello對象的服務(wù)端框架代碼。t xxxPOA類的主要功能:n解包in類型的參數(shù)并將參數(shù)傳遞給對象實(shí)現(xiàn)。n打包返回值與所有out類型的參數(shù)。打包(marshal):指將特定程序設(shè)計(jì)語言描述的數(shù)據(jù)類型轉(zhuǎn)換為CORBA的IIOP流格式。解包(unmarshal):從IIOP流格式轉(zhuǎn)換為依賴于具體程序設(shè)計(jì)語言的數(shù)據(jù)結(jié)構(gòu)。t 編寫對象實(shí)現(xiàn)的最簡單途徑是繼承這些POA類,即把它們作為對象實(shí)現(xiàn)的基類。Beijing University of P
55、osts and Telecommunications Page 70對象實(shí)現(xiàn)類對象實(shí)現(xiàn)類package hello;public class Hello_impl extends HelloPOA public void; say_hello() System.out.println(Hello World!); Beijing University of Posts and Telecommunications Page 71第四步:編寫第四步:編寫Servert Server用來創(chuàng)建相應(yīng)的Servant對象,準(zhǔn)備接受來自Client的請求。本例主要包括兩個(gè)方法。t run()方法:n1.
56、 獲取RootPOA Manager的引用。n2. 創(chuàng)建實(shí)現(xiàn)對象,并將其引用保存在某個(gè)適當(dāng)?shù)牡胤?,以便客戶程序獲取。n3. 激活POA管理器,以允許接受請求。n4. 將控制權(quán)交給ORB,并處于運(yùn)行狀態(tài)。t Main()方法:n初始化ORB;n調(diào)用run()方法n運(yùn)行結(jié)束后,撤銷ORB對象,退出;Beijing University of Posts and Telecommunications Page 72第五步:編寫第五步:編寫ClienttClient程序發(fā)起CORBA調(diào)用,本例定義了兩個(gè)方法。tRun()方法:n1.獲取遠(yuǎn)程對象的引用;n2. 調(diào)用遠(yuǎn)程對象上的方法;tMain()方法:
57、n初始化ORB;n調(diào)用run()方法;n運(yùn)行結(jié)束后,撤銷ORB對象,退出;Beijing University of Posts and Telecommunications Page 73第六步:編譯和運(yùn)行第六步:編譯和運(yùn)行t 轉(zhuǎn)到D:myworkhello目錄下,創(chuàng)建classes目錄:mkdir classest 編譯Java文件:javac d classes hello*.javajavac d classes Client.javajavac d classes Hello_impl.javajavac d classes Server.javat 進(jìn)入classes目錄,先運(yùn)行S
58、erver:java hello.Servert 重開一個(gè)DOS窗口,進(jìn)入D:myworkhelloclasses目錄,運(yùn)行Client:java hello.ClientBeijing University of Posts and Telecommunications Page 74運(yùn)行結(jié)果運(yùn)行結(jié)果t在Client運(yùn)行的DOS窗口,輸入:nEnter h for hello or x for exit:nhnt在Server運(yùn)行的DOS窗口運(yùn)行結(jié)果如下:nHello World!Beijing University of Posts and Telecommunications Page
59、75主要內(nèi)容主要內(nèi)容 t綜述綜述t基于基于CORBA的軟件開發(fā)基本過程的軟件開發(fā)基本過程tRM-ODP與與CORBAt總結(jié)總結(jié)Beijing University of Posts and Telecommunications Page 76t RM-ODP是分布式計(jì)算領(lǐng)域內(nèi)容最廣泛的一個(gè)國際標(biāo)準(zhǔn),是功能最強(qiáng)的分布計(jì)算“元標(biāo)準(zhǔn)”。t CORBA是開放式分布處理思想的一個(gè)實(shí)現(xiàn)。Beijing University of Posts and Telecommunications Page 77體系結(jié)構(gòu)的比較體系結(jié)構(gòu)的比較 - 語言語言t 語言語言: CORBA沒有企業(yè)語言、信息語言和技術(shù)語言t 計(jì)
60、算語言nRM-ODP的每個(gè)對象都可以調(diào)用其它對象在接口上所提供的操作。系統(tǒng)分布的特性對系統(tǒng)設(shè)計(jì)者應(yīng)該是透明的。 CORBA支持RM-ODP計(jì)算語言中的接口類型概念,由OMG IDL表示。 nRM-ODP主要支持兩種類型的操作:詢問型和公告型。 CORBA支持三種類型的調(diào)用:同步調(diào)用、單向調(diào)用和延遲調(diào)用.前兩種方式分別對應(yīng)于RM-ODP的詢問型和公告型。Beijing University of Posts and Telecommunications Page 78體系結(jié)構(gòu)的比較體系結(jié)構(gòu)的比較 - 語言(續(xù))語言(續(xù))t 工程語言nODP的工程語言通過透明對象和透明支持對象提供分布式透明性。
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 4 d t n l 第一課時(shí)(教學(xué)設(shè)計(jì))-2024-2025學(xué)年統(tǒng)編版語文一年級上冊
- 三農(nóng)領(lǐng)域創(chuàng)業(yè)創(chuàng)新支持方案
- 三農(nóng)環(huán)境整治工作實(shí)施方案
- 三農(nóng)產(chǎn)品電子商務(wù)培育農(nóng)業(yè)新動力方案
- 2024年春八年級生物下冊 8.1.1 傳染病及其預(yù)防教學(xué)實(shí)錄 (新版)新人教版
- 2024年秋一年級道德與法治下冊 第四單元 我們在一起 15 分享真快樂教學(xué)實(shí)錄 新人教版
- 《背影》教學(xué)設(shè)計(jì)及反思
- 護(hù)理在小兒肺炎支原體感染治療中的效果分析
- 蒙脫石散聯(lián)用復(fù)合乳酸菌膠囊對腹瀉患兒的影響
- 制造業(yè)綠色制造技術(shù)培訓(xùn)手冊
- 陜西省西安市鐵一中2025屆高三下學(xué)期聯(lián)合考試數(shù)學(xué)試題含解析
- 教師資格考試高級中學(xué)信息技術(shù)學(xué)科知識與教學(xué)能力試題及解答參考(2024年)
- 腹膜透析操作流程及評分標(biāo)準(zhǔn)
- 清風(fēng)電子相冊的設(shè)計(jì)與實(shí)現(xiàn)
- 開封市第一屆職業(yè)技能大賽美容項(xiàng)目技術(shù)文件(世賽項(xiàng)目)
- 醫(yī)院窗簾、隔簾采購 投標(biāo)方案(技術(shù)方案)
- 國家開放大學(xué)《Photoshop圖像處理》章節(jié)測試題參考答案
- 紅木文化智慧樹知到答案2024年廣西大學(xué)
- 控制計(jì)劃課件教材-2024年
- 眼科常用藥物及護(hù)理
- 川教版2024-2025學(xué)年六年級下冊信息技術(shù)全冊教案
評論
0/150
提交評論