高級(jí)軟件工程05IIOP、現(xiàn)有產(chǎn)品、開發(fā)過程_第1頁(yè)
高級(jí)軟件工程05IIOP、現(xiàn)有產(chǎn)品、開發(fā)過程_第2頁(yè)
高級(jí)軟件工程05IIOP、現(xiàn)有產(chǎn)品、開發(fā)過程_第3頁(yè)
高級(jí)軟件工程05IIOP、現(xiàn)有產(chǎn)品、開發(fā)過程_第4頁(yè)
高級(jí)軟件工程05IIOP、現(xiàn)有產(chǎn)品、開發(fā)過程_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

8IIOPIIOP:InternetInter-ORBProtocol基于Internet的ORB間互操作協(xié)議GIOP的一個(gè)實(shí)例GIOP:GeneralInter-ORBProtocolIIOP1 內(nèi)容GIOP設(shè)計(jì)目標(biāo)GIOP功能CDRGIOP消息格式GIOP傳輸假定IIOP消息傳輸IIOP2最大可能范圍的可用性 基于最廣泛使用和靈活的通訊傳輸機(jī)制(TCP/IP) 并定義在ORB之間傳輸請(qǐng)求所需的其它協(xié)議簡(jiǎn)單性可擴(kuò)展性 它們的大小接近或超過今天Internet的大小(1)GIOP設(shè)計(jì)目標(biāo)IIOP3低耗費(fèi) 對(duì)現(xiàn)有的或新的ORB設(shè)計(jì)添加對(duì)GIOP/IIOP的支持 應(yīng)該需要小量的工程投資一般性 IIOP開始是為TCP/IP定義的 GIOP設(shè)計(jì)為在其它面向連接的傳輸協(xié)議上實(shí)現(xiàn)體系結(jié)構(gòu)中立性 GIOP將ORB看成體系結(jié)構(gòu)未知的不透明實(shí)體。IIOP4少量、簡(jiǎn)單消息 僅僅用七個(gè)消息格式 GIOP就可以支持ORB之間的全部CORBA功能 以及支持對(duì)象地點(diǎn)服務(wù)的擴(kuò)展功能 動(dòng)態(tài)遷移和 對(duì)通訊資源的有效管理 GIOP語(yǔ)義不要求格式或綁定協(xié)議 在大多數(shù)情況下 客戶可以在打開連接后立即向?qū)ο蟀l(fā)送請(qǐng)求動(dòng)態(tài)對(duì)象地點(diǎn) 許多ORB的體系結(jié)構(gòu) 允許 在不同地點(diǎn)激活還沒有過期的對(duì)象實(shí)現(xiàn) 并且 允許動(dòng)態(tài)遷移對(duì)象 GIOP消息為對(duì)象地點(diǎn)和遷移提供支持 但在不需要或不適合ORB的體系結(jié)構(gòu)時(shí) 不要求ORB實(shí)現(xiàn)這樣的機(jī)制(2)GIOP功能IIOP5完全的CORBA支持 GIOP消息直接支持CORBA要求的所有功能和行為 包括例外情況報(bào)告、傳送操作環(huán)境和遠(yuǎn)程對(duì)象引用操作 (例如CORBA::Object::get_interface)GIOP支持傳送特定于服務(wù)的環(huán)境 例如由事務(wù)服務(wù)定義的事務(wù)環(huán)境 該機(jī)制的設(shè)計(jì)目的是 支持要求在請(qǐng)求中隱式傳送與服務(wù)相關(guān)環(huán)境的任何服務(wù)IIOP6(3)公共數(shù)據(jù)表示(CDR)CDR是傳輸語(yǔ)法它將用OMGIDL定義的數(shù)據(jù)類型映射到 雙向規(guī)范的低級(jí)表示 以便在代理之間進(jìn)行傳輸CDR有如下功能:

