分布計(jì)算環(huán)境課件_第1頁
分布計(jì)算環(huán)境課件_第2頁
分布計(jì)算環(huán)境課件_第3頁
分布計(jì)算環(huán)境課件_第4頁
分布計(jì)算環(huán)境課件_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

BeijingUniversityofPostsandTelecommunicationsPage1

Chapter3

面向?qū)ο蟮?/p>

分布計(jì)算環(huán)境

BeijingUniversityofPostsandTelecommunicationsPage2

主要內(nèi)容

?分布式系統(tǒng)中的面向?qū)ο蠹夹g(shù)

?開放式分布處理ODP

?CORBA技術(shù)

BeijingUniversityofPostsandTelecommunicationsPage3

緒論

?OMG組織制定的一個(gè)工業(yè)規(guī)范,是一個(gè)體系結(jié)構(gòu)和一

組規(guī)范。

?目的:在分布式環(huán)境下實(shí)現(xiàn)應(yīng)用的集成,使基于對(duì)象

的軟件成員,在分布的、異構(gòu)的環(huán)境下可重用、可移

植、可互操作。

■OMG的理念:不存在統(tǒng)一的硬件平臺(tái)、不存在統(tǒng)一的操作系

統(tǒng)、編程語言、網(wǎng)絡(luò)協(xié)議、應(yīng)用模式,必須在互操作上達(dá)成

一致。

?方法:提供一個(gè)框架,如果符合這一框架,就可以在

主要的硬件平臺(tái)和操作系統(tǒng)上建立一個(gè)異質(zhì)的分布式

應(yīng)用。

?CORBA結(jié)合了計(jì)算機(jī)工業(yè)中的兩個(gè)重要趨勢:面向

對(duì)象軟件開發(fā)和客戶機(jī)/服務(wù)器計(jì)算。

BeijingUniversityofPostsandTelecommunicationsPage4

主要內(nèi)容

?綜述

?基于CORBA的軟件開發(fā)基本過程

?RM-ODP與CORBA

?總結(jié)

BeijingUniversityofPostsandTelecommunicationsPage5

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage6

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage7

對(duì)象管理體系結(jié)構(gòu)OMA

薇縫綴皴法掇掇然皴繪漆修掇

]應(yīng)用如對(duì)象

IApplicationObjec:s由CORBA支持的頂層業(yè)務(wù)對(duì)象鼻公用設(shè)施

和應(yīng)用系統(tǒng),是針對(duì)特定應(yīng)用

開發(fā)的接口平公用設(shè)施

2

可用于大多數(shù)應(yīng)用領(lǐng)域的面向

終端用戶的工具接口

造水平公用設(shè)施:領(lǐng)域間可共享

-垂直公用設(shè)施:面向某個(gè)領(lǐng)域'

夕嗎市程序b

基于力、加”刈豕刖萬華世L

1都可能用到的通用服務(wù)的接口

an^TeieuuiiniIUInuciiiui

BeijingUniversityofPostsPage8

OMA

?CORBA不只定義了面向?qū)ο蟮倪h(yuǎn)程調(diào)用機(jī)制,

它還定義了不同抽象層次'盤'供了領(lǐng)域間共享或A

面向特定領(lǐng)域的服務(wù)

以面向?qū)ο蟮姆绞教峁┝?/p>

典型的系統(tǒng)級(jí)功能。

Object

facilities

Se?^ces

ORB

提供了網(wǎng)絡(luò)編程

OS1復(fù)雜性的抽象

y

BeijingUniversityofPostsandTelecommunicationsPage9

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage10

OMG接口定義語言IDL

?僅定義接口,不定義實(shí)現(xiàn)

?分隔“對(duì)象作什麼(WHAT)”與“如何

做(HOW)”

?強(qiáng)類型、面向?qū)ο?、語言中立的說明

(描述)型語言

?ANSIC++的子集

?支持多繼承

?支持到多種語言的映射

BeijingUniversityofPostsandTelecommunicationsPage11

RoleofCORBAIDL

BeijingUniversityofPostsandTelecommunicationsPage12

OMGIDL的組成要素

?模塊(module):含有許多功能進(jìn)行分組的接口,形成

附加的分層結(jié)構(gòu),因此,模塊定義了一個(gè)命名空間。

接口(interface):定義了數(shù)據(jù)和操作(方法),共

客戶調(diào)用。接口中可以包括類型、常量、屬性和異常

的聲明。

?操作(method):定義了客戶可以調(diào)用的、處于對(duì)象中

的服務(wù)。操作特性(signature)指操作的參數(shù)和返

回的結(jié)果類型。

屬性(attribute):接口中定義的數(shù)據(jù)。

