3、CORBA概述公共對象請求代理體系結(jié)構(gòu)(CORBA)的設(shè)_第1頁
3、CORBA概述公共對象請求代理體系結(jié)構(gòu)(CORBA)的設(shè)_第2頁
3、CORBA概述公共對象請求代理體系結(jié)構(gòu)(CORBA)的設(shè)_第3頁
3、CORBA概述公共對象請求代理體系結(jié)構(gòu)(CORBA)的設(shè)_第4頁
3、CORBA概述公共對象請求代理體系結(jié)構(gòu)(CORBA)的設(shè)_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 公共對象請求代理體系結(jié)構(gòu)(公共對象請求代理體系結(jié)構(gòu)(CORBA)的設(shè)計目的是)的設(shè)計目的是 集成大量不同的對象系統(tǒng)。集成大量不同的對象系統(tǒng)。內(nèi)容:內(nèi)容: CORBA 概述概述2CORBA 概述概述例子例子 : Grid ObjectGrid objectserver123581321345589144233widthheightget(row,col)set(row,col,value)client3CORBA 概述概述客戶客戶 是是 希望在對象上執(zhí)行操作的實體希望在對象上執(zhí)行操作的實體對象實現(xiàn)對象實現(xiàn) 是是 實現(xiàn)對象的代碼和數(shù)據(jù)實現(xiàn)對象的代碼和數(shù)據(jù)ORB 負責(zé)負責(zé) 組成請求的數(shù)據(jù)的通訊組

2、成請求的數(shù)據(jù)的通訊 查找請求所需對象實現(xiàn)的機制查找請求所需對象實現(xiàn)的機制 準備接收請求的對象實現(xiàn)準備接收請求的對象實現(xiàn)客戶如何通過客戶如何通過ORB向?qū)ο髮崿F(xiàn)發(fā)出請求向?qū)ο髮崿F(xiàn)發(fā)出請求4CORBA 概述概述對象請求代理的結(jié)構(gòu)對象請求代理的結(jié)構(gòu)5CORBA 概述概述客戶利用存根或者客戶利用存根或者DII發(fā)出請求發(fā)出請求6CORBA 概述概述對象實現(xiàn)通過對象實現(xiàn)通過Skeleton或者或者DSI接收請求接收請求7CORBA 概述概述接口池與實現(xiàn)池接口池與實現(xiàn)池8對對CORBA結(jié)構(gòu)中元素的解釋結(jié)構(gòu)中元素的解釋ORB及接口及接口客戶客戶對象實現(xiàn)對象實現(xiàn) 對象引用對象引用IDL及向編程語言的映射及向編程

3、語言的映射客戶存根與客戶存根與DII實現(xiàn)骨架與實現(xiàn)骨架與DSI對象適配器對象適配器接口池接口池實現(xiàn)池實現(xiàn)池CORBA 概述概述9CORBA 概述概述對象請求代理(對象請求代理(ORB) 不要求將不要求將ORB實現(xiàn)為單獨的構(gòu)件實現(xiàn)為單獨的構(gòu)件而僅定義其接口而僅定義其接口 任何提供正確接口的任何提供正確接口的ORB實現(xiàn)都是可以接受的實現(xiàn)都是可以接受的 ORB的具體實現(xiàn)包括:的具體實現(xiàn)包括: ORB Core、IDL編譯器、編譯器、IR、Object Adapter ORB可以有多種實現(xiàn)可以有多種實現(xiàn) 它們對對象引用有不同的表示方法它們對對象引用有不同的表示方法 并且有不同的調(diào)用執(zhí)行方法并且有不同的

4、調(diào)用執(zhí)行方法 ORB Core 提供對象的基本表示,以及請求的通訊提供對象的基本表示,以及請求的通訊 特別地:編排特別地:編排/反編排(反編排(Marshal/Unmarshal) 將高層語言的參數(shù)等表示轉(zhuǎn)換為將高層語言的參數(shù)等表示轉(zhuǎn)換為便于底層網(wǎng)絡(luò)傳輸?shù)男问奖阌诘讓泳W(wǎng)絡(luò)傳輸?shù)男问?0ORB接口接口 ORB接口是客戶與對象實現(xiàn)可以直接訪問到的接口是客戶與對象實現(xiàn)可以直接訪問到的ORB功能接口功能接口 其它多數(shù)功能提供給其它多數(shù)功能提供給對象適配器對象適配器stubskeleton動態(tài)調(diào)用動態(tài)調(diào)用 ORB接口接口 對所有對所有ORB都是一樣的都是一樣的 不依賴于任何對象的接口或?qū)ο筮m配器不依賴于