可變的字節(jié)次序 有公共字節(jié)次序的機(jī)器 可以在不進(jìn)行字節(jié)交換的情況下進(jìn)行消息交換 當(dāng)與字節(jié)次序不同的機(jī)器進(jìn)行通訊時(shí) 消息發(fā)起者決定消息字節(jié)次序 接收者負(fù)責(zé)交換字節(jié)以便匹配它的本地次序 每個(gè)GIOP消息(以及CDR封裝)包含 指出正確字節(jié)次序的標(biāo)記IIOP7對(duì)齊的主類型 在GIOP消息內(nèi)基本OMGIDL數(shù)據(jù)類型 在它們的自然邊界對(duì)齊 這樣強(qiáng)制在內(nèi)存中進(jìn)行數(shù)據(jù)對(duì)齊的體系結(jié)構(gòu) 可以有效地處理它們完整的OMGIDL映射 CDR描述所有OMGIDL數(shù)據(jù)類型 (包括可傳輸?shù)膫螌?duì)象,例如TypeCode)的表示 如果需要,CDR為CORBACore規(guī)范中 表示未定義或與實(shí)現(xiàn)有關(guān)的數(shù)據(jù)類型定義表示方法IIOP8moduleGIOP{enumMsgType{Request,Reply,CancelRequest,LocateRequest,LocateReply,CloseConnection,MessageError};structMessageHeader{charmagic[4];VersionGIOP_version;booleanbyte_order;octetmessage_type;unsignedlongmessage_size;};(4)GIOP消息格式IIOP9(5)GIOP傳輸假定傳輸是面向連接的 GIOP使用連接來(lái)定義請(qǐng)求ID的作用域和范圍傳輸是可靠的 傳輸保證字節(jié)按發(fā)送時(shí)的次序至多傳輸一次 并且有一些傳輸?shù)目隙ù_認(rèn)傳輸對(duì)錯(cuò)誤的連接丟失提供一些合理的通知 如果對(duì)等進(jìn)程失敗、對(duì)等主機(jī)崩潰或者網(wǎng)絡(luò)連接丟失 則連接所有者應(yīng)該接收到這種情況的一些通知初始化連接的傳輸模型可以映射到TCP/IP的一般連接模型 代理將已知的網(wǎng)絡(luò)地址發(fā)布在IOR中 客戶在初始化連接時(shí)使用它IIOP10服務(wù)器不主動(dòng)初始化連接 但它準(zhǔn)備接收對(duì)連接的請(qǐng)求 例如,它偵聽TCP/IPterms的連接 其它知道地址的代理(稱為客戶)可以 嘗試通過對(duì)地址發(fā)送connect請(qǐng)求來(lái)初始化連接 偵聽的服務(wù)器可以接受請(qǐng)求、與客戶建立新的唯一連接 或者它可以拒絕請(qǐng)求一旦連接打開后,兩端都可以關(guān)閉連接 候選的傳輸協(xié)議可能不直接支持這種特定的連接模型 只有傳輸模型可以映射到該視圖才是必要的IIOP11(6)IIOPOMG為GIOP指定的基線傳輸協(xié)議是TCP/IP用于支持TCP/IP的庫(kù)的特定API可以不同GIOP消息傳輸?shù)絋CP/IP的映射稱為 InternetInter-ORB協(xié)議(IIOP)IIOP12moduleIIOP{ //IDLstructVersion{char major;char minor;};structPro{Version iiop_version;string host;unsignedshort port;sequence<octet> object_key;};};IIOPIORIIOP139ORB產(chǎn)品IONA公司的OrbixInprise公司的visibrokerDigital公司的ObjectBrokerIBM公司的ComponentBrokerOOC公司的OminiBrokerFrankfurt

大學(xué)的MICOORB產(chǎn)品14IONA公司的Orbix是目前市場(chǎng)占有率最高的ORB產(chǎn)品已經(jīng)在金融、電信等多個(gè)領(lǐng)域得到廣泛應(yīng)用目前在 UNIX Windows95/NT MVX等 多種操作系統(tǒng)上運(yùn)行對(duì)IDL的映射基本上包含了CORBA規(guī)范的內(nèi)容例如C++、Java、Ada、Cobol等所實(shí)現(xiàn)的COS包括NamingService、EventService、 TransactionService、SecurityService、EventService等另外IONA公司還提供了ORB與DCOM的橋接產(chǎn)品:OrbixCOMet以及完全用Java實(shí)現(xiàn)的ORB:OrbixWeb 可以被WEB瀏覽器加載,增強(qiáng)WEB功能 網(wǎng)址:OrbixORB產(chǎn)品15Visibroker1997年11月原Borland公司與Visigenic公司合并成立Inprise原屬于Visigenic公司的ORB產(chǎn)品Visibroker 成為Inprise的重要產(chǎn)品 并被集成到Delphi4.0中Visibroker對(duì)IDL的映射包括:C++、Java所實(shí)現(xiàn)的COS包括NamingService、EventService等Visibroker已經(jīng)被集成到Netscape的Communicator中 在其它嵌入式系統(tǒng)中也有所應(yīng)用網(wǎng)址:ORB產(chǎn)品16ObjectBroker這是中間件廠商BEA公司從Digital公司獲得的ORB產(chǎn)品已經(jīng)被集成到BEA的其它環(huán)境之中主要完成了向C++的映射所實(shí)現(xiàn)的COS包括 NamingService EventService TransactionService等M3是BEA的一個(gè)集ORB、COS等功能于一身的產(chǎn)品

網(wǎng)址:ORB產(chǎn)品17ComponentBrokerIBM公司的ORB增強(qiáng)產(chǎn)品IBM最初曾提出兼容CORBA規(guī)范的DSOM模型隨著CORBA規(guī)范的逐步完善 IBM將模型中與ORB直接相關(guān)的部分抽取出來(lái) 稱之為ComponentBrokerComponentBroker完成的IDL映射包括 C++ Java Smalltalk COBOL等語(yǔ)言所實(shí)現(xiàn)的COS包括NamingService EventService TransactionService ConcurrentServices等 網(wǎng)址:ORB產(chǎn)品18OB美國(guó)OOC公司開發(fā)ORB產(chǎn)品──OB(OmniBroker) 最初是完全free的其所有源代碼皆可以自由下載完成的IDL包括C++、JavaOB所實(shí)現(xiàn)的COS包括NamingService、EventService等1998年開始,OOC以O(shè)B為核心實(shí)現(xiàn)了商業(yè)ORB產(chǎn)品:Orbacus所實(shí)現(xiàn)的COS增加了TradingService、SecurityService等 網(wǎng)址:ORB產(chǎn)品19MICO德國(guó)Frankfurt大學(xué)開發(fā)的ORB產(chǎn)品──MICO(MicoIsCOrba)所完成的IDL包括C++、Java所實(shí)現(xiàn)的COS包括NamingService EventService SecurityService等自2.0開始,MICO的版本號(hào)與CORBA的正式版本號(hào)同步 目前為2.31版MICO是為教育目的而開發(fā)的 并且采用了與Linux類似的發(fā)展途徑版權(quán)歸GNU組織 因而具有較好的發(fā)展前景網(wǎng)址:ORB產(chǎn)品20ClientdeveloperServerdeveloperServerIDLcompilerIDLcompilerClientIDL10CORBA應(yīng)用程序開發(fā)過程開發(fā)過程21例子-

GridObjectGridobjectserverremotecalls123581321345589144233widthheightget(row,col)set(row,col,value)client開發(fā)過程22Step-by-Step

DefinetheIDLinterfaceCompiletheIDLinterfaceWriteaclientImplementtheinterfaceWriteaservermainlineRegistertheserver開發(fā)過程23AnIDLInterfaceinterfaceGrid{readonlyattributeshortheight;readonlyattributeshortwidth;voidset(inshortrow,inshortcol,inlongvalue);longget(inshortrow,inshortcol);};開發(fā)過程24ORBclientlibraryORBserverlibrary編譯成

C++:gridS.ccserverskeletongridC.ccclientstubsClientServergrid.hhcommondeclarationsgrid.idl開發(fā)過程25IDLtoC++映射IDLoperations(操作)映射為

C++的成員函數(shù)-parametertypes映射為C++typesIDLattributes(屬性)映射為C++的成員函數(shù)-一個(gè)用于獲取值-另一個(gè)用于設(shè)置值(如果不是只讀屬性)IDLdatatypes映射為C++datatypes一個(gè)

interface映射為一個(gè)C++class.開發(fā)過程26所產(chǎn)生的

C++code:classGrid:publicvirtualCORBA::Object{public:staticGrid_ptr_bind(....);virtualCORBA::Shortheight(CORBA::Environment&);virtualCORBA::Shortwidth(CORBA::Environment&);virtualvoidset(CORBA::Shortrow,CORBA::Shortcol,CORBA::Longvalue,CORBA::Environment&);

virtualCORBA::Longget(CORBA::Shortrow,CORBA::Shortcol,

CORBA::Environment&);};開發(fā)過程27WritingaClient#include“grid.hh”#include<iostream.h>main(){

Grid_varp; //LikeaC++pointer //ConnecttoaremoteGridobject

p=Grid::_bind(“myGrid:GridSrv”,GridHost); //NowuseitlikearegularC++objectcout<<“heightis“<<p->height()<<endl;cout<<“widthis“<<p->width()<<endl;

p->set(2,4,123);//aremotecallcout<<“grid[2,4]is“<<p->get(2,4)<<endl;};開發(fā)過程28如何工作?GridimplementationserverremoteCORBAcalls123581321345589144233clientC++callsGridproxy-alocalC++object開發(fā)過程29ImplementingtheInterface編寫一個(gè)

C++class繼承

ORBfunctionality加入數(shù)據(jù)成員以及其它

C++函數(shù)

-根據(jù)具體的需求

重定義

IDL函數(shù)-提供具體的功能開發(fā)過程30Gridimplementation//DefineaC++implementationclassGrid_i//Inheritdistributedcapability#include”grid.hh” classGrid_i:publicvirtualGridBOAImpl{//Addapplicationdataandfunctionsshortm_height,m_width;long**m_array;public:Grid_i(shorth,shortw);//Constructorvirtual~Grid_i();//Destructor開發(fā)過程31Grid_i還包括...//Re-definetheIDLfunctionsvirtualCORBA::Shortheight(CORBA::Environment&);virtualCORBA::Shortwidth(CORBA::Environment&);virtualvoidset(CORBA::Shortrow,CORBA::Shortcol,CORBA::Longvalue,

CORBA::Environment&);virtualCORBA::Longget(CORBA::Shortrow,CORBA::Shortcol,

CORBA::Environment&);};開發(fā)過程32

IDL具體功能

virtualCORBA::ShortGrid_i::width(CORBA::Environment&){returnm_width;}virtualCORBA::ShortGrid_i::height(CORBA::Environment&){returnm_height;}virtualvoidGrid_i::set(CORBA::Shortrow,CORBA::Shortcol,CORBA::Longvalue,CORBA::Environment&);{m_array[row][col]=value;}CORBA::LongGrid_i::get(shortrow,shortcol,CORBA::Environment&){returnm_array[row][col];}開發(fā)過程33什么是‘servermainline’?

server是

objects的容器-ORB能激活的可執(zhí)行代碼‘servermainline’-在server中創(chuàng)建初始對(duì)象-將控制權(quán)交給

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論