?數(shù)據(jù)類型:用于描述參數(shù)、屬性、返回值以及異常等

的允許值。如:long,short,float,double,enum,

char,wchar>boolean,octet,any,struct,union,string,

wstring,sequence,fixed,objectreference,interface^

BeijingUniversityofPostsandTelecommunicationsPage13

OMGIDL的操作

?操作名:

參數(shù):in,out,inout;

?返回結(jié)果:

?異常:用來表示操作請(qǐng)求沒有被成功地完成。

?執(zhí)行語義:

最多一次(at-most-once):如果操作請(qǐng)求能夠成功地返回,

那么該操作只被執(zhí)行一次(exactlyonce),如果返回異常,那

么該操作是最多執(zhí)行一次(at-most-once)。沒有oneway修飾符

的操作都屬此類,即同步或延遲同步的操作調(diào)用方式都是這

種語義。

■最大努力(best-effort):不能返回任何結(jié)果,且請(qǐng)求者從不與

操作是否結(jié)束相同步。具有。neway修飾符的操作屬此類。

?上下文:請(qǐng)求的上下文提供了能夠影響請(qǐng)求完成的附加的特定操

作信息。

BeijingUniversityofPostsandTelecommunicationsPage14

IDL與Java及C++的對(duì)應(yīng)關(guān)系

CORBAIDLJavaC++

模塊(Modu1e)包(Package)命名空間(Namespace)

接口(Interface)接口(Interface)純抽象類(Pure

Abstractclass)

方法(method)方法(method)成員函數(shù)(member

function)

BeijingUniversityofPostsandTelecommunicationsPage15

一個(gè)實(shí)例(1)

ModuleBANK