5、任何對象的接口或?qū)ο筮m配器CORBA 概述概述11CORBA 概述概述客戶(客戶(Client) (對象的)客戶訪問對象的對象引用(對象的)客戶訪問對象的對象引用并且調(diào)用對象上的操作并且調(diào)用對象上的操作 客戶只知道對象的邏輯結(jié)構(gòu)客戶只知道對象的邏輯結(jié)構(gòu)根據(jù)它的接口,并通過調(diào)用感受對象的行為根據(jù)它的接口,并通過調(diào)用感受對象的行為 盡管一般認為客戶是向?qū)ο蟀l(fā)出請求的程序或進程盡管一般認為客戶是向?qū)ο蟀l(fā)出請求的程序或進程 但是客戶只是相對于特定對象而言的,是一個相對概念但是客戶只是相對于特定對象而言的,是一個相對概念 一個對象的實現(xiàn)可以是其它對象的客戶一個對象的實現(xiàn)可以是其它對象的客戶客戶客戶客戶客

6、戶服務(wù)器服務(wù)器服務(wù)器服務(wù)器12CORBA 概述概述對象實現(xiàn)對象實現(xiàn) 通過通過 為為 對象實例對象實例 定義定義 數(shù)據(jù)數(shù)據(jù) 和和 為為 對象方法對象方法 定義定義 代碼代碼 提供提供 對象的語義對象的語義對象可以具有不同的實現(xiàn)方式,包括:對象可以具有不同的實現(xiàn)方式,包括:單獨的服務(wù)器單獨的服務(wù)器庫庫每個方法的程序每個方法的程序封裝應(yīng)用程序封裝應(yīng)用程序面向?qū)ο蟮臄?shù)據(jù)庫面向?qū)ο蟮臄?shù)據(jù)庫 等等等等對象實現(xiàn)不依賴于對象實現(xiàn)不依賴于ORB或者客戶調(diào)用對象的方式或者客戶調(diào)用對象的方式對象實現(xiàn)可以對象實現(xiàn)可以 通過通過 選擇選擇Object Adapter 達到達到 選擇與選擇與ORB相關(guān)服務(wù)的接口相關(guān)服務(wù)的

