CORBA简介_吴帝聪简介
1.CORBA:Common Object Request Broker Architecture,通用對(duì)象請(qǐng)求代理體系。是由對(duì)象管理組(Object Management Group, OMG)制定的一種標(biāo)準(zhǔn)的面向?qū)ο蠓植际綉?yīng)用程序體系規(guī)范,旨在為異構(gòu)分布式環(huán)境中,硬件和軟件系統(tǒng)的互聯(lián)而提出的一種解決方案。
2.解決異構(gòu)分布式系統(tǒng)兩條主要原則:
(1).尋求獨(dú)立于平臺(tái)的模型和抽象,這樣有助于解決大部分問題。
(2).在不犧牲太多性能的前提下,盡可能隱藏底層的復(fù)雜細(xì)節(jié)。
3.對(duì)象管理組(OMG)定義的兩類與平臺(tái)無關(guān)的分布式對(duì)象模型:
(1).對(duì)象模型(Object Model):用來定義在一個(gè)異構(gòu)環(huán)境中,如何描述分布式對(duì)象接口。對(duì)象模型將對(duì)象定義為永恒不變、始終唯一的,對(duì)象模型封裝實(shí)體,這些實(shí)體只能被嚴(yán)格定義的接口訪問,客戶機(jī)通過向?qū)ο蟀l(fā)請(qǐng)求,才能使用對(duì)象提供的服務(wù),對(duì)象的實(shí)現(xiàn)細(xì)節(jié)和它的位置對(duì)于客戶機(jī)上隱藏的。
(2).引用模型(Reference Model):用來說明對(duì)象之間如何交互。引用模型提供的接口種類,通常是按對(duì)象接口編組,所有接口種類有一個(gè)對(duì)象請(qǐng)求代理(Object Request Broker,ORB)按概念鏈接在一起。通常,一個(gè)ORB可以在客戶機(jī)和對(duì)象之間進(jìn)行通信,當(dāng)請(qǐng)求發(fā)送給對(duì)象時(shí),透明地激活那些沒有運(yùn)行的對(duì)象。
4.對(duì)象管理組(OMG)的接口種類:
(1).對(duì)象服務(wù)接口:Object Services,OS.是與領(lǐng)域無關(guān)(水平定向)的接口,對(duì)象管理組定義的命名服務(wù)(Naming Service)和交易服務(wù)(Trading Service)都是對(duì)象服務(wù)。對(duì)象服務(wù)通常被認(rèn)為是分布式計(jì)算架構(gòu)的核心部分。
(2).領(lǐng)域接口:Domain Interface,DI.其作用與對(duì)象服務(wù)接口類似,但是領(lǐng)域接口針對(duì)領(lǐng)域而已,它與特定領(lǐng)域相關(guān)(垂直定向)。
(3).應(yīng)用程序接口:Application Interface,AI.是專門為特定應(yīng)用程序而開發(fā)的,并不是對(duì)象管理組所制定的標(biāo)準(zhǔn)。但是如果某些應(yīng)用程序的接口出現(xiàn)在許多不同的應(yīng)用程序中,那么這些應(yīng)用程序接口應(yīng)作為其他接口種類中的一類成為接口標(biāo)準(zhǔn)化的備選項(xiàng)。
5.CORBA常用術(shù)語:
(1).ORB:Object Request Broker,對(duì)象請(qǐng)求代理,在一個(gè)面向?qū)ο蟮姆植际江h(huán)境中,ORB可以為應(yīng)用程序、服務(wù)器、網(wǎng)絡(luò)設(shè)施之間分發(fā)消息提供關(guān)鍵通信設(shè)施。可以將ORB想象成一組軟件總線,它提供了一個(gè)公用消息傳遞接口,通過這個(gè)接口,不同類型的對(duì)象可以以對(duì)等層策略進(jìn)行通信。ORB是CORBA的核心組件,提供了識(shí)別和定位對(duì)象、處理連接管理、傳送數(shù)據(jù)和請(qǐng)求通信的框架結(jié)構(gòu)。
(2).CORBA對(duì)象:CORBA Object,是一個(gè)“虛擬”的實(shí)體,可以有對(duì)象請(qǐng)求代理(ORB)定位,并且可以被客戶程序請(qǐng)求調(diào)用。
(3).目標(biāo)對(duì)象:Target Object,在一個(gè)CORBA請(qǐng)求調(diào)用的上下文中,目標(biāo)對(duì)象是指這個(gè)請(qǐng)求目標(biāo)的CORBA對(duì)象。CORBA對(duì)象模型是一個(gè)單調(diào)度模型(single-dispatching model),即一個(gè)請(qǐng)求的目標(biāo)對(duì)象只能由這個(gè)請(qǐng)求的對(duì)象引用來確定。
(4).客戶程序:Client,是一個(gè)實(shí)體,由它來向CORBA對(duì)象發(fā)出調(diào)用請(qǐng)求。
(5).服務(wù)程序:Server,是一個(gè)擁有一個(gè)或多個(gè)CORBA對(duì)象的應(yīng)用程序,用于處理客戶程序請(qǐng)求。
(6).請(qǐng)求:Request,是一個(gè)由客戶程序所提出的CORBA對(duì)象的調(diào)用操作。請(qǐng)求從一個(gè)客戶機(jī)傳給服務(wù)器中的目標(biāo)對(duì)象,如果這個(gè)請(qǐng)求要求一個(gè)CORBA對(duì)象作為響應(yīng),目標(biāo)對(duì)象負(fù)責(zé)返回結(jié)果。
(7).伺服程序:Servant,是一個(gè)編程語言實(shí)體,用來實(shí)現(xiàn)一個(gè)或多個(gè)CORBA對(duì)象。伺服程序也稱為具體化的CORBA對(duì)象,伺服程序存在于服務(wù)器應(yīng)用程序上下文中,是一個(gè)特定類的對(duì)象實(shí)例。CORBA只是一個(gè)規(guī)范,CORBA使用對(duì)象定義語言(Interface Definition Language,IDL)定義分布式程序的對(duì)象,以及對(duì)象之間的交互操作,具體的實(shí)現(xiàn)由不同的編程語言如C++或Java來提供,伺服程序就是這些具體編程語言中的程序?qū)ο蟆?/p>
(8).可互操作的對(duì)象引用:Interoperable Object Reference,IOR.存儲(chǔ)幾乎所有ORB間協(xié)議信息,用于建立客戶機(jī)和目標(biāo)對(duì)象之間的通信,為ORB的互操作提供標(biāo)準(zhǔn)化的對(duì)象引用格式。每個(gè)IOR指定一個(gè)或多個(gè)所支持的協(xié)議,對(duì)于每個(gè)協(xié)議,IOR包括那個(gè)協(xié)議所專有的信息。對(duì)于IIOP,每個(gè)IOR包括一個(gè)主機(jī)名,TCP/IP端口號(hào)和一個(gè)對(duì)象密鑰,密鑰根據(jù)所給出的主機(jī)名和端口組合來識(shí)別目標(biāo)對(duì)象。
一個(gè)IOR主要有三個(gè)部分組成:倉庫ID,終點(diǎn)信息和對(duì)象密鑰。
個(gè)人理解IOR類似于數(shù)據(jù)庫連接信息或者JNDI連接信息對(duì)象等,用于傳輸對(duì)象之間的操作信息。
6.CORBA體系:
(1).客戶端調(diào)用靜態(tài)存根(static stubs)向服務(wù)器發(fā)出請(qǐng)求,存根(stubs)是代理對(duì)象支持的客戶端程序。
(2).服務(wù)器端調(diào)用靜態(tài)框架(static skeleton)處理客戶端請(qǐng)求,框架(skeleton)是服務(wù)器端程序。
7.CORBA的接口定義語言:
Interface Definition Lanuage,IDL.IDL是CORBA的基本抽象,它從實(shí)現(xiàn)中分離出對(duì)象接口,用于描述客戶機(jī)和服務(wù)器程序之間交互操作用到的數(shù)據(jù)類型和對(duì)象接口。因?yàn)镮DL只描述接口,不描述實(shí)現(xiàn),它是一個(gè)純說明性語言,因此IDL無法編寫可執(zhí)行的語句,也無法解說對(duì)象的狀態(tài),IDL定義把焦點(diǎn)集中在對(duì)象接口、其他接口所支持的操作和操作時(shí)可能引發(fā)的異常上。IDL與編程語言無關(guān),這是CORBA支持異構(gòu)系統(tǒng)和獨(dú)立開發(fā)應(yīng)用程序集成的關(guān)鍵。
IDL定義由一個(gè)IDL編譯器編譯成一個(gè)具體的實(shí)現(xiàn)語言如C++等,IDL編譯器將IDL中這些與編程語言無關(guān)的對(duì)象和接口定義翻譯成特定編程語言的類型定義和API,開發(fā)者使用這些編譯處理的類型和API來提供應(yīng)用程序功能和與ORB交互。
IDL編譯成特定編程語言的轉(zhuǎn)換算法由CORBA來確定,并成為語言映射(Language Mapping)。
8.對(duì)象管理組的生命周期服務(wù)(Life Cycle Service):包括對(duì)象的創(chuàng)建、拷貝、移動(dòng)和撤銷,以及使用回收(Evictor)模式實(shí)現(xiàn)對(duì)大對(duì)象內(nèi)存消耗限制和無用存儲(chǔ)單元回收策略。
對(duì)象管理器的生命周期服務(wù)類似于EJB中EJB對(duì)象的創(chuàng)建、鈍化、激活以及被Java虛擬機(jī)垃圾回收等。
9.CORBA對(duì)象請(qǐng)求代理(ORB)間協(xié)議:
(1).GIOP:General Inter ORB Protocol,通用ORB間協(xié)議,是一類抽象的協(xié)議,指定了轉(zhuǎn)換語法和消息格式的標(biāo)準(zhǔn)集,運(yùn)行獨(dú)立開發(fā)的ORB可以在任何一個(gè)面向連接的傳遞中進(jìn)行通信。
(2).IIOP:Internet Inter-ORB Protocol,因特網(wǎng)ORB間協(xié)議,指定GIOP如何在TCP/IP上實(shí)現(xiàn)。
10.GIOP消息格式:
(1).Request:
從客戶機(jī)發(fā)送到服務(wù)器,請(qǐng)求調(diào)用服務(wù)器一個(gè)操作或讀寫一個(gè)屬性。
(2).Reply:
從服務(wù)器發(fā)送到客戶機(jī),只是為了響應(yīng)客戶機(jī)的請(qǐng)求,包含一個(gè)操作調(diào)用的結(jié)果。
(3).CancelRequest;
客戶機(jī)通知服務(wù)器它已對(duì)一個(gè)操作的結(jié)果失去了興趣。
注意:當(dāng)操作執(zhí)行時(shí),一個(gè)CancelRequest將不會(huì)中止一個(gè)操作,相反,它只是通知服務(wù)器當(dāng)操作完成時(shí),不再需要向客戶機(jī)傳遞應(yīng)答。
(4).LocateRequest:
客戶機(jī)使用該請(qǐng)求從一個(gè)對(duì)象中獲得當(dāng)前的地址信息。
(5).LocateReply:
服務(wù)器使用該響應(yīng)消息對(duì)客戶機(jī)的LocateRequest進(jìn)行應(yīng)答,LocateRequest和LocateReply可以降低定位對(duì)象的開銷。
(6).CloseConnection:
服務(wù)器使用該消息通知客戶機(jī)該服務(wù)器程序準(zhǔn)備關(guān)閉連接。
(7).MessageError:
客戶機(jī)/服務(wù)器都可以發(fā)送該消息,用于響應(yīng)任何錯(cuò)誤的GIOP消息。
(8).Fragment:
客戶機(jī)/服務(wù)器都可以發(fā)送的消息,用于決定是否已存儲(chǔ)片方式發(fā)送消息。
11.IOR結(jié)構(gòu):
CORBA使用可互用的對(duì)象引用(IOR)作為識(shí)別一個(gè)對(duì)象的通用手段,IOR包含一個(gè)對(duì)象的接口類型和一個(gè)/多個(gè)的協(xié)議配置文件。每個(gè)配置文件包含客戶機(jī)使用一個(gè)特定協(xié)議發(fā)送一個(gè)請(qǐng)求所需的信息。單個(gè)IOR可能同時(shí)包含幾個(gè)協(xié)議的尋址信息,使得單個(gè)CORBA對(duì)象可以通過不同的傳輸進(jìn)行訪問。
12.CORBA請(qǐng)求調(diào)用步驟:
客戶機(jī)通過發(fā)送消息來調(diào)用CORBA操作,當(dāng)客戶機(jī)調(diào)用CORBA操作時(shí),ORB完成以下操作流程:
(1).定位目標(biāo)對(duì)象。
(2).調(diào)用服務(wù)器應(yīng)用程序。
(3).傳遞調(diào)用所需的參數(shù)。
(4).必要時(shí),激活調(diào)用目標(biāo)對(duì)象的伺服程序。
(5).等待請(qǐng)求結(jié)束。
(6).如果調(diào)用成功,返回out/inout參數(shù)和將返回值傳給客戶機(jī)。
(7).如果調(diào)用失敗,返回一個(gè)異常給客戶機(jī)。
總結(jié)
以上是生活随笔為你收集整理的CORBA简介_吴帝聪简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP Cloud for Custom
- 下一篇: 谢谢新年发红包的句子