(

InterfaceBANKAccount{

enumaccount_kind{checking,saving};

exceptionaccount_not_available{string.reason};

exceptionincorrect_PIN{};

readonlyattributefloatbalance;

attribueaccount_kindkind_of_account;

voidaccess(instringaccount,instringpin)

raises(accout_not_available,mcorrectjpin);

BeijingUniversityofPostsandTelecommunicationsPage16

一個(gè)實(shí)例(2)

voiddeposit(infloat「outfloatnew_balance)

raises(account_not_available);

voidwithdraw(infloatf,outfloatnew_balance)

raises(account_not_available);

onewayop1(ininti);

BeijingUniversityofPostsandTelecommunicationsPage17

IDL到編程語言的映射

?定義相應(yīng)編程語言所用到的數(shù)據(jù)類型的定義,如:

OMGIDLJava

shortshort

longlonglonglong

octetbyte

?通過ORB能夠進(jìn)行對(duì)象訪問的函數(shù)接口等。如:客戶

存根接口的結(jié)構(gòu)、對(duì)象適配器的結(jié)構(gòu)、ORB接口的結(jié)

構(gòu)等。

?定義了對(duì)象調(diào)用和客戶的控制線程之間的交互和實(shí)現(xiàn),

以實(shí)現(xiàn)程序的控制線程和對(duì)象調(diào)用之間的同步

目前有:Ada、C、C++、Java、Lisp>COBOL>

Python、Smalltalk。

BeijingUniversityofPostsandTelecommunicationsPage18

IDL的使用

BeijingUniversityofPostsandTelecommunicationsPage19

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage20

對(duì)象請(qǐng)求代理ORB

對(duì)象請(qǐng)求代理ORB(ObjectRequestBroker):

定義異構(gòu)環(huán)境下對(duì)象透明地發(fā)送請(qǐng)求和接收響

應(yīng)的基本機(jī)制。ORB為客戶隱藏:

■對(duì)象位置

■對(duì)象實(shí)現(xiàn)方式

■對(duì)象執(zhí)行狀態(tài)

■對(duì)象通信機(jī)制

?ORB并不需要作為一個(gè)單獨(dú)的組件來實(shí)現(xiàn)。它

定義了一系列的接口,任何一種支持了該接口

的實(shí)現(xiàn)方式都是可行的。

BeijingUniversityofPostsandTelecommunicationsPage21

ORB體系結(jié)構(gòu)

(服務(wù)器)

圖3-3CORBAORB的體系結(jié)構(gòu)

BeijingUniversityofPostsandTelecommunicationsPage22

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage23

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage24

接口

?接口:

■客戶程序與對(duì)象實(shí)現(xiàn)之間的界面,描述了客戶可訪

問的對(duì)象操作的一個(gè)集合;

今完全獨(dú)立于對(duì)象所處的位置、實(shí)現(xiàn)對(duì)象的程序設(shè)計(jì)語言以

及對(duì)象接口中未反映的其他特性;

■客戶程序只能通過對(duì)象的接口定義掌握對(duì)象的邏輯

結(jié)構(gòu),并通過發(fā)送請(qǐng)求來影響對(duì)象的行為與狀態(tài)

■對(duì)象接口采用接口定義語言IDL定義;

BeijingUniversityofPostsandTelecommunicationsPage25

ORB的各種接口

(服務(wù)器)

圖3-3CORBAORB的體系結(jié)構(gòu)

BeijingUniversityofPostsandTelecommunicationsPage26

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage27

對(duì)象引用

?對(duì)象引用一臨時(shí)的不透明的句柄,標(biāo)識(shí)

ORB中的一個(gè)對(duì)象實(shí)例。它用于定位響

應(yīng)請(qǐng)求的對(duì)象實(shí)現(xiàn)。

?可互操作的對(duì)象引用IOR:在異構(gòu)ORB

間傳遞OR。

BeijingUniversityofPostsandTelecommunicationsPage28

對(duì)象引用的獲取

?從命名服務(wù)或交易服務(wù)中獲取

?使用工廠對(duì)象

?使用對(duì)象引用字符串。轉(zhuǎn)換為字符,串,

在文偉中、email等中傳遞。

Objecttostring。和stringtoobject();

?特定ORB實(shí)現(xiàn)的方法

?獲取初始引用,如:

C0RBA::0RB::resolve_initial_referen

ces()

?作為方法調(diào)用的返回值

BeijingUniversityofPostsandTelecommunicationsPage29

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage30

客戶和對(duì)象實(shí)現(xiàn)

?客戶(Client)

■客戶訪問對(duì)象的對(duì)象引用,并且調(diào)用對(duì)象上的操作

■客戶只知道對(duì)象的接口,通過調(diào)用感受對(duì)象的行為

對(duì)象實(shí)現(xiàn)(ObjectImplementation)

■通過為對(duì)象實(shí)例定義數(shù)據(jù)和為對(duì)象方法定義代碼提

供對(duì)象的語義;

■對(duì)象可以具有不同的實(shí)現(xiàn)方式;

■對(duì)象實(shí)現(xiàn)不依賴于ORB或者客戶調(diào)用對(duì)象的方式;

■一個(gè)對(duì)象的實(shí)現(xiàn)可以是其它對(duì)象的客戶;

BeijingUniversityofPostsandTelecommunicationsPage31

服務(wù)器

?服務(wù)器是一個(gè)(或一組)組件,能為其它組件

提供某種服務(wù)。即,如果某個(gè)組件創(chuàng)建了一個(gè)

對(duì)象,并能被其它組件通過對(duì)象引用來訪問,

則擁有對(duì)象的組件就是該對(duì)象的服務(wù)器,其它

組件對(duì)這個(gè)對(duì)象的請(qǐng)求操作都將由創(chuàng)建該組件

的服務(wù)器來執(zhí)行。

■例如一個(gè)進(jìn)程;對(duì)象實(shí)現(xiàn)的實(shí)例:

BeijingUniversityofPostsandTelecommunicationsPage32

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage33

ORB核心

(服務(wù)器)

圖3-3CORBAORB的體系結(jié)構(gòu)

BeijingUniversityofPostsandTelecommunicationsPage34

ORB核心提供的接口

?ORB內(nèi)核提供的服務(wù)對(duì)象接口,同時(shí)為客戶方

和對(duì)象實(shí)現(xiàn)方所見,可直接為應(yīng)用程序所使用:

■對(duì)象引用操作:提供對(duì)象引用的串化和反串化及對(duì)

裹可用復(fù)制、刪除、比較及探測對(duì)象引用存在與否

等操作o如object_to_string();release();

■ORB和對(duì)象適配器初始化:使應(yīng)用得到指向ORB的

對(duì)象引用。如ORB_init();

■獲取初始對(duì)象引用:ORB規(guī)定了客戶對(duì)象在ORB初

始時(shí)獲取初始對(duì)象引用的方法,如

resolve_initial_references();

BeijingUniversityofPostsandTelecommunicationsPage35

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage36

圖3-3CORBAORB的體系結(jié)構(gòu)

BeijingUniversityofPostsandTelecommunicationsPage37

主要功能

接口庫(IFR,InterFaceRepository)

■ORB的一個(gè)組件,提供服務(wù),用于接口定義的存儲(chǔ)、

查找和管理;

■CORBA對(duì)其接口進(jìn)行了定義;

實(shí)現(xiàn)庫(IR,ImplemetationRepository)

■ORB的一個(gè)組件,用于存儲(chǔ)對(duì)象實(shí)現(xiàn)的相關(guān)信息,

如;如何定位對(duì)象實(shí)現(xiàn),如何激活對(duì)象實(shí)現(xiàn),以及

其它的與ORB和操作系統(tǒng)相關(guān)的信息;

■OMG沒有對(duì)其進(jìn)行詳細(xì)規(guī)范,與具體實(shí)現(xiàn)相關(guān);

如OrbixWeb:

putit-hHostNameServerName-jServerAbsoluteClassName

BeijingUniversityofPostsandTelecommunicationsPage38

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage39

靜態(tài)和動(dòng)態(tài)調(diào)用

(服務(wù)器)

圖3-3CORBA0RB的體系結(jié)構(gòu)

BeijingUniversityofPostsandTelecommunicationsPage40

BeijingUniversityofPostsandTelecommunicationsPage41

靜態(tài)調(diào)用:存根和骨架

?OMGIDL編譯器根據(jù)接口定義來產(chǎn)生客戶方的存根和

服務(wù)方的骨架。

?靜態(tài)IDL存根(IDLstubs):

■編譯時(shí)確定的的靜態(tài)接口,位于客戶對(duì)象本地,對(duì)客戶

來說相當(dāng)于遠(yuǎn)程的執(zhí)行對(duì)象。由存根向ORB提交請(qǐng)求。

■負(fù)責(zé)對(duì)請(qǐng)求參數(shù)的封裝和發(fā)送,以及對(duì)返回結(jié)果的接

收和解封裝,并以適當(dāng)?shù)母袷竭M(jìn)行通信傳輸。

?靜態(tài)IDL骨架(IDLskeletons):

■在本地調(diào)用執(zhí)行對(duì)象服務(wù),并與ORB通信。

■針對(duì)執(zhí)行對(duì)象來說,代表了遠(yuǎn)程客戶。骨架接收經(jīng)ORB

來的請(qǐng)求,將請(qǐng)求參數(shù)解封裝,識(shí)別客戶所請(qǐng)求的服務(wù),

(向上)調(diào)用服務(wù)器中的對(duì)象實(shí)現(xiàn),把執(zhí)行結(jié)果封裝,

并將結(jié)果返回給客戶程序。

BeijingUniversityofPostsandTelecommunicationsPage42

動(dòng)態(tài)調(diào)用:DII和DSI

?動(dòng)態(tài)調(diào)用接口(DII)和動(dòng)態(tài)骨架接口(DSI):通用存

根和通用骨架,由ORB直接提供,不依賴于所調(diào)用對(duì)

象的接口。

?DII一支持客戶方的動(dòng)態(tài)請(qǐng)求調(diào)用,使客戶方應(yīng)用可以

在運(yùn)行時(shí)向任何對(duì)象發(fā)出請(qǐng)求,動(dòng)態(tài)地選擇對(duì)象的實(shí)

現(xiàn)接口和操作。

?DSI-DII在Server方的對(duì)應(yīng)。DSI允許用戶在沒有靜態(tài)

骨架信息的條件下來獲得對(duì)象實(shí)現(xiàn)。

?一個(gè)由DII發(fā)起的請(qǐng)求可能由靜態(tài)骨架來接受,也可以

由DSI來接受。一個(gè)靜態(tài)存根發(fā)起的請(qǐng)求可以由DSI來

接受,也可以由靜態(tài)骨架來接受。

BeijingUniversityofPostsandTelecommunicationsPage43

動(dòng)態(tài)調(diào)用的大致過程

?獲陽接口名

℃」nterfjacc()

____K

■獲得方法描逑,港請(qǐng)求對(duì)象上調(diào)用相應(yīng)的方法,:

lookup_n?rr?tf

dcecribe()將請(qǐng)求發(fā)送出去。有三種方法:

■創(chuàng)建變元列表?同步:使用invokeO

?延遲同步:使用send_deferred()

ffget_response()

?單向調(diào)用:彳吏用send_oneway()

遠(yuǎn)程調(diào)用的

3種方法

BeijingUniversityofPostsandTelecommunicationsPage44

靜態(tài)調(diào)用與動(dòng)態(tài)調(diào)用的對(duì)比

?靜態(tài)調(diào)用:

■優(yōu)點(diǎn):

更易編程

今提供了更強(qiáng)的類型校驗(yàn)

今速度快

》自編文檔

■缺點(diǎn):不靈活,客戶編譯時(shí)需要存根

?動(dòng)態(tài)調(diào)用:

■優(yōu)點(diǎn):靈活、可擴(kuò)展。客戶可在調(diào)用時(shí)發(fā)現(xiàn)接口的

相關(guān)信息,不需在編譯時(shí)了解。允許服務(wù)器端增加

新的類而無需在客戶代碼上進(jìn)行修改。

■缺點(diǎn):要對(duì)數(shù)據(jù)進(jìn)行類型校驗(yàn)、速度慢

BeijingUniversityofPostsandTelecommunicationsPage45

靜態(tài)調(diào)用還是動(dòng)態(tài)調(diào)用

使用范例推薦的調(diào)用技術(shù)

客戶頻繁使用服務(wù)器對(duì)象,使用靜態(tài)預(yù)編譯存根

服務(wù)器對(duì)象無變化。

客戶很少調(diào)用服務(wù)器對(duì)象可使用DII

客戶在運(yùn)行時(shí)發(fā)現(xiàn)服務(wù)器對(duì)象使用DII

客戶在瀏覽器內(nèi)運(yùn)行,發(fā)現(xiàn)新對(duì)象使用Applet和靜態(tài)存根

BeijingUniversityofPostsandTelecommunicationsPage46

主要內(nèi)容

?接口

?對(duì)象引用

?客戶和對(duì)象實(shí)現(xiàn)

?ORB核心

?接口庫和實(shí)現(xiàn)庫

?動(dòng)態(tài)調(diào)用和靜態(tài)調(diào)用

?對(duì)象適配器

BeijingUniversityofPostsandTelecommunicationsPage47

對(duì)象適配器

Page48

CORBA對(duì)象和伺服對(duì)象

?CORBA對(duì)象:

■可看作是一個(gè)具有對(duì)象標(biāo)識(shí)、對(duì)象接口及對(duì)象實(shí)現(xiàn)

的抽象實(shí)體。

■從客戶程序的角度看,IOR中包含了對(duì)象的標(biāo)識(shí)、

接口類型及其他信息以查找對(duì)象實(shí)現(xiàn)。

?伺服對(duì)象(Servant):

■指具體程序設(shè)計(jì)語言的對(duì)象實(shí)例或?qū)嶓w,通常存在