7、接口 的的 目的目的對象實現(xiàn)(對象實現(xiàn)(Object Implementation)13 對象引用提供在對象引用提供在ORB內(nèi)指定對象時所需要的信息內(nèi)指定對象時所需要的信息 對象引用對于客戶和對象實現(xiàn)都是一個位流對象引用對于客戶和對象實現(xiàn)都是一個位流(opaque)的概念的概念 因此客戶與對象實現(xiàn)可以與引用的實際表示分離。因此客戶與對象實現(xiàn)可以與引用的實際表示分離。 在選擇對象引用表示上,不同的在選擇對象引用表示上,不同的ORB可以有所差別可以有所差別 傳遞給客戶的對象引用表示僅在客戶的生命期內(nèi)有效傳遞給客戶的對象引用表示僅在客戶的生命期內(nèi)有效 對于一個特定的編程語言,所有的對于一個特定的編程

8、語言,所有的ORB都必須提供對象引用都必須提供對象引用 (通常稱為對象)的相同語言映射。(通常稱為對象)的相同語言映射。 這就允許用特定語言編寫的程序可以在獨立于特定這就允許用特定語言編寫的程序可以在獨立于特定ORB的情的情 況下訪問對象引用。況下訪問對象引用。 語言映射也可以提供其它訪問對象引用的方式語言映射也可以提供其它訪問對象引用的方式CORBA 概述概述對象引用(對象引用(Object Reference)14 OMG接口定義語言(接口定義語言(OMG IDL)通過)通過 指定指定 對象接口對象接口 定義定義 對象類型對象類型 接口包括一組已命名的操作和這些操作的參數(shù)。接口包括一組已命

9、名的操作和這些操作的參數(shù)。 IDL 是一個分析設(shè)計結(jié)果是一個分析設(shè)計結(jié)果 描述描述ORB操縱的對象操縱的對象其源代碼的存在對其源代碼的存在對ORB正常工作不是必須的正常工作不是必須的 在運行時刻,以在運行時刻,以stub程序或者運行時接口程序或者運行時接口repository的形式的形式提供等價的信息。提供等價的信息。 通過通過IDL,特定對象實現(xiàn)告訴它潛在的客戶:,特定對象實現(xiàn)告訴它潛在的客戶:什么是有效的操作什么是有效的操作 以及以及 如何調(diào)用這些操作如何調(diào)用這些操作 從從IDL定義可以將定義可以將CORBA對象向?qū)ο笙蛱囟ň幊陶Z言特定編程語言 或者或者 對象系統(tǒng)對象系統(tǒng) 映射映射CORB

10、A 概述概述OMG接口定義語言接口定義語言15interface Grid readonly attribute short height; readonly attribute short width; void set(in short row, in short col, in long value); long get(in short row, in short col);例子:例子:grid.idlCORBA 概述概述CORBA中主要構(gòu)件的接口全部由中主要構(gòu)件的接口全部由IDL進行定義進行定義例如:例如:ORB接口、接口、Stub、Skeleton、對象適配器、對象適配器更主要的用

11、途是定義應(yīng)用對象!更主要的用途是定義應(yīng)用對象!16 語言映射包括定義特定于語言的數(shù)據(jù)類型和通過語言映射包括定義特定于語言的數(shù)據(jù)類型和通過ORB訪問對象的過程接口。訪問對象的過程接口。 它包括它包括:客戶客戶stub接口的結(jié)構(gòu)(面向?qū)ο蟮恼Z言不需要)接口的結(jié)構(gòu)(面向?qū)ο蟮恼Z言不需要)動態(tài)調(diào)用接口動態(tài)調(diào)用接口實現(xiàn)骨架實現(xiàn)骨架對象適配器和直接對象適配器和直接ORB接口接口 語言映射也包括對象調(diào)用之間以及客戶或?qū)崿F(xiàn)中控制線程語言映射也包括對象調(diào)用之間以及客戶或?qū)崿F(xiàn)中控制線程之間的交互。之間的交互。 最常見的映射提供同步調(diào)用:當對象操作完成時子程序返回最常見的映射提供同步調(diào)用:當對象操作完成時子程序返回

12、 編譯開關(guān)(選項)控制映射具體策略。編譯開關(guān)(選項)控制映射具體策略。CORBA 概述概述IDL向具體語言的映射向具體語言的映射17CORBA 概述概述ORB client libraryORB server library編譯編譯 IDL:gridS.cppserver skeletongridC.cppclient stubsClientServergrid.hcommon declarationsgrid.idl18所產(chǎn)生的所產(chǎn)生的 C+ 頭文件頭文件(Orbix):class Grid : public virtual CORBA:Object public: static Grid_

13、ptr _bind(.); virtual CORBA:Short height(CORBA:Environment&); virtual CORBA:Short width(CORBA:Environment&); virtual void set(CORBA:Short row, CORBA:Short col, CORBA:Long value, CORBA:Environment &); virtual CORBA:Long get(CORBA:Short row, CORBA:Short col, CORBA:Environment &);CORBA

