版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 頁共27頁CORBA規(guī)范綜述張亞紅宋凱華東計算技術(shù)研究所二000年三月目錄TOC o 1-5 h z HYPERLINK l bookmark4 引言3第一章CORBA體系結(jié)構(gòu)3第1.01節(jié)CORBA規(guī)范概述3 HYPERLINK l bookmark6 第1.02節(jié)對象管理架構(gòu)(OMA)4 HYPERLINK l bookmark8 第1.03節(jié)CORBA詳細結(jié)構(gòu)圖5第二章對象服務(CORBAServices)的具體內(nèi)容7 HYPERLINK l bookmark20 第2.01節(jié)名字服務7 HYPERLINK l bookmark22 第2.02節(jié)生存周期服務8 HYPERLINK l
2、 bookmark26 第2.03節(jié)事件服務10 HYPERLINK l bookmark32 第2.04節(jié)交易黃頁服務12 HYPERLINK l bookmark34 第2.05節(jié)事務服務13 HYPERLINK l bookmark36 第2.06節(jié)并發(fā)控制服務15 HYPERLINK l bookmark38 第2.07節(jié)安全服務15 HYPERLINK l bookmark40 第2.08節(jié)持久性服務16 HYPERLINK l bookmark46 第2.09節(jié)流轉(zhuǎn)換服務18 HYPERLINK l bookmark48 第2.10節(jié)查詢服務19 HYPERLINK l bookm
3、ark50 第2.11節(jié)組服務19 HYPERLINK l bookmark52 第2.12節(jié)對象關(guān)系服務19 HYPERLINK l bookmark56 第2.13節(jié)時間服務20 HYPERLINK l bookmark58 第2.14節(jié)準許服務21 HYPERLINK l bookmark62 第2.15節(jié)屬性服務21第三章CORBA相關(guān)產(chǎn)品及CORBA的未來22 HYPERLINK l bookmark66 第3.01節(jié)CORBA相關(guān)產(chǎn)品22StarBus的ORB核心機制原理23 HYPERLINK l bookmark68 第3.02節(jié)CORBA的未來24 HYPERLINK l b
4、ookmark70 第四章程序開發(fā)一般過程25 HYPERLINK l bookmark72 第4.01節(jié)程序開發(fā)一般過程25 HYPERLINK l bookmark74 第4.02節(jié)用Starbus開發(fā)分布應用步驟27 HYPERLINK l bookmark76 參考文獻27引言對象管理組織(OMG)提出的CORBA規(guī)范為實現(xiàn)分布式環(huán)境下的軟件重用、移植和互操作提供了一套前景光明的規(guī)范,并為開放式系統(tǒng)的研究提供了一個很好的系統(tǒng)實現(xiàn)框架。介紹CORBA的文章已有很多,本文試圖能夠從結(jié)構(gòu)上簡而全的對它進行綜述,并簡單介紹了相關(guān)產(chǎn)品和CORBA環(huán)境下的程序開發(fā)過程。第一章CORBA體系結(jié)構(gòu)第1
5、.01節(jié)CORBA規(guī)范概述CORBA(CommonObjectRequestBrokerArchitecture)公共對象請求代理架構(gòu),是國際對象管理組織(ObjectManagementGroupOMG)制定的分布對象計算規(guī)范,目前最新版本為3.0(于1999年11月發(fā)布),目的是促進在分布、異構(gòu)環(huán)境中基于對象的軟件的可重用性、可移植性與互操作性,實現(xiàn)多廠商網(wǎng)絡環(huán)境中應用的互操作;OMG組織是一個超過750名成員的國際組織,它包括信息系統(tǒng)廠商,軟件開發(fā)者和用戶。自1989成立以來,OMG組織一直在促進軟件開發(fā)中的面向?qū)ο蠹夹g(shù)的理論與實踐,該組織的合同包括建立業(yè)界的指導方針與對象管理規(guī)格說明,
6、以提供應用開發(fā)的公共框架。主要目的是促進在分布、異構(gòu)環(huán)境中基于對象的軟件的可重用性、可移植性與互操作性。遵循這些規(guī)格說明有可能開發(fā)出一種跨越所有主要硬件舞臺和操作系統(tǒng)的異構(gòu)應用環(huán)境。OMG組織的目的是通過建立對象管理體系結(jié)構(gòu)來發(fā)展對象技術(shù)并引導其發(fā)展方向。CORBA是一個關(guān)于分布對象平臺架構(gòu)的標準化規(guī)格說明,目的是實現(xiàn)多廠商網(wǎng)絡環(huán)境中應用的互操作。CORBA實現(xiàn)允許應用軟件之間的彼此通信,而不必顧及這些應用軟件的位臵是誰設計的,及它們是用什么語言實現(xiàn)的等問題。CORBA標準第一版,CORBA1.1是于己于1991年推出的。它定義了CORBA接口定義語言(IDL)及應用編程接口,允許客戶在COR
7、BA通信設施的頂部與服務器對象進行交互。這些通信設施具體包含在所謂對象請求代理(ORB)IDL提供了說明構(gòu)件接口的統(tǒng)一的方法,它獨立于符合接口要求的實現(xiàn)構(gòu)件的編程語言。1994年下半年發(fā)布了CORBA2.0版。它的主要增強點:給出了關(guān)于不同廠商ORB之間的互操作協(xié)議的規(guī)格說明。1997年8月,OMG組織又發(fā)布了CORBA2.1版。它包括以下方面的規(guī)格說明:互操作性修訂,IDL類型擴充,CORBA映射,Ada映射,及CORERTF的某些變動。CORBA標準還處于發(fā)展中,OMG組織即將發(fā)布CORBA3.0版。CORBA3.0版包括:可重用對象的構(gòu)件,模塊腳本語言規(guī)范,支持object-by-val
8、ue,多個接口,對Java接口的定義語言映射,通過防火墻標準化InternetInter-ORB協(xié)議,及集成分布計算環(huán)境的路徑映射等。OMG首先發(fā)布了OMA(對象管理體系結(jié)構(gòu)),提出了構(gòu)件互操作的軟總線ORB(ObjectRequestBroker),并將構(gòu)件分為三類:公共對象服務(COS)、面向領(lǐng)域的公共設施(CF)和完成具體任務的應用構(gòu)件。在其后發(fā)布的CORBA1.0和2.0版中OMG對對象模型以及ORB的功能進行了規(guī)定。CORBA規(guī)范內(nèi)容很多,其中與構(gòu)件實現(xiàn)規(guī)范相關(guān)的主要內(nèi)容包括IDL、IR和ComponentModel。IDLIDL(InterfaceDefinitionLanguag
9、e)是CORBA用來定義對象接口的語言,是客戶與服務器之間的一種契約。通過這個契約,ORB有效地分離了功能的實現(xiàn)方與使用方,使雙方可以用不同的語言實現(xiàn),可以運行在不同的操作系統(tǒng)上,并且可以運行在不同的結(jié)點上。IDL本身不是一種編程語言,它獨立于任何一種具體的語言之上,但它采用了C+的詞法,并盡量與C+的語法兼容,因此易于被編程人員所掌握。IRIR(InterfaceRepository)是ORB的構(gòu)成部分之一,它提供一致的接口定義存儲,管理并提供對OMGIDL所指定對象定義集合的訪問。IR可以完成提供請求簽名的類型檢查(請求是否通過DII或stub發(fā)出)、幫助檢查接口繼承圖的正確性、幫助提供不
10、同ORB實現(xiàn)之間的互操作性等工作。ComponentModelCORBAComponentModemCORBA3.0的核心內(nèi)容之一,該模型的提出是為了使更多的編程人員方便地進行基于CORBA的軟件開發(fā)。CORBA構(gòu)件模型主要在構(gòu)件的事件、屬性、定制、組裝、包(Packaging)以及構(gòu)件池(ComponentRepository)等方面作出規(guī)定。第1.02節(jié)對象管理架構(gòu)(OMA)其中,CORBA對象請求代理ObjectRequestBroker(ORB)稱為ORB總線,通過ApplicationInterface、DomainInterfaces、CommonFacilities、Object
11、Services四類接口(服務)來完成客戶與CORBA對象之間的通信,ORB內(nèi)核完成對象的創(chuàng)建、實現(xiàn)、定位以及通信機制等;ObjectServices是指對總線進行擴展的系統(tǒng)級別服務,共十五種(見第二部分);CommonFacilities是指應用對象直接使用的服務框架;ApplicationInterfaces是指用戶最終使用的商用對象及應用;DomainInterfaces則面向?qū)S妙I(lǐng)域。圖1.1、1.2、1.3描述了它們之間的關(guān)系。對象管理架構(gòu)(OMA)為OMG組織將不同標準大規(guī)模集成起來的框架OMA帶有對象模型(objectmodel)與稱之為參數(shù)模型(referencemodel)的
12、概念性架構(gòu)。OMA中定義了CORBA四個主要部分:ORB(ObjectRequestBroker)、對象服務(Objectservice)、公共設施和應用對象。對象模型把計算實體看作為可標識的對象。對象通過提供使用環(huán)境的服務,封裝了狀態(tài)與行為。環(huán)境由向?qū)ο蟀l(fā)出請求的客戶(client)組成;對象由對象引用(objectreference)來標識。在與對象模型相聯(lián)系的類型層次結(jié)構(gòu)中,把對象引用作為特殊的類型處理。除了對象引用外,對象模型也提供了若干種簡單類型與類型構(gòu)造符,包括序列(sequemce),結(jié)構(gòu)(structure),聯(lián)合(union),及枚舉(enumeration)等,后者可用來構(gòu)
13、造用戶定義的結(jié)構(gòu)類型。OMA把對象接口與它的實現(xiàn)明確地區(qū)分開來。接口通過操作的集合定義了關(guān)于客戶的合同,滿足此接口的所有實現(xiàn)將為客戶提供合適的行為。對象模型支持這種抽象,它既允許設計者提出公用功能,如公用結(jié)構(gòu)與公用行為,又能通過接口繼承性(interfaceinheritance)增量地加入新的功能。通過繼承把接口中使用的服務與類型傳遞給后代接口,對象接口可用不同編程語言來實現(xiàn)。滿足特定接口的對象實現(xiàn)可以彼此透明地替換,只要接口保持不變,客戶察覺不到實現(xiàn)的變動,也不必為利用替換對象的能力而重編譯。這些特性便于系統(tǒng)逐步適應技術(shù)的變動,質(zhì)量提高或性能要求。圖1.2中參考模型包括概念性架構(gòu)和一組可重
14、用的功能接口,或一組特定應用的對象實現(xiàn)。參考模型的主體為對象請求代理(ORB)。它提供了對象可以透明地彼此交互的標準機制。這里,客戶和服務器對象是本地的還是分布的都是一樣的。而且屏蔽了服務請求格式與內(nèi)部數(shù)據(jù)表示的多樣性。參考模型支持4類接口,公共設施,領(lǐng)域接口及對象服務:應用接口是現(xiàn)有應用的接口。它們的定義不是CORBA標準的一部分。本標準僅僅規(guī)定了接口定義必須遵循的格式及能使用對象與ORB交互的機制。第1.03節(jié)CORBA詳細結(jié)構(gòu)圖izontal)應用對象領(lǐng)域接口對象請求代理ORB持久性服務命名服丫:持分布式信息系統(tǒng)任務文檔管理管理管理OO9J公共設施CommonFacility垂直公共設施
15、(Vertical)q丿水平公共設施(安全服務并發(fā)控制服務)交易服務生存期服務-流轉(zhuǎn)換艮務準許服務事件服務事務服務關(guān)系服務時間服務對象服務(CORBA服務)圖1.2CORBA詳細結(jié)構(gòu)圖DistributedApplicationsVerticalCORBAFacilities匚1OE謔o2=!社叟9凸inri_rrTBUi_nSufHirll11173HorizontalCORBAFacilitiesUserInterfaceInformationMgmtSystemManagementTaskMgmt|GtirTpoLndPreBentstion|OsktopMsnsgernent|Rend
16、eringMsnsgement|ScriptingUserSi_pport|GtirTpoLndhterthange|EfatsBlooding/Reprementation|EbtsIntencliangeInfcrmsiionEMchangeInformationModelingInformationStorage/Retrieval|TimeCeraiiong|GblleciionManagementJ|jatorrization|EfatsCdlectionEventManagementInstanceManagementInsirumentation|PolicyManagement
17、ProceoaLaunch|jslityofServiceMgmt|SchecLIingManagementSecurity甲J0孕:1IQU1RjleManagementCORBAServicesObjectRequestBroker(ORB)OperatingSystemandNetworkServices圖1.3CORBA詳細結(jié)構(gòu)圖2第二章對象服務(CORBAServices)的具體內(nèi)容第2.01節(jié)名字服務名字服務是ORB中的對象定位其它對象的主要方法。所謂名字就是對象的標識,一個對象與一個名字的聯(lián)系被稱作為一個名字綁定。一個命名上下文是指一個包含若干名字綁定的名字空間,在其中每個對象名
18、是唯一的。一個名字綁定總是存在于一個命名上下文中。一個上下文(context)同樣是一個對象,它也可以在一個命名上下文中綁定一個名字。一個上下文綁定和一個名字綁定的關(guān)系如同一個目錄和一個文件的關(guān)系。由于上下文綁定的存在可以通過一個序列名來指定一個對象,這一序列名(也可稱為復合名)定義了一個對象綁定在一個名字空間的路徑。圖2-1-1表示了一個名字空間的例子。在圖2-1-1中由三個上下文綁定(Theworldcity,Asia,R.P.C)和一個名字綁定(Shanghai)組成了一個復合名。解析名字(resolveaname)是指在一個給定的命名上下文中找到和一個名字相聯(lián)系的對象;綁定名字(bin
19、daname)是指在一個給定的命名上下文中建立一個名字綁定。命名服務是由NamingContext和Bindingiterator兩個接口實現(xiàn)的,見下圖。圖2-2-2接口NamingContext和BindingIterator及其中的方法NamingContext對象包含有若干名字綁定。通過調(diào)用接口NamingContext中bind方法可以把一個對象和一個名字聯(lián)系起來。Rebind方法和bind方法類似,只是當一個名字已經(jīng)和一個對象綁定,它重新以一個新名字和該對象進行綁定。通過調(diào)用unbind方法可以去除綁定。通過調(diào)用Resolve方法可以在一個給定的上下文中找到任何已命名的對象。方法li
20、st返回一個Bindingiterator對象,通過Bindingiterator對象中的方法Next_one和Next_n可以返回NamingContext對象所包含的名字綁定。總之,命名服務定義了接口,通過這些接口提供的方法可以管理命名空間中的對象。第2.02節(jié)生存周期服務因為基于C0RBA的環(huán)境支持分布式對象,生存周期服務定義了服務和方法,使能夠?qū)υ诓煌秶膶ο筮M行創(chuàng)建,拷貝,移動和刪除操作。生存周期服務目前已被擴展,使得所有操作能夠處理相關(guān)對象組之間的聯(lián)系(如包含關(guān)系和引用關(guān)系)。在圖2-2-1中顯示了一個文檔對象,包含了若干頁對象(類似頁對象中包含了若干文本對象和多媒體對象),該文
21、檔對象包含在一個文件夾對象中,同時被收錄在一個目錄對象中作為一個引用。生存周期服務保持了其中的所有聯(lián)系。圖2-2-1當一個移動導致文檔對象及其所包含的對象從一個文件夾對象移至另外一個文件夾對象中,目錄對象中的引用必須被更新(見圖2-2-2)。同樣當該文檔對象被刪除時,它所包含的對象也需要被刪除,對它的引用也要從文件夾對象和目錄對象中刪除。這些都可以通過生存周期服務進行維護。生存周期服務對于調(diào)用的客戶端來看是十分簡單,在圖2-2-2的例子中客戶端只須調(diào)用方法move和copy,其他連接的對象操作對于客戶端而言都是透明的。當在不同的范圍內(nèi)創(chuàng)建一個新對象時,客戶端必須找到該范圍的一個工廠對象,通過它
22、調(diào)用一個create請求,返回得到一個新對象的引用。例如當一個對象在不同的機器間拷貝時,目標機所在的工廠對象用來分配資源,獲得對象引用,在對象適配器(ObjectAdapter)和實現(xiàn)池(ImplementationRepository)對新對象進行注冊?;镜纳嬷芷诜帐怯蒐ifeCycleObject,FactoryFinder和GenericFactory三個接口組成,見圖2-2-3。OFindfactorisOCreate_objectFactoryFinderGenericFactoryOCopyLifeCycleObjectOMoveORemoveLifecycleservice
23、圖2-2-4接口LifeCycleObject,FactoryFinder和GenericFactory及其中的方法LifeCycleObject接口定義了Copy,Move,Remove操作。它是和客戶端進行交互的主要接口。Copy操作對目標對象進行拷貝并返回對象引用;Move操作允許對象被遷移到FactoryFinder所能找到的范圍中任何位臵;Remove操作用來刪除目標對象。FactoryFinder接口用來尋找工廠對象。GenericFactory接口定義了一個通用的Create_object操作。第2.03節(jié)事件服務事件(event)是指一個特定對象所產(chǎn)生的一個操作;通知(noti
24、fication)是指一個對象所發(fā)的一個消息,通知其他對該對象感興趣的對象一個特定的事件已經(jīng)發(fā)生。事件服務允許對象動態(tài)地獲取它們所感興趣的其他對象所產(chǎn)生的事件。產(chǎn)生事件的對象并不需要知道是誰對它的事件感興趣,這都由事件服務進行操作。事件服務簡化了對象之間的通訊,它把對象定義為兩種角色:提供者和消費者。提供者產(chǎn)生事件,消費者通過事件句柄處理事件。提供者和消費者之間使用標準的CORBA請求。在提供者和消費者之間的交互中存在兩種模式:推模式和拉模式。在推模式中事件提供者首先啟動,把事件數(shù)據(jù)傳向消費者;在拉模式中正好相反。提供者和消費者之間是通過EVENTCHANNEL對象進行交互的,EVENTCHA
25、NNEL對象是駐存在ORB的標準的C0RBA對象,它簡化了提供者和消費者之間的通訊,允許異步情況下和提供者和消費者之間互不知道的情況下,多個提供者和多個消費者之間進行通訊。一個EVENTCHANNEL對象通過使用代理對象簡化了提供者和消費者之間通訊,提供者和消費者通過EVENTCHANNEL對象獲得代表對方的代理對象:一個提供者獲得一個消費者代理;一個消費者獲得一個提供者代理。EVENTCHANNEL對象通過這些代理對象來實現(xiàn)事件的交互。圖2-3-1描述了一個推模式下的過程。第 頁共27頁圖2-3-1一個推模式推模式相對拉模式更為常用,大多數(shù)產(chǎn)品中都優(yōu)先實現(xiàn)了推模式。圖2-3-2中描述了COR
26、BAPushDisconnectpush_consumerPushConsumerDisconnect_push_supplierPushSupplierConnect_push_supplierProxyPushConsumerConnect_pushconsumerObtain_push_supplierObtain_pull_supplierConsumerAdminProxyPushSupplierObtain_push_consumerObtain_pull_consumerFor_consumerFor_supplierDestroyEventChannelSupplierAdmi
27、n圖2_3-2件服務中的推模EventService標準在推模式下定義的七個接口。PushConsumer接口定義了Push方法和Disconnect_push_consumer方法:Push方法接收一個事件;Disconnect_push_consumer方法告訴消費者不再接收任何事件;PushSupplier接口定義了Disconnect_push_supplier方法:它告訴提供者停止發(fā)送事件;ProxyPushConsumer接口定義了Connect_push_supplier方法:提供者調(diào)用該方法連接在EventChannel中的代理消費對象,該調(diào)用在EventChannel中注冊提
28、供者的對象引用;ProxyPushSupplier接口定義了Connect_push_consumer方法:消費者調(diào)用該方法連接在EventChannel中的代理提供者對象,該調(diào)用在EventChannel中注冊消費者的對象引用;ConsumerAdmin接口是提供者代理對象的管理者:一個消費者要連接到EventChannel必須要首先調(diào)用Obtain_push_supplier或者obtain_pull_supplier以獲得一個提供者代理對象;SupplierAdmin接口是消費者代理對象的管理者:一個提供者要連接到EventChannel必須要首先調(diào)用Obtain_push_consum
29、er或者obtain_pull_consummer以獲得一個消費者代理對象;EventChannel接口定義了對EventChannel的三個管理方法:For_consumer返回一個ConsumerAdmin對象,F(xiàn)or_supplier返回一個SupplierAdmin對象,Destroy解析EventChannel并釋放它所擁有的資源。第2.04節(jié)交易黃頁服務交易黃頁服務如其名是對象的黃頁服務:它使得客戶端能夠基于對象所提供的服務來尋找合適的對象。以此相反,命名服務如同對象的白頁服務:它使得客戶端能夠基于對象名來尋找合適的對象。交易黃頁服務就是為其他對象提供匹配服務。輸出者(服務提供者)
30、通過交易黃頁服務來“廣告”其服務;輸入者(服務消費者)通過交易黃頁服務來發(fā)現(xiàn)符合其需要的對象服務。交易黃頁服務能夠使得客戶端動態(tài)的發(fā)現(xiàn)服務并且簡化對這些服務的綁定。一個新的服務提供者要在交易黃頁服務中注冊它的服務,必須提供它的所有相關(guān)信息,包括:對象引用,服務類型名,服務的屬性。不同的域中的交易黃頁服務能夠建立相互的連接來擴展它所提供的服務,這如同一個電子集市。當一個交易黃頁服務連接到另一個交易黃頁服務,它能夠使得自己的客戶端也可以訪問到另一個交易黃頁服務中所提供的服務。互相連接的交易黃頁服務使得其提供的服務十分龐大,交易黃頁服務提供了快速搜索方法:可以通過制定政策來限制搜索范圍;可以定義搜索
31、標準;可以定義搜索屬性。圖2-4-1描述了交OQueryLookupOExport_proxyOWithdraw_proxyODescrible_proxProxy三OMax_leftONext_nODestroyOfferiteratorTraderServiceOExportODescribleOWithdraw_usingconstrainRegistertOWithdrawOResolveOModifyOAdd_linkOModify_linkODescrible_li:Link3ORemove_linkOList_linkOEvaIDPDynamicPropEval圖2-4-2交易黃
32、頁服務的接口圖2-4-2描述了交易黃頁服務的核心接口。Lookup接口定義了Query方法:客戶端和交易黃頁服務通過該方法來尋找和輸入服務;Offeriterator接口用來遍歷調(diào)用Lookup接口所返回的服務集合:Next_n方法返回該集合中第n個服務,Max_left方法返回尚未訪問到的服務數(shù)目;Register接口使得服務提供者能夠把它們的服務注冊到交易黃頁服務中:服務提供者調(diào)用Export方法注冊其服務,服務提供者必須提供對象引用,服務類型名,服務的屬性,交易黃頁服務則返回一個唯一的OfferId來標示提供的服務;Link接口使得一個交易黃頁服務能夠和另外的交易黃頁服務進行連接;Pro
33、xy接口用來決定服務匹配。第2.05節(jié)事務服務事務服務支持事務的概念。一個事務是指具備如下特征的工作單元:原子不可分性,一致性,孤立性,事務效果持久性。一個事務只在兩種情況下才會結(jié)束:該事務或者完成或者失敗。當一個事務完成時,所有產(chǎn)生的相關(guān)聯(lián)的變化將會確定;當一個事務失敗時,所有產(chǎn)生的相關(guān)聯(lián)的變化將會無效。參與事務服務的對象可分為三種角色:事務客戶端,事務服務端,可恢復服務端。事務客戶端啟動一個事務,ORB把該請求轉(zhuǎn)給事務服務,事務服務登錄和該事務客戶端聯(lián)結(jié)的事務上下文,然后事務客戶端對服務端進行調(diào)用。事務服務端是指受事務影響而且其擁有的狀態(tài)和資源是不可逆的對象。當這些對象調(diào)用一個可恢復資源時
34、ORB會將其記錄在事務上下文中。一個事務服務端并不參與一個事務服務的完成,但它可以使得該次服務失敗返回。一個可恢復服務端是指受事務影響而且其擁有的狀態(tài)和資源是受保護的對象,可恢復服務端通過調(diào)用Register_resource()方法告訴事務服一個可恢復的資源加入了該次事務,相應的加入到事務上下文中。事務服務無縫地合成到ORB中,它依靠ORB來自動地改變事務上下文。一個事務上下文定義了一個事務的參與范圍。事務服務在ORB的幫助下管理事務上下文。圖2-5-1描述了事務服務過程。圖2-5-1一個事務服務過程事務服務主要由圖2-5-2中所示的四個關(guān)鍵接口組成。OBeginOCommitOResume
35、ORollbackOSuspendCuurent(0OGet_statusOGet_transcation_nameOGet_controlOGettimeoutOPrepareOCommit_one_phaseOCommitORollbackOForgetResourceORegister_resourceOGet_transaction_nameORegister_subtran_awareOGet_statusOCreate_subtransactionCoordinatorOGet_parent_statusORoll_back_onlyOGet_top_level_statusOHa
36、sh_transaction/73OIs_same_transactionOHash_top_level_transactionOIs_related_transactionOIs_ancestor_transactionOIs_descendant_transactionOIstopleveltransactionOCommit_subtransactionORollback_subtransactionSubtransactionAwareResourceTransactionservice圖2-5-2事務服務的接口Current接口使得客戶端能方便地使用事務服務:客戶端通過調(diào)用Begin
37、和Commit方法來啟動和正常終止一個事務服務,調(diào)用Rollback非正常終止一個事務服務;Coordinator接口協(xié)調(diào)可恢復服務端和其它在一個事務中的參與者:一個服務調(diào)用Register_resource或Register_subtran_aware來參與一個事務服務,調(diào)用Create_subtransaction建立當前事務的子事務,調(diào)用Hash-方法獲得當前事務的句柄,調(diào)用rollback_only終止整個事務;Resource接口幫助一個可恢復服務對象參與一個兩階段完成協(xié)議:在第一階段中事務服務對所有參與的資源對象調(diào)用Prepare,每個對象返回一個參數(shù)或表示同意完成或表示同意失敗返
38、回,在此基礎(chǔ)上第二階段事務服務或執(zhí)行完成或執(zhí)行失敗返回;SubtransactionAwareResource接口處理帶有子事務的事務,它是由Resource接口派生而來,增加了兩個對子事務的控制方法。第2.06節(jié)并發(fā)控制服務當多個客戶端訪問共享資源時,并發(fā)控制服務提供接口來獲得或釋放資源鎖。并發(fā)控制服務主要是用來和事務服務一起協(xié)調(diào)多個并發(fā)事務的活動,但它也支持非事務模式的操作。鎖是允許一個客戶訪問一個特定資源的標記。并發(fā)控制服務是防止多個客戶同時對一個資源都擁有鎖,這樣會造成訪問沖突。并發(fā)控制服務對不同的訪問定義了不同的鎖模式:包括讀,寫,企圖讀,企圖寫和更新。并發(fā)控制服務對一個資源定義一個
39、鎖集合,所有的鎖都ODrop_locksLockCoordinator0-0Service從鎖集合中獲得。圖261描述了并發(fā).OCreateOCreate_related控制服務的四個接口。LocksetFactoryOCreate_transactionalOCreate_transactional_relatedOLockOUnlockOGetcoordinatorLocksetOTry_lockOChange_modeOLockOUnlockOGet_coordinatorTransactionalLocksetOTry_lockOChange_modeConcurrencyContro
40、l圖2-6-1LocksetFactory接口用來建立鎖集合;Lockset用來獲得或釋放鎖:Lock用來獲得一個鎖并堵塞等待,如果不想堵塞等待,則調(diào)用Try_lock,當不能獲得鎖時,會馬上返回控制權(quán);TransactionalLockset接口與Lockset功能相同,區(qū)別是它是面向事務的,它的參數(shù)必須含有一個事務標識;LockCoordinator接口定義了Drop_locks:當一個事務完成或失敗返回時,事務服務調(diào)用該方法釋放該事務所持有的所有的鎖。第2.07節(jié)安全服務分布式對象面臨著傳統(tǒng)的C/S系統(tǒng)所面臨的更多的安全問題,這些問題大多數(shù)都可以通過在ORB中實現(xiàn)安全功能而解決。圖2-7
41、-1描述了一個安全的CORBAORB圖2-7-1一個安全的擴展ORB在圖2-7-1中,所有的功能調(diào)用都有相應的安全功能來保證例如訪問控制等安全策略。這些安全功能都建立于ORB中。CORBA安全服務允許一個安全ORB最高能提供分布式對象的B2級安全(B2級安全在美國政府所制定的安全策略橙皮書中接近最高級)。要在網(wǎng)絡中符合這些嚴格的安全要求,則所有的客戶端必須提供一個使用者鑒別ID,所有的資源必須由一個訪問控制表來保護,必須提供使用日志,在重用一個對象時訪問權(quán)限不能互相傳遞。安全服務提供了重要的安全方法,包括:客戶鑒別(判斷客戶端是否是真正的有訪問權(quán)力的客戶端),權(quán)限鑒別(判斷客戶端是否能使用該資
42、源),使用日志(系統(tǒng)管理員監(jiān)控ORB事件),見證證明(能夠提供一個動作確實發(fā)生的證據(jù)),加解密,建立安全域等。圖2-7-2描述了對核心CORBA對象進行安全擴展的主要接口。OGet_service_informationOGet_currentCORBA:ORBOCreateCORBA:BOAooOGet_attributesOSet_credentialsOGet_creduntialsOGetpolicyCORBA:CurrentOGet_domain_policyCORBA:DomainManagerOOverride_default_credentialsOOverride_defau
43、lt_QOPOOverride_default_mechanismsCORBA:ObjectOGet_active_credentialsOGet_security_featuresOGet_security_mechanismsOGetsecuritynames圖2-7-2CORBA對象的安全擴展接口第2.08節(jié)持久性服務不同于程序語言中所建立的對象生命期較短,分布式對象大多是持久的。持久性對象服務允許對象在應用期外保持持久性,它能使一個對象的狀態(tài)保存在文件系統(tǒng),關(guān)系數(shù)據(jù)庫或面向?qū)ο髷?shù)據(jù)庫,能使一個對象的狀態(tài)從文件系統(tǒng)或數(shù)據(jù)庫中恢復到內(nèi)存中。圖2-8-1持久性對象服務的組成部分持久性服務主要
44、有四個組成部分。圖2-8-1描述了持久性對象服務的四個組成部分。持久性對象(POs)是指狀態(tài)被持久性保持的對象,每個持久性對象都有一個持久性標記(PID)來描述其在數(shù)據(jù)存儲中的位置;持久性對象管理(POM)隔離持久性對象和持久性數(shù)據(jù)服務,屏蔽二者之間的不同存儲協(xié)議,根據(jù)PID的信息把持久性對象的調(diào)用傳遞給相應的持久性數(shù)據(jù)服務;持久性數(shù)據(jù)服務(PDSs)用來在對象和數(shù)據(jù)存儲之間傳遞數(shù)據(jù);數(shù)據(jù)存儲是指包含對象狀態(tài)數(shù)據(jù)的獨立的地址空間,例如文件系統(tǒng)或數(shù)據(jù)庫。四個部分中與客戶端交互的只有PO,其它的對于客戶端而言都是透明的。OConnectOStoreODeletePOODisconnectORest
45、oreOConnectOStoreODeletePDSODisconnectORestoreOConnectOStoreODeletePOMODisconnectORestoreOCreate_PID_from_keyPIDFactoryOCreate_PID_from_stringOCreate_PID_from_string_andkeyAPersistenceService圖2-8-2持久性對象服務的接口圖2-8-2描述了持久性對象服務的六個接口。客戶端只是和factory,PO,PID接口進行交互,注意到PO,POM和PDS提供了相同的方法,這是在不同層次上的抽象。接口PIDFacto
46、ry提供了三種方法建立PID;POFactory接口提供了建立一個持久性對象實例的方法;PID接口提供了返回一個PID字符串的方法;PO接口為客戶端提供了五種方法,使其能夠控制持久性對象和存貯狀態(tài)數(shù)據(jù)的關(guān)系;POM提供了五種方法使持久性對象和其數(shù)據(jù)存貯進行交互;PDS提供了五種方法使POM能夠和其數(shù)據(jù)存貯進行交互。第2.09節(jié)流轉(zhuǎn)換服務流轉(zhuǎn)換服務可以把一個對象轉(zhuǎn)換為一個流以及相應的逆操作。流是指一個帶有可前后移動指針的數(shù)據(jù)區(qū),這個數(shù)據(jù)區(qū)可以是存在于內(nèi)存,文件或一個網(wǎng)絡中。把一個對象轉(zhuǎn)換為一個流是指通過流的形式把一個對象傳送到另一個進程,計算機或ORB中;把一個流轉(zhuǎn)換為一個對象是指在一個新的目的
47、地中把相應的流轉(zhuǎn)換為一個對象。通過流可以把一個對象輸出到一個ORB環(huán)境之外的地方,再把該對象從流轉(zhuǎn)換到對象而不用再創(chuàng)建一個新的對象。流實際上是一個對象輸出/輸入工具,通過它可以拷貝和移動一個對象。OWrite_graphOWrite_objectOWrite_stringOWrite_charOWrite_octetOWrite_unsigned_longOWrite_unsigned_shortOWrite_longOWrite_shortOWritefloatOWritedoubletreamIOORead_graphORead_objectORead_stringORead_charOR
48、ead_octetORead_unsigned_longORead_unsigned_shortORead_longORead_shortORead_floatORead_doubleOReadbooleanOExternalizeOInternalizeOBegin_contexOEnd_contextOFlushStreamOExternalize_to_streamOInternalize_from_streamStreamableOCreate_uninitializedStreamableFactoryOCreateStreamFactoryOCreat)FilestreamFact
49、oryExternalizationService圖2-9-1流轉(zhuǎn)換服務的基本接口圖2-9-1描述了流轉(zhuǎn)換服務的基本接口。從客戶端一方來看,流轉(zhuǎn)換服務十分簡便。通過StreamFactory或FileStreamFactory創(chuàng)建一個Steam(后者建立的是基于文件的Stream),然后客戶端通過Steam和SteamIO可以把對象和流之間進行轉(zhuǎn)換。第2.10節(jié)查詢服務查詢服務可以通過使用查詢來尋找屬性符合查詢標準的對象。這種查詢并不違背對象封裝,它無權(quán)訪問一個對象的內(nèi)部屬性數(shù)據(jù)而只是訪問對象的公共屬性。查詢服務可以通過ODMG-93sObjectQueryLanguage,SQL或者二者的子
50、集。CORBA的查詢服務并不僅僅是一個對象查找,當執(zhí)行一個查詢,查詢服務返回滿足查詢標準的一個對象集,查詢服務把這個對象集作為一個對象,可以對它進行操縱和遍歷,對其中的成員進行增加和刪除。圖2-10-1查詢服務的查詢接口查詢服務的查詢接口如圖2-10-1所示。QueryEvaluator接口定義Evaluate方法對查詢進行評估;QueryManager接口聚承于QueryEvaluator接口,增加了Create方法,用來建立Query對象;Query接口用來執(zhí)行查詢;Collection接口定義了對查詢結(jié)果集進行增,刪,替換等操作;QueryableCollection接口聚承于Colle
51、ction接口和QueryEvaluator接口。第2.11節(jié)組服務組服務用來操縱一組對象。這里的組是指隊列,棧,數(shù)組,列表,樹,集合和包。通常一個組所有的成員都是同一類型的,所有的組都派生于Collection接口,該接口定義了對組成員進行增,刪,替換和獲取等操作。所有的組都必須提供一個iterators指針,通過iterators指針對組成員進行遍歷和增刪操作。第2.12節(jié)對象關(guān)系服務對象關(guān)系服務用來在對象之間建立各種關(guān)系,并保持對關(guān)系的管理,而有聯(lián)系的對象本身并不用了解這些關(guān)系。對象并不是孤立的,互相之間存在著各種關(guān)系,例如包含關(guān)系,引用關(guān)系,從屬關(guān)系等等。對于各種對象而言,維持各種靜態(tài)
52、或動態(tài)的關(guān)系是一個復雜而開銷大的事情。關(guān)系的產(chǎn)生來源于角色。比如在一個雇傭關(guān)系中,公司是處于雇主角色,而一個人是處于雇員角色。一個對象可以同時處于多種角色。在一個關(guān)系中所需要的角色數(shù)目稱為度。顯然一個關(guān)系至少需要兩個度。圖2-12-1描述了關(guān)系服務中的基本接口。RelationshipFactory接口定義Create方法用來建立一個關(guān)系實例;RoleFactory接口定義Create_role方法用來建立一個關(guān)系實例;Relationship接口定義了Destroy方法用來消除一個關(guān)系;Role接口定義方法用來管理一個角色所有的關(guān)系;RelationshipIterator接口用來遍歷一個角
53、色的所有關(guān)系;IdentificationObject角色定義Is_identical方法用來判斷兩個對象是否相同。ONext_oneONext_nODestroyRelationshipiteratorOCreateRelationshipsFactoryRelationshipService圖2-12-1關(guān)系服務中的基本接口第2.13節(jié)時間服務在分布式系統(tǒng)中保持一個統(tǒng)一的時間概念對于事件序列而言是十分重要的??上攵谝粋€軍事指揮實時系統(tǒng)中,時間不同步會造成十分嚴重的后果。時間服務可以在允許的誤差下獲得當前時間,可以得到事件發(fā)生的事件順序,可以生成和時間有關(guān)的事件(例如定時器產(chǎn)生的事件)
54、,可以計算事件之間的時間間隔。OAbsolute_timeOCompare_timeOTime_to_intervaOIntervalUTOOTime_setOSet_timerOCancel_timerOSetDataTimeEventHandlerOUniversal_timeONew_Universal_timeOSecure_Universal_timeOUto_from_utcONewintervalTimeServiceOSpansTIOOOverlapsOTimeTimeServiceORegisterTimeEventSbrvOUnregister圖2-13-1時間服務的接口圖
55、2-13-1描述了時間服務的接口。UTO,TIO和TimeEventHandler接口描述了基本時間服務的實例,Timeservice和TimeEventService接口定義了方法可以用來建立和管理基本時間服務對象。UTO(UniversalTimeObject)接口定義了對UTC(UniversalTimeCoordinated)標準時間值和時間誤差值的操作;TIO(TimeIntervalObject)接口定義了和時間間隔相關(guān)的操作;TimeService接口定義了建立UTO和ITO對象的方法;TimerEventHandler接口描述了一個包含和時間相關(guān)的事件信息的對象;TimeEve
56、ntService接口定義了方法用來建立TimerEventHandler對象并對其進行注冊。第2.14節(jié)準許服務對于控件軟件生產(chǎn)商而言,控件市場正在進入一個可管理的軌道,控件將會在準許管理器中自動進行注冊。準許服務提供大量認證選項來滿足商業(yè)需求,例如它可以提供一個有限期讓潛在的用戶來試用;對高級別的用戶總是可以優(yōu)先得到準許;允許多個控件使用一個準許。所有的準許都有有效期。準許服務保證當一個被準許的控件在使用時,準許服務和該控件都能了解到對方的存在。準許服務同時還是一個受保護的服務資源。OObtain_producer_specific_license_service_LipenseServi
57、ceManagerOStart_useProduce_SpecificLicenseServiceOEnd_useOCheck_useLicenseService圖2-14-1準許服務的接口圖2-14-1描述了準許服務的兩個接口。LicenseServiceManager接口用來定位合適的準許服務;ProducerSpecificLicenseService接口提供三種方法用來啟動,停止和檢查服務狀態(tài)。第2.15節(jié)屬性服務屬性服務允許對一個已封裝的對象控件不通過使用IDL語言來動態(tài)地增加,修改和刪除其屬性。例如在運行時刻,可以給一個已存在的文檔對象增加一個訪問權(quán)限屬性并設臵屬性值,該屬性值信息
58、雖然和該文檔聯(lián)系,但并不屬于該文檔對象。與此相反的是,通過IDL語言只能讀取和設臵屬性值。一個屬性包括一個名字,屬性值和模式。ODefine_propertyODelete_propertyODefine_propertiesPropertySetODelete_propertiesOGet_all_property_nameODelete_all_propertiesOGet_property_valueOIs_property_definedOGet_propertiesOGet_all_propertiesOGet_allowed_property_typeOGet_allowed_pr
59、opertiesOGet_property_modeOGetpropertymodessPropertySetDefODefine_property_with_modeODefine_properties_with_modesOSet_property_modeOSetpropertymodesPropertyService圖2-15-1屬性服務的主要接口圖2-15-1描述了屬性服務的兩個主要接口PropertySet和PropertySetDef。PropertySetDef接口派生于PropertySet接口,它增加了對屬性模式進行操縱和控制的方法。屬性服務定義了四種不同的屬性模式:nor
60、mal模式對屬性操作沒有限制;read-only模式允許客戶端對屬性進行讀和刪,但不能修改;fixed-normal模式允許屬性被修改但不能刪;fixed-readonly模式允許讀。PropertySet接口定義方法用來定義,刪除,枚舉和檢查已存在的屬性。PropertySetDef接口定義方法用來控制和修改屬性模式。第三章CORBA相關(guān)產(chǎn)品及CORBA的未來第3.01節(jié)CORBA相關(guān)產(chǎn)品經(jīng)過CORBA標準的發(fā)展,基于CORBA標準的產(chǎn)品已有很多,如:Digital的ObjectBroker,Visigenic的VisiBroker,IBM的SOM,HP的OrbPlus,IONA的Orbix
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 油氣管道鋪設合同協(xié)議書內(nèi)容
- 2024年花崗巖廢料處理與資源回收合同
- 智能化機場設施施工合同
- 創(chuàng)意辦公區(qū)房產(chǎn)交易合同范本
- 2024年虛擬現(xiàn)實設備采購與研發(fā)合同
- 按摩院租賃合同樣本
- 航空航天項目投標代理合同
- 社交活動汽車包車合同
- 2025年隨州道路客貨運輸從業(yè)資格證模擬考試下載
- 文化產(chǎn)業(yè)園區(qū)招投標案例
- 110kV升壓站構(gòu)支架組立施工方案
- 鋼構(gòu)件應力超聲檢測技術(shù)規(guī)程
- -《多軸數(shù)控加工及工藝》(第二版)教案
- 體 育 課 教 學 評 價 量 表
- 23秋國家開放大學《漢語國際教育概論》階段測驗1-2+教學活動1參考答案
- 新員工信息安全課件培訓
- 小學英語-Unit3What would you likePartB Let's talk教學設計學情分析教材分析課后反思
- OA系統(tǒng)功能說明書
- 體檢車技術(shù)規(guī)格要求
- 《Python Web 企業(yè)級項目開發(fā)教程(Django 版)》課后答案
- 比亞迪S7說明書
評論
0/150
提交評論