于一個(gè)服務(wù)程序進(jìn)程之中。

對(duì)象適配器(ObjectAdaptor):

■一個(gè)重要的ORB組件,它負(fù)責(zé)將抽象的CORBA對(duì)

象映射到具體的伺服對(duì)象。

BeijingUniversityofPostsandTelecommunicationsPage49

主要功能

?服務(wù)器利用對(duì)象實(shí)現(xiàn)創(chuàng)建伺服對(duì)象,然后將這些服務(wù)

端本地的對(duì)象實(shí)例轉(zhuǎn)換為可供遠(yuǎn)程使用的CORBA對(duì)象:

■給該本地對(duì)象實(shí)例關(guān)聯(lián)了對(duì)象標(biāo)識(shí)、對(duì)象引用;

?對(duì)象適配器是管理服務(wù)端伺服對(duì)象、對(duì)象標(biāo)識(shí)、對(duì)象

引用及它們之間關(guān)聯(lián)的主要工具。

■它負(fù)責(zé)決定在收到客戶請(qǐng)求時(shí)應(yīng)調(diào)用哪個(gè)伺服對(duì)象,然后調(diào)

用該伺服對(duì)象上的合適操作;

?CORBA支持多種不同類型的對(duì)象適配器,但所有對(duì)象

適配器的主要作用都是創(chuàng)建對(duì)象引用,并將對(duì)象引用