14、概述概述19客戶存根(客戶存根(Client stub) 由由IDL編譯器根據(jù)編譯器根據(jù)IDL文件生成文件生成 客戶訪問對象的操作主要方式客戶訪問對象的操作主要方式 實現(xiàn)對象位置透明性實現(xiàn)對象位置透明性 向非面向?qū)ο笳Z言映射時向非面向?qū)ο笳Z言映射時 將為每個接口類型產(chǎn)生一個將為每個接口類型產(chǎn)生一個stub編程接口編程接口 面向?qū)ο蟮木幊陶Z言不需要面向?qū)ο蟮木幊陶Z言不需要stub接口接口 它通過偽對象的方式提供訪問對象的操作。它通過偽對象的方式提供訪問對象的操作。CORBA 概述概述20DII(動態(tài)調(diào)用接口動態(tài)調(diào)用接口) 客戶指定要調(diào)用的對象、要執(zhí)行的操作和調(diào)用或調(diào)用序列客戶指定要調(diào)用的對象、要

15、執(zhí)行的操作和調(diào)用或調(diào)用序列中操作的參數(shù)集,而不是調(diào)用特定于特殊對象上特殊操作的中操作的參數(shù)集,而不是調(diào)用特定于特殊對象上特殊操作的stub 子程序。子程序。 客戶代碼必須提供要執(zhí)行操作的信息和傳送參數(shù)的類型客戶代碼必須提供要執(zhí)行操作的信息和傳送參數(shù)的類型 動態(tài)調(diào)用接口的特性可能因編程語言映射的不同而不同動態(tài)調(diào)用接口的特性可能因編程語言映射的不同而不同 客戶通過靜態(tài)還是動態(tài)接口發(fā)出請求客戶通過靜態(tài)還是動態(tài)接口發(fā)出請求對于對象實現(xiàn)是透明的對于對象實現(xiàn)是透明的CORBA 概述概述CORBA_Create_request(.)CORBA_Request_add_arg(.)CORBA_Request_

16、add_arg(.)CORBA_Request_invoke(.)CORBA_Request_delete(.)21實現(xiàn)骨架實現(xiàn)骨架(Implementation Skeleton) 由由IDL編譯器根據(jù)編譯器根據(jù)IDL文件生成文件生成 對象適配器訪問對象實現(xiàn)中方法的主要形式對象適配器訪問對象實現(xiàn)中方法的主要形式 對于一種特定映射語言,以及可能的特定對象適配器對于一種特定映射語言,以及可能的特定對象適配器 Skeleton 與與 stub 不是必然對應(yīng)的不是必然對應(yīng)的客戶也可以通過動態(tài)調(diào)用接口發(fā)出請求客戶也可以通過動態(tài)調(diào)用接口發(fā)出請求 但也可以編寫不使用但也可以編寫不使用skeleton調(diào)用實

17、現(xiàn)方法的對象適配器調(diào)用實現(xiàn)方法的對象適配器CORBA 概述概述22動態(tài)骨架接口動態(tài)骨架接口(DSI) 通過一個通過一個“提供訪問操作名與參數(shù)的接口提供訪問操作名與參數(shù)的接口” 獲得獲得 一個對象的實現(xiàn)一個對象的實現(xiàn) 實現(xiàn)代碼必須向?qū)崿F(xiàn)代碼必須向ORB 提供提供 所有操作參數(shù)的描述所有操作參數(shù)的描述 ORB 提供提供 任何輸入?yún)?shù)的值,以便在執(zhí)行操作時使用任何輸入?yún)?shù)的值,以便在執(zhí)行操作時使用 在執(zhí)行操作后,實現(xiàn)代碼向在執(zhí)行操作后,實現(xiàn)代碼向ORB 提供提供 任何輸出參數(shù)的值或者例外處理任何輸出參數(shù)的值或者例外處理 適配器通過靜態(tài)還是動態(tài)骨架接口訪問對象實現(xiàn)適配器通過靜態(tài)還是動態(tài)骨架接口訪問對象