與真正執(zhí)行服務(wù)的程序設(shè)計(jì)語言伺服對(duì)象相關(guān)聯(lián)。

BOA:BasicObjectAdapter

今伺服對(duì)象的注冊和激活是進(jìn)程級(jí)的;

POA:PortableObjectAdapter

“伺服對(duì)象的注冊和激活是對(duì)象級(jí)的;

BeijingUniversityofPostsandTelecommunicationsPage50

/是ORB最關(guān)鍵的部分,

負(fù)責(zé)請(qǐng)求的通信設(shè)施:

0peration()

客戶?對(duì)象的定位

ORB內(nèi)核提供的服務(wù)對(duì)象接口,

M同時(shí)為客戶方和對(duì)象實(shí)現(xiàn)方所見,

對(duì)象引用的可直接為應(yīng)用程序所使用。

方法調(diào)用、所定義的ID

可用語言:,Java,

對(duì)象定不13^

da...

(國客戶程序要調(diào)用遠(yuǎn)程對(duì)象上的方法時(shí),首先要得到這個(gè)遠(yuǎn)程對(duì)象的引用,之后就可以\

像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程對(duì)象的方法。當(dāng)發(fā)出一個(gè)調(diào)用時(shí);實(shí)際上ORB會(huì)截取這個(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í)在同一臺(tái)機(jī)器上也如此),并通過將參

藪Unmarshaling的過程,傳到正確的對(duì)象上(這整個(gè)過程叫重定向,Redirecting),服務(wù)