18、實現(xiàn) 對于客戶是透明的對于客戶是透明的CORBA 概述概述動態(tài)骨架與動態(tài)調(diào)用可以被一起用于創(chuàng)建網(wǎng)關(guān)(動態(tài)骨架與動態(tài)調(diào)用可以被一起用于創(chuàng)建網(wǎng)關(guān)(Gateway) 這些網(wǎng)關(guān)包括:不同這些網(wǎng)關(guān)包括:不同ORB環(huán)境之間的網(wǎng)關(guān)環(huán)境之間的網(wǎng)關(guān) 不同防火墻軟件之間的網(wǎng)關(guān)不同防火墻軟件之間的網(wǎng)關(guān) 安全網(wǎng)關(guān)安全網(wǎng)關(guān)23對象適配器對象適配器(Object Adaptor) 對象適配器是對象實現(xiàn)訪問對象適配器是對象實現(xiàn)訪問ORB所提供服務(wù)的主要方式所提供服務(wù)的主要方式 ORB通過對象適配器提供的服務(wù)通常包括:通過對象適配器提供的服務(wù)通常包括:生成和解釋對象引用生成和解釋對象引用方法調(diào)用方法調(diào)用交互的安全性交互的安全

19、性對象和實現(xiàn)激活及取消激活對象和實現(xiàn)激活及取消激活將對象引用映射到實現(xiàn)將對象引用映射到實現(xiàn)注冊實現(xiàn)注冊實現(xiàn) 對象粒度、壽命、策略、實現(xiàn)風(fēng)格等的明顯區(qū)別對象粒度、壽命、策略、實現(xiàn)風(fēng)格等的明顯區(qū)別 使得使得 ORB核心很難為所有對象提供方便和有效的單一接口核心很難為所有對象提供方便和有效的單一接口通過對象適配器通過對象適配器ORB可以將一組特定的對象實現(xiàn)作為目標可以將一組特定的對象實現(xiàn)作為目標CORBA 概述概述24接口池接口池(Interface Repository) 接口池提供持久對象的服務(wù)接口池提供持久對象的服務(wù) 這些對象在運行時以可用的形式表示這些對象在運行時以可用的形式表示IDL信息信

20、息 ORB可以使用接口池信息執(zhí)行請求,例如:可以使用接口池信息執(zhí)行請求,例如:如果程序在編譯時遇到接口未知的對象,如果程序在編譯時遇到接口未知的對象,那么使用接口池中的信息可以:那么使用接口池中的信息可以: 確定對象的有效操作確定對象的有效操作對它發(fā)出調(diào)用對它發(fā)出調(diào)用 除了在除了在ORB運行時提供職能外,接口池也是運行時提供職能外,接口池也是 存儲存儲 與與ORB對象接口相關(guān)的其它信息的對象接口相關(guān)的其它信息的 公共地點公共地點例如:調(diào)試信息例如:調(diào)試信息stub或或skeleton庫庫 形式化或瀏覽特定對象形式化或瀏覽特定對象等等等等CORBA 概述概述25實現(xiàn)池實現(xiàn)池(Implementa

21、tion Repository) 實現(xiàn)池包含的信息允許實現(xiàn)池包含的信息允許ORB定位和激活對象實現(xiàn)定位和激活對象實現(xiàn) 盡管實現(xiàn)池中的大多數(shù)信息特定于盡管實現(xiàn)池中的大多數(shù)信息特定于ORB或者操作系統(tǒng),或者操作系統(tǒng), 但是實現(xiàn)池是習(xí)慣上記錄這些信息的地點。但是實現(xiàn)池是習(xí)慣上記錄這些信息的地點。 安裝實現(xiàn)和與激活及執(zhí)行對象實現(xiàn)的策略控制是安裝實現(xiàn)和與激活及執(zhí)行對象實現(xiàn)的策略控制是 通過通過 實現(xiàn)池上的操作完成的實現(xiàn)池上的操作完成的 除了提供除了提供ORB運行時的職能外,實現(xiàn)池也是運行時的職能外,實現(xiàn)池也是 存儲存儲 與與ORB對象實現(xiàn)相關(guān)的其它信息的對象實現(xiàn)相關(guān)的其它信息的 公共地點公共地點 例如:

22、例如:調(diào)試信息調(diào)試信息管理控制管理控制資源分配資源分配安全性安全性等等等等CORBA 概述概述26 位于客戶和對象實現(xiàn)內(nèi)部的位于客戶和對象實現(xiàn)內(nèi)部的ORB 如果有合適的通訊機制,那么如果有合適的通訊機制,那么ORB 可以可以 在客戶和對象實現(xiàn)的程序中實現(xiàn)在客戶和對象實現(xiàn)的程序中實現(xiàn) 客戶中的客戶中的stub使用位置透明的使用位置透明的IPC機制或者直接訪問地點服務(wù)機制或者直接訪問地點服務(wù) 建立與實現(xiàn)的通訊建立與實現(xiàn)的通訊 與實現(xiàn)關(guān)聯(lián)的代碼負責(zé)為客戶設(shè)置合適的數(shù)據(jù)庫(操作定位)與實現(xiàn)關(guān)聯(lián)的代碼負責(zé)為客戶設(shè)置合適的數(shù)據(jù)庫(操作定位) CORBA 概述概述27 基于服務(wù)器的基于服務(wù)器的ORB 所有客

23、戶和實現(xiàn)可以與一個或多個服務(wù)器通訊所有客戶和實現(xiàn)可以與一個或多個服務(wù)器通訊服務(wù)器的任務(wù)是將請求從客戶發(fā)送到對象實現(xiàn)服務(wù)器的任務(wù)是將請求從客戶發(fā)送到對象實現(xiàn) 就底層操作系統(tǒng)而言,就底層操作系統(tǒng)而言,ORB可以是普通的程序可以是普通的程序并且可以使用普通的并且可以使用普通的IPC與與ORB通訊通訊 這是主要的這是主要的ORB實現(xiàn)方式,優(yōu)點:實現(xiàn)方式,優(yōu)點:客戶與服務(wù)器目標碼大小適度客戶與服務(wù)器目標碼大小適度便于配置便于配置CORBA 概述概述28基于系統(tǒng)的基于系統(tǒng)的ORB 為增強安全性、健壯性和性能為增強安全性、健壯性和性能可以將可以將ORB作為底層操作系統(tǒng)的基本服務(wù)作為底層操作系統(tǒng)的基本服務(wù) 對

24、象引用可以永遠不變,從而減少了每次請求時驗證的開銷對象引用可以永遠不變,從而減少了每次請求時驗證的開銷 由于操作系統(tǒng)可以知道客戶和實現(xiàn)的地點及接口由于操作系統(tǒng)可以知道客戶和實現(xiàn)的地點及接口因此可以實現(xiàn)許多不同的優(yōu)化因此可以實現(xiàn)許多不同的優(yōu)化 例如當客戶與實現(xiàn)在同一臺機器上時,可以省缺編排活動例如當客戶與實現(xiàn)在同一臺機器上時,可以省缺編排活動基于庫的基于庫的ORB 對于小型、并且其實現(xiàn)可以共享的對象,實現(xiàn)可以在庫中對于小型、并且其實現(xiàn)可以共享的對象,實現(xiàn)可以在庫中CORBA 概述概述29客戶在它們的程序中以庫子程序的方式客戶在它們的程序中以庫子程序的方式 訪問訪問特定對象類型的特定對象類型的st

25、ub客戶程序在它的編程語言中以用普通方式調(diào)用該子程序客戶程序在它的編程語言中以用普通方式調(diào)用該子程序客戶將對象引用傳送給客戶將對象引用傳送給stub子程序以初始化調(diào)用子程序以初始化調(diào)用 Stub 能夠訪問對象引用表示,并與能夠訪問對象引用表示,并與ORB交互,以執(zhí)行調(diào)用交互,以執(zhí)行調(diào)用 CORBA 概述概述30在最常見的情況下,客戶通過調(diào)用擁有引用的其它對象在最常見的情況下,客戶通過調(diào)用擁有引用的其它對象并作為輸出參數(shù)并作為輸出參數(shù) 來獲取對象引用來獲取對象引用也可以采用從字符串轉(zhuǎn)換的方法:也可以采用從字符串轉(zhuǎn)換的方法: 服務(wù)器方將對象引用轉(zhuǎn)換為字符串服務(wù)器方將對象引用轉(zhuǎn)換為字符串然后將字符串

26、存儲在文件中然后將字符串存儲在文件中 則客戶方可以將它轉(zhuǎn)換回對象引用則客戶方可以將它轉(zhuǎn)換回對象引用客戶程序的具體表現(xiàn)形式與客戶程序的具體表現(xiàn)形式與ORB的實現(xiàn)方式有關(guān)的實現(xiàn)方式有關(guān) 不論哪種形式,客戶程序由兩部分組成不論哪種形式,客戶程序由兩部分組成 (1)程序員編寫的代碼)程序員編寫的代碼 (2)IDL編譯器生成的代碼編譯器生成的代碼 它們與它們與ORB提供的功能一起,構(gòu)成了抽象意義的提供的功能一起,構(gòu)成了抽象意義的CORBA客戶方客戶方CORBA 概述概述31CORBA 概述概述32#include “grid.hh”#include main () Grid_var p;/ Like a

27、 C+ pointer/ Connect to a remote Grid object p=string_to_object(“grid.ref”); /p = Grid:_bind(“myGrid:GridSrv”,GridHost);/ Now use it like a regular C+ object cout “height is “ height() endl; cout “width is “ width() set(2,4,123); / a remote call cout “grid2,4 is “ get(2,4) endl;CORBA 概述概述客戶程序客戶程序(Gr

28、idC.cpp)33CORBA 概述概述 對象實現(xiàn)以不同的方式與對象實現(xiàn)以不同的方式與ORB交互來交互來建立它的表示建立它的表示創(chuàng)建新對象創(chuàng)建新對象獲取與獲取與ORB相關(guān)的服務(wù)相關(guān)的服務(wù) 等等它主要是通過對象適配器完成這些工作它主要是通過對象適配器完成這些工作由于對象實現(xiàn)與由于對象實現(xiàn)與ORB實現(xiàn)方式實現(xiàn)方式對象適配器實現(xiàn)途徑對象適配器實現(xiàn)途徑 密切相關(guān)密切相關(guān) 因此,對象實現(xiàn)的具體結(jié)構(gòu)不易描述因此,對象實現(xiàn)的具體結(jié)構(gòu)不易描述34 在發(fā)生調(diào)用時在發(fā)生調(diào)用時ORB核心核心對象適配器對象適配器skeleton 共同協(xié)商,確定調(diào)用針對的實現(xiàn)方法共同協(xié)商,確定調(diào)用針對的實現(xiàn)方法 方法的參數(shù)之一指定要調(diào)

29、用的對象,以便定位對象方法的參數(shù)之一指定要調(diào)用的對象,以便定位對象 其它參數(shù)則根據(jù)其它參數(shù)則根據(jù)skeleton定義被提供定義被提供方法完成后返回,并導(dǎo)致方法完成后返回,并導(dǎo)致輸出參數(shù)輸出參數(shù) 或或 將例外結(jié)果傳輸回客戶將例外結(jié)果傳輸回客戶 當創(chuàng)建新對象時,通常需要通知當創(chuàng)建新對象時,通常需要通知ORB以便以便ORB知道如何找到該對象的實現(xiàn)知道如何找到該對象的實現(xiàn)CORBA 概述概述35CORBA 概述概述36virtual CORBA:Short Grid_i:width(CORBA:Environment &) return m_width; virtual CORBA:Short Grid_i:height(CORBA:Environment &) return m_height;virtual void Grid_i:set (CORBA:Short row, CORBA:Short col, CORBA:Long value, CORBA:Environment&); m_arrayrowcol = value; CORBA:Long Grid_i:get (short row, short c

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論