既對(duì)象完成處理后,ORB通過同樣的Marshaling/Unmarshaling方式將結(jié)果返回給客戶。J

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage52

CORBA服務(wù)

?公共對(duì)象服務(wù):系統(tǒng)級(jí)的對(duì)象框架。擴(kuò)展了基

本的CORBA體系結(jié)構(gòu)。

?CORBA服務(wù)代表了一組預(yù)先實(shí)現(xiàn)的,軟件開

發(fā)商通常需要的分布式對(duì)象。

BeijingUniversityofPostsandTelecommunicationsPage53

CORBA服務(wù)清單例

命名服務(wù)(NamingService):為客戶程序通過名

字查找對(duì)象實(shí)現(xiàn)提供支持。

事件服務(wù)(EventService):使對(duì)象間的通信能夠

以松耦合的方式進(jìn)行。

生命周期服務(wù)(LifeCycleService):為對(duì)象的創(chuàng)

建、刪除、拷貝和移動(dòng)提供支持。

持久狀態(tài)服務(wù)(PersistentStateService):為對(duì)象

持久狀態(tài)的維護(hù)和管理提供支持。

事務(wù)服務(wù)(TransactionService):為事務(wù)處理提供

支持。

并發(fā)服務(wù)(ConcurrencyService):為多個(gè)客戶協(xié)

調(diào)一致地同時(shí)訪問共享資源提供支持。

BeijingUniversityofPostsandTelecommunicationsPage54

CORBA服務(wù)清單例(2)

關(guān)系服務(wù)(RelationshipService):為實(shí)體和它們之

間地關(guān)系的外在表示提供支持。

外部服務(wù)(ExternalizationService):為對(duì)象的外部

化(externalizing)和內(nèi)在化(internalizing)提供支

持.

查詢服務(wù)(QueryService)::為客戶在對(duì)象集合中

查找滿足某種查詢標(biāo)準(zhǔn)的對(duì)象提供支持。

許可證服務(wù)(LicensingService):為軟件許可證的

管理提供支持。

屬性服務(wù)(PropertyService):為對(duì)象屬性的定義和

操縱提供支持。

時(shí)間服務(wù)(TimeService):為客戶獲取當(dāng)前時(shí)間以

及可能的誤差提供支持。

安全服務(wù)(SecurityService):為基于CORBA的整

個(gè)系統(tǒng)的安全提供支持。

BeijingUniversityofPostsandTelecommunicationsPage55

CORBA服務(wù)清單例(3)

交易對(duì)象服務(wù)(TradingObjectService):為提

供和查找具有特定屬性的對(duì)象提供支。

集合服務(wù)(CollectionsService):為創(chuàng)建以及操

縱各種常用集合類型提供支持。

通知服務(wù)(Noti行cationService):對(duì)事件服務(wù)

的擴(kuò)展,支持事件的類型定義、過濾條件的設(shè)定、

服務(wù)質(zhì)量的設(shè)定等。

增強(qiáng)的時(shí)間視圖服務(wù)(EnhancedViewofTime

Service):為一致地使用具有各種自身特點(diǎn)的時(shí)

鐘提供支持。

BeijingUniversityofPostsandTelecommunicationsPage56

命名服務(wù)

?目的:為通過名字查找對(duì)象提供支持。

?方法:定義了一系列的接口,使客戶可以管理

對(duì)象的命名空間、在命名空間中查找對(duì)象。

?基本概念:

命名上下文Namingcontext:一種命名空間,在該范

圍內(nèi),所有名字是唯一的。

名字Name:一個(gè)有序的由組件(component)構(gòu)成的

序列,也叫對(duì)象的復(fù)合名。在這個(gè)序列中,除最后

一個(gè)組件以外,其它都是一個(gè)命名空間的名字。最

后的組件是這個(gè)對(duì)象的簡單名。

■名字綁定Namebinding:名字到對(duì)象的關(guān)連。

BeijingUniversityofPostsandTelecommunicationsPage57

支持分層命名的CORBA對(duì)象

CompoundName:

ResortsMexicoClubMedPlayaBlance

C0RBA0bjectsSupportHierachica1Naming

BeijingUniversityofPostsandTelecommunicationsPage58

命名服務(wù)的使用

使用NamingContext接口提供的API,可以:

將一個(gè)對(duì)象與一個(gè)名字綁定:

voidbind(inNamen,inObjectobj);

在一個(gè)命名空間中,刪除一個(gè)對(duì)象綁定:

>voidunbind(inNamen);

通過名字查找一個(gè)對(duì)象:

Objectresolve(inNamen);

創(chuàng)建一個(gè)命名空間:

NamingContextbind_new_context(inNamen);

守守?

?使用Bindingiterator接口,可以在一個(gè)給定的命名空間

中漫游(Navigate)o

BeijingUniversityofPostsandTelecommunicationsPage59

小結(jié)

?OMG為每個(gè)服務(wù)定義了標(biāo)準(zhǔn)API

■通過IDL定義

?實(shí)現(xiàn)廠商提供支持這些API的具體產(chǎn)品,它們

的實(shí)現(xiàn)方法可能不同,但接口是一致的

?用戶購買、部署需要的服務(wù)產(chǎn)品

■買源代碼或者可執(zhí)行代碼

■安裝并在需要的時(shí)候?qū)嵗?/p>

?在程序中使用時(shí),首先獲取服務(wù)中相應(yīng)對(duì)象的

IOR,然后調(diào)用它的操作即可。

BeijingUniversityofPostsandTelecommunicationsPage60

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage61

ORB的互操作

可互操作性(interoperability)是指在一

個(gè)系統(tǒng)中用不同工具或不同供應(yīng)商的產(chǎn)

品開發(fā)出來的兩個(gè)組件是否可以協(xié)調(diào)工

作。

■ORB之間的互操作

■與基于DCE、DCOM等的系統(tǒng)的互操作

BeijingUniversityofPostsandTelecommunicationsPage62

GIOP、HOP和ESIOP

?為了不同的ORB間可以互操作,有必要制訂傳

輸請(qǐng)求的統(tǒng)一標(biāo)準(zhǔn),規(guī)定傳輸?shù)讓拥臄?shù)據(jù)表示

方法與消息格式,

■GIOP:通用ORB間協(xié)議,定義了傳送語法和

消息格式的標(biāo)準(zhǔn)集,能夠在任何面向連接的傳

輸上實(shí)現(xiàn)ORB間的互操作性。

■IIOP:InternetORB間協(xié)議,定義了如何在

TCP/IP傳輸上構(gòu)建GIOP。GIOP和HOP之間的關(guān)

系類似于接口定義及其實(shí)現(xiàn)。

■ESIOP:能夠針對(duì)已使用特定分布式計(jì)算基礎(chǔ)

結(jié)構(gòu)的特殊情況(例如DCE-CIOP)構(gòu)建ORB。

BeijingUniversityofPostsandTelecommunicationsPage63

GIOP的基本組成部分

TheCommonDataRepresentation(CDR)definition:

通用數(shù)據(jù)表示定義,它實(shí)際上是IDL數(shù)據(jù)類型在網(wǎng)上

傳輸時(shí)的編碼方案。它對(duì)所有IDL數(shù)據(jù)類型的映射都

作了規(guī)定。

GIOPMessageFormats:規(guī)定了Client和Server兩個(gè)角

色之間要傳輸?shù)南⒏袷健?種消息格式:Request>

Reply>CancelRequest>LocateRequest>LocateReply>

CloseConnection>MessageError>Fragmento

GIOPTransportAssumptions:主要規(guī)定在任何面向連

接的網(wǎng)絡(luò)傳輸層上的一些操作規(guī)則。如:傳輸應(yīng)該是

面向連接的;傳輸應(yīng)是可靠的;在非正常情況下斷開

連接時(shí),傳輸應(yīng)能提供某種通知機(jī)制等;

BeijingUniversityofPostsandTelecommunicationsPage64

CORBA對(duì)互操作性的支持

?CORBA的目標(biāo)是支持多個(gè)層次的可互操作性,

CORBA規(guī)范經(jīng)過多次改進(jìn)與發(fā)展才達(dá)到這一

目標(biāo)。

■早期的CORBA版本強(qiáng)調(diào)不同平臺(tái)與語言之間的可互操

作性,包括了IDL標(biāo)準(zhǔn)以及IDL到程序設(shè)計(jì)語言的映射。

使用同一供應(yīng)商的ORB產(chǎn)品開發(fā)的客戶程序與服務(wù)程序

之間可以交互,但使用不同供應(yīng)商的ORB產(chǎn)品開發(fā)的客

戶程序與服務(wù)程序則未必是可互操作的。

■CORBA2.0版引入GIOP和HOP,從而實(shí)現(xiàn)了不同供應(yīng)

商的ORB產(chǎn)品之間的可互操作性,所有供應(yīng)商的ORB產(chǎn)

品如果與CORBA2.0兼容則彼此之間可互操作。

BeijingUniversityofPostsandTelecommunicationsPage65

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage66

CORBA規(guī)范

?CORBA規(guī)范是一組規(guī)范的集合,通常包括:

■CORBAORB規(guī)范(“TheCommonObject

RequestBroker:ArchitectureandSpecification"),

主要包括:

-CORBACORE:包含ObjectOverview>IDL語法和語

義、ORB、動(dòng)態(tài)調(diào)用(DII和DSI)、接口倉庫

(InterfaceRepository),對(duì)象適配器POA等CORBA最

核心的概念。

fCORBAInteroperability(CORBA互操作性):主要規(guī)

定不同ORB間的互操作性,包括GIOP、HOP、Inter-

ORBBridge以及特定環(huán)境下的DCEESIOP(如CIOP)等。

?CORBANetworking:規(guī)定和非CORBA系統(tǒng)的互聯(lián),

目前主要規(guī)定和Microsoft的COM、OLEAutomation以

及DCOM的互聯(lián)。

“CORBA語言映射:規(guī)定OMGIDL到各種編程語言的

映射規(guī)則,目前規(guī)定了IDL到C、C++、JAVA、

SmallTalksAda、COBOL等語言的映射。

BeijingUniversityofPostsandTelecommunicationsPage67

CORBA規(guī)范(續(xù))

?CORBA公共月員務(wù)規(guī)范(CORBAservices

Specifications):17種服務(wù)對(duì)象。

?CORBA設(shè)施規(guī)范(CORBAfacilities

Specifications):設(shè)施(facilities)處于公共服

務(wù)(Services)更高的一層,他們通常規(guī)定某個(gè)

領(lǐng)域應(yīng)用的基礎(chǔ)框架(通常稱垂直公共設(shè)施),

或所有領(lǐng)域能公用的部分(通常稱水平公共設(shè)

施)。如國際化時(shí)間和移動(dòng)代理

?CORBA行業(yè)規(guī)范(CORBAIndustries

Specifications):一些專用規(guī)范,和各行業(yè)緊密

相關(guān)。處于比垂直公共設(shè)施更高一層次上。如:

商業(yè)、金融、制造業(yè)、電信、交通、醫(yī)療保健

等。

BeijingUniversilyofPostsandTelecommunicationsPage68

綜述

?對(duì)象管理體系結(jié)構(gòu)OMA

?OMG的接口定義語言IDL

?對(duì)象請(qǐng)求代理ORB

?CORBA服務(wù)

?ORB之間的互操作

?CORBA規(guī)范

?CORBA發(fā)展歷程

BeijingUniversityofPostsandTelecommunicationsPage69

CORBA發(fā)展歷程

?這里指CORBAORB規(guī)范。

?經(jīng)歷的主要版本:

■CORBA1:最早于1990提出,包括了ORB和IDL等

CORBA基本概念。

■CORBA2.0[95-07]:于1994底提出,95年成為規(guī)范,

主要貢獻(xiàn)是IIOP,另外,規(guī)定了IDL到C和C++的映射

■CORBA2.0[96-07]:增加了到Smalltalk的映射,增加

了到COM和OLEAutomation的映射

■CORBA2.1[97-08]:增加了到COBOL和Ada的映射。

■CORBA2.2[98-02]:增加了POA(PortableObject

Adapter),以替代BOA;增加了AnyValues的動(dòng)態(tài)管

理;增加了Interceptors(攔截器),用來實(shí)現(xiàn)安全特性;

增加了Java映射

BeijingUniversityofPostsandTelecommunicationsPage70

CORBA發(fā)展歷程(續(xù))

CORBA2.3[99-06]:增加了ValueTypeSemantics^Interface

Semantics.如定了在CORBA調(diào)用參數(shù)中傳遞對(duì)象(傳遞對(duì)

象值而非引用)以及一些復(fù)雜數(shù)據(jù)(如圖片)時(shí)的一些規(guī)

則。

■CORBA2.3.1[99-10]:做了一些修訂,沒有增加新的東西

■CORBA2.4[00-10]:士曾加了CORBAMessaging,Minimum

CORBA,Real-TimeCORBA等。

■CORBA2.4.1[00-11],CORBA2.4.2[01-02]:做了一些修訂,

沒有增加新的東西。

■CORBA2.5[01-09]:士曾加了CORBAFaultTolerant,并對(duì)其

他的一些內(nèi)容做了一些修訂,如Real-TimeCORBA、

CORBAMessaging、PortableInterceptors

■CORBA3已經(jīng)正式發(fā)布,集中于CORBAComponents技術(shù)。

目前最后正式發(fā)布版本為3.1(2008.1)

BeijingUniversityofPostsandTelecommunicationsPage71

主要的CORBA產(chǎn)品

Orbix(C++,Java)、ORBacus(C++>Java):IONA公司

■Orbix6.3SP3-EffectivedateJune30,2008

?IBM

RationalSystemsDevelopersupportsCORBA

VisiBroker(C++,Java):原VisigenicSoft

溫馨提示

  • 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)論