CORBA應(yīng)用程序開發(fā)過程_第1頁
CORBA應(yīng)用程序開發(fā)過程_第2頁
CORBA應(yīng)用程序開發(fā)過程_第3頁
CORBA應(yīng)用程序開發(fā)過程_第4頁
CORBA應(yīng)用程序開發(fā)過程_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院CORBA應(yīng)用程序開發(fā)過程西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院Agenda設(shè)計(jì)CORBA應(yīng)用程序CORBA應(yīng)用程序開發(fā)過程一個(gè)例子銀行賬戶管理西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院Agenda設(shè)計(jì)設(shè)計(jì)CORBA應(yīng)用程序應(yīng)用程序CORBA應(yīng)用程序開發(fā)過程一個(gè)例子銀行賬戶管理西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院CORBA與OO技術(shù)雖然CORBA支持非面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,但建議使用OO語言實(shí)現(xiàn): IDL是OO風(fēng)格的。 非OO語言的實(shí)現(xiàn)不能直接在CORBA系統(tǒng)中使用,需要進(jìn)行OO形式的包裝。 在分析設(shè)計(jì)階段可以利用O

2、O的方法和工具。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院設(shè)計(jì)CORBA應(yīng)用程序設(shè)計(jì)基于CORBA的分布式系統(tǒng)時(shí),一般應(yīng)考慮如下幾個(gè)問題: 網(wǎng)絡(luò)傳輸 消息傳遞 運(yùn)行平臺(tái) 資源優(yōu)化 其它西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院設(shè)計(jì)CORBA應(yīng)用程序網(wǎng)絡(luò)傳輸 多樣化的網(wǎng)絡(luò)傳輸選擇 不同的編程模式 AppleTalk、DCE RPC、RMI、GIOP/IIOP 不同的底層通信協(xié)議 TCP/IP、DCEnet、Novell IPX/SPX、SNA、X.25 不同的通信介質(zhì) 以太網(wǎng)、串口線 連接持續(xù)性因素 固定網(wǎng)絡(luò)計(jì)算、可移動(dòng)計(jì)算。 設(shè)計(jì)CORBA應(yīng)用時(shí),應(yīng)確保ORB能使用必要的網(wǎng)絡(luò)傳輸。

3、西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院設(shè)計(jì)CORBA應(yīng)用程序消息傳遞 CORBA提供了三種消息傳遞方式: 同步方式 異步方式(延遲同步方式) 單向方式 應(yīng)根據(jù)不同的應(yīng)用場(chǎng)合選擇使用: 所申請(qǐng)的服務(wù)只需很短的時(shí)間即可完成,應(yīng)選用同步方式 所申請(qǐng)的服務(wù)需要較長(zhǎng)時(shí)間才可完成 ,應(yīng)選用異步方式 如果客戶程序無需獲知請(qǐng)求已完成的確認(rèn)信息,應(yīng)選用單向方式。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院設(shè)計(jì)CORBA應(yīng)用程序運(yùn)行平臺(tái) 由于不同平臺(tái)(硬件/OS )之間的差異,為一個(gè)平臺(tái)創(chuàng)建的軟件系統(tǒng)通常不能運(yùn)行在另一個(gè)平臺(tái)之上。 運(yùn)行于不同平臺(tái)(硬件/OS)之上的CORBA對(duì)象之間(或者客戶端與C

4、ORBA對(duì)象之間)可以跨這些平臺(tái)通信。 設(shè)計(jì)者必須在軟件系統(tǒng)的性能與通用性之間作出折衷選擇。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院設(shè)計(jì)CORBA應(yīng)用程序資源優(yōu)化 分布式環(huán)境下,跨網(wǎng)絡(luò)的通信開銷是相當(dāng)可觀的,占用相當(dāng)多的系統(tǒng)資源: 網(wǎng)絡(luò)資源、接口、通信信道、邏輯鏈路等。 設(shè)計(jì)系統(tǒng)時(shí)應(yīng)考慮盡量提高這些資源的利用率,避免頻繁的跨網(wǎng)絡(luò)(尤其是廣域網(wǎng))通信。其它決策 安全性、可靠性、事務(wù)處理、并發(fā)控制等。 考慮更多的錯(cuò)誤處理: 例如客戶程序發(fā)出請(qǐng)求但服務(wù)程序未就緒,甚至找不到服務(wù)程序或無權(quán)限訪問服務(wù)程序。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院Agenda設(shè)計(jì)CORBA應(yīng)用程序CORB

5、A應(yīng)用程序開發(fā)過程應(yīng)用程序開發(fā)過程一個(gè)例子銀行賬戶管理西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院典型的CORBA應(yīng)用表示層表示層中間層中間層數(shù)據(jù)層數(shù)據(jù)層數(shù)據(jù)庫數(shù)據(jù)庫CORBA對(duì)象對(duì)象CORBA客戶端客戶端典型的CORBA應(yīng)用西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院CORBA應(yīng)用開發(fā)過程CORBA規(guī)范并沒有限制ORB的具體實(shí)現(xiàn)方法,所以不同廠商對(duì)ORB的具體實(shí)現(xiàn)方法可能差別很大,這就導(dǎo)致不同廠商提供的ORB上操作可能有很大的差異。但基本過程都是類似的。利用利用OO方法進(jìn)行分析設(shè)計(jì)方法進(jìn)行分析設(shè)計(jì)標(biāo)識(shí)應(yīng)用程序所需的對(duì)象標(biāo)識(shí)應(yīng)用程序所需的對(duì)象實(shí)現(xiàn)每個(gè)對(duì)象,部署,運(yùn)行實(shí)現(xiàn)每個(gè)對(duì)象,部署,

6、運(yùn)行西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院典型的CORBA應(yīng)用實(shí)現(xiàn)過程用用IDL編寫對(duì)象規(guī)格說明編寫對(duì)象規(guī)格說明編譯編譯IDL生成樁和框架生成樁和框架編寫客戶程序代碼編寫客戶程序代碼編寫對(duì)象實(shí)現(xiàn)和服務(wù)程序代碼編寫對(duì)象實(shí)現(xiàn)和服務(wù)程序代碼編譯客戶程序編譯客戶程序編譯服務(wù)程序編譯服務(wù)程序運(yùn)行客戶程序運(yùn)行客戶程序運(yùn)行服務(wù)程序運(yùn)行服務(wù)程序啟動(dòng)對(duì)象請(qǐng)求代理(啟動(dòng)對(duì)象請(qǐng)求代理(ORB)內(nèi)核)內(nèi)核一個(gè)典型CORBA應(yīng)用的實(shí)現(xiàn)過程西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院編寫對(duì)象接口對(duì)象接口是關(guān)于服務(wù)對(duì)象語法的規(guī)格說明。接口定義中包括: 提供或使用的服務(wù)的名字 參數(shù) 返回值 異常 上下文環(huán)境等對(duì)

7、象接口由OMG IDL定義西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院編譯IDL文件IDL編譯器編譯器IDL文件文件StubSkeleton輸入輸入輸出輸出輸出輸出廠商實(shí)現(xiàn)IDL編譯器時(shí)應(yīng)參照OMG制訂的語言的規(guī)范,編程人員只要選擇使用合適的編譯器就可以了。VisiBroker for Java 4.0提供的idl2java編譯器將IDL映射到Java語言,生成Java語言的客戶端樁代碼以及服務(wù)端框架代碼。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院編寫客戶程序初始化初始化ORB綁定到服務(wù)對(duì)象綁定到服務(wù)對(duì)象調(diào)用服務(wù)對(duì)象提供的服務(wù)調(diào)用服務(wù)對(duì)象提供的服務(wù)客戶程序操作流程西安電子科技大學(xué)軟件

8、學(xué)院西安電子科技大學(xué)軟件學(xué)院初始化ORB無論是客戶程序還是服務(wù)程序,都必須在利用ORB進(jìn)行通信之前初始化ORB。初始化ORB的作用 讓ORB了解有新的成員加入。 獲取ORB偽對(duì)象的引用,以備將來調(diào)用ORB內(nèi)核提供的操作。 所謂偽對(duì)象專指在CORBA基礎(chǔ)設(shè)施中的一個(gè)對(duì)象 偽對(duì)象是本地的。 利用偽對(duì)象調(diào)用CORBA基礎(chǔ)設(shè)施提供的服務(wù)。 用一種統(tǒng)一的觀點(diǎn)看待所有對(duì)象。 偽對(duì)象也使用IDL定義。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院ORB服務(wù)ORB內(nèi)核提供了一些不依賴于任何對(duì)象適配器的操作: 初始化ORB 獲取初始引用的操作 動(dòng)態(tài)調(diào)用相關(guān)的操作 生成類型碼的操作 線程和策略相關(guān)的操作西安電子

9、科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院編寫對(duì)象實(shí)現(xiàn)和服務(wù)程序代碼編寫對(duì)象實(shí)現(xiàn): IDL文件只定義了服務(wù)對(duì)象的規(guī)格說明,程序員必須另外編寫服務(wù)對(duì)象的具體實(shí)現(xiàn)。對(duì)象實(shí)現(xiàn)則有很多選擇的余地: Java、C+、C、Smalltalk 對(duì)象實(shí)現(xiàn)所用的語言與客戶程序所選用的語言無關(guān),只要ORB產(chǎn)品供應(yīng)商支持IDL到這些語言的映射即可。程序員應(yīng)該熟悉IDL到所選擇的語言的映射規(guī)則,因?yàn)椋?IDL編譯器除了生成Stub和Skeleton外,還會(huì)自動(dòng)生成一些對(duì)象實(shí)現(xiàn)需要用到的輔助代碼。VisiBroker的idl2java會(huì)生成一些對(duì)象適配器的Java類和各種輔助性的Java類,編寫對(duì)象實(shí)現(xiàn)的代碼時(shí)必須繼承其

10、中的一些類或使用某些類提供的方法。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院編寫對(duì)象實(shí)現(xiàn)和服務(wù)程序代碼編寫對(duì)象實(shí)現(xiàn)后,還必須實(shí)現(xiàn)服務(wù)程序的main例程。服務(wù)程序利用可移植對(duì)象適配器(POA)激活伺服對(duì)象供客戶程序使用。服務(wù)程序通常是一個(gè)循環(huán)執(zhí)行的進(jìn)程,不斷監(jiān)聽客戶程序請(qǐng)求并為之服務(wù)。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院創(chuàng)建并部署應(yīng)用程序一些ORB產(chǎn)品提供了專門的編譯器以簡(jiǎn)化這一過程: VisiBroker for Java提供的編譯器vbjc會(huì)自動(dòng)調(diào)用JDK中的Java編譯器javac,指示javac在編譯客戶程序的同時(shí)編譯相關(guān)的客戶程序樁文件,在編譯服務(wù)程序的同時(shí)編譯相關(guān)的

11、服務(wù)程序框架文件。客戶程客戶程序代碼序代碼IDL生成生成的的Stub客戶端客戶端應(yīng)用程序應(yīng)用程序編譯編譯服務(wù)端服務(wù)端代碼代碼IDL生成的生成的Skeleton服務(wù)端服務(wù)端應(yīng)用程序應(yīng)用程序編譯編譯創(chuàng)建客戶端應(yīng)用程序創(chuàng)建服務(wù)端應(yīng)用程序西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院創(chuàng)建并部署應(yīng)用程序部署應(yīng)用程序在部署階段由系統(tǒng)管理員規(guī)劃如何在終端用戶的桌面系統(tǒng)安裝客戶程序,或在服務(wù)器一類的機(jī)器上安裝服務(wù)程序。 部署工作由單獨(dú)的角色來承擔(dān) EJB中部署人員還有更多的工作要做。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院運(yùn)行應(yīng)用程序運(yùn)行CORBA應(yīng)用程序時(shí),必須首先啟動(dòng)首先啟動(dòng)服務(wù)程序服務(wù)程序,然

12、后才可運(yùn)行客戶程序。 VisiBroker for Java要求其ORB內(nèi)核(osagent)必須在客戶程序啟動(dòng)之前啟動(dòng)完成。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院Agenda設(shè)計(jì)CORBA應(yīng)用程序CORBA應(yīng)用程序開發(fā)過程一個(gè)例子一個(gè)例子銀行賬戶管理銀行賬戶管理西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院例子背景銀行賬戶管理 服務(wù)端管理大量銀行顧客的賬戶,提供基本的開戶、存款、取款、查詢余額的功能。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院對(duì)象認(rèn)定一個(gè)銀行帳戶的實(shí)體模型。balance:表示當(dāng)前的余額。deposit:存款withdraw:取款getBalance:查詢余

13、額manage銀行中的儲(chǔ)蓄員的實(shí)體模型。accountList :記錄當(dāng)前已開設(shè)的所有帳戶。open:根據(jù)帳戶標(biāo)識(shí)查找某一帳戶,如果該標(biāo)識(shí)的帳戶不存在則創(chuàng)建一個(gè)新帳戶。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院定義對(duì)象接口/ 銀行帳戶管理系統(tǒng)的對(duì)象接口定義銀行帳戶管理系統(tǒng)的對(duì)象接口定義module Bank / 帳戶帳戶 interface Account / 存款存款 void deposit(in float amount); / 取款取款 boolean withdraw(in float amount); / 查詢余額查詢余額 float getBalance(); ; / 帳戶

14、管理員帳戶管理員 interface AccountManager / 查詢指定名字的帳戶,查無則新開帳戶查詢指定名字的帳戶,查無則新開帳戶 Account open(in string name); ; Bank.idl西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成Stub與Skeletonprompt idl2java Bank.idlidl2javaBank.idlStubSkeleton輸入輸入輸出輸出其它輔助其它輔助文件文件西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成Stub與SkeletonVisiBroker for Java的IDL編譯器idl2java為每個(gè)接口

15、自動(dòng)生成7個(gè)文件: AccountOperations.java Account.java _AccountStub.java AccountPOA.java AccountPOATie.java AccountHelper.java AccountHolder.java 西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的接口定義Account.java和AccountOperations.java定義了IDL接口Account的完整基調(diào)。 AccountOperations.java定義了Account接口中定義的所有常量和方法。package Bank; public interfac

16、e AccountOperations public void deposit(float amount); public boolean withdraw(float amount); public float getBalance();西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的接口定義 Account.java是真正使用接口定義,因?yàn)閂isiBroker規(guī)定所有的接口必須從兩個(gè)預(yù)定義的接口派生而來(類似COM中的IUnknown接口)。package Bank; public interface Account extends com.inprise.vbroker.CORBA

17、.Object, Bank.AccountOperations, org.omg.CORBA.portable.IDLEntity 西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的接口定義package Bank; public interface Account extends com.inprise.vbroker.CORBA.Object,org.omg.CORBA.portable.IDLEntitypublic void deposit(float amount); public boolean withdraw(float amount); public float getB

18、alance(); 用一個(gè)文件來代替AccountOperations.java和Account.java西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的Stub_AccountStub.java是Account對(duì)象在客戶端的樁代碼,它實(shí)現(xiàn)了Account接口。程序員編寫的客戶程序代碼通常不直接調(diào)用這個(gè)類中類中的方法。 VisiBroker for Java生成了另外的輔助類AccountHelper。 該類提供了一個(gè)narrow方法,用于返回一個(gè)Account接口的指針。實(shí)際上該方法實(shí)例化了一個(gè)_AccountStub對(duì)象,所以客戶端通過返回的接口指針實(shí)際調(diào)用了樁對(duì)象的代碼,由樁對(duì)象完

19、成具體的和服務(wù)端的通信。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的Stubpackage Bank; public class _AccountStub extends com.inprise.vbroker.CORBA.portable.ObjectImpl implements Account final public static java.lang.Class _opsClass = Bank.AccountOperations.class; private static java.lang.String _ids = IDL:Bank/Account:1.0; publi

20、c java.lang.String _ids() return _ids; public void deposit(float amount) /與ORB交互,完成真正的deposit方法調(diào)用 public boolean withdraw(float amount) /與ORB交互,完成真正的withdraw方法調(diào)用 public float getBalance() /與ORB交互,完成真正的getBalance方法調(diào)用 _AccountStub.java西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的SkeletonAccountPOA.java是Account對(duì)象的服務(wù)端框架代

21、碼,該類的功能:解包in類型的參數(shù)并將參數(shù)傳遞給對(duì)象實(shí)現(xiàn)。打包返回值與所有out類型的參數(shù)。 打包(marshal):指將特定程序設(shè)計(jì)語言描述的數(shù)據(jù)類型轉(zhuǎn)換為CORBA的IIOP流格式。 解包(unmarshal):從IIOP流格式轉(zhuǎn)換為依賴于具體程序設(shè)計(jì)語言的數(shù)據(jù)結(jié)構(gòu)。 同COM中的編組/解組操作。編寫對(duì)象實(shí)現(xiàn)的最簡(jiǎn)單途徑是繼承這些POA類,即把它們作為對(duì)象實(shí)現(xiàn)的基類。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的Skeletonpackage Bank; public abstract class AccountPOA extends org.omg.PortableServer.

22、Servant implements org.omg.CORBA.portable.InvokeHandler, Bank.AccountOperations public static org.omg.CORBA.portable.OutputStream _invoke( .) org.omg.CORBA.portable.OutputStream _output = null; switch (_method_id) case 0: float amount; amount = _input.read_float(); _self.deposit(amount); _output = _

23、handler.createReply(); return _output; case 1: /. case 2: /. AccountPOA.java西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的紐帶機(jī)制AccountPOATie.java用于采用紐帶機(jī)制實(shí)現(xiàn)服務(wù)端的Account對(duì)象 AccountPOATie是Account接口的委托方的實(shí)現(xiàn)。每一個(gè)AccountPOATie對(duì)象必須關(guān)聯(lián)一個(gè)真正的實(shí)現(xiàn)類。真正的實(shí)現(xiàn)類必須實(shí)現(xiàn)AccountOperations接口,AccountPOATie對(duì)象將每一個(gè)操作委托給初始化它的對(duì)象實(shí)例。 因?yàn)镴ava語言的單重繼承限制,所以引入了紐帶機(jī)

24、制。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的Skeletonpackage Bank; public class AccountPOATie extends AccountPOA private Bank.AccountOperations _delegate; private org.omg.PortableServer.POA _poa; public AccountPOATie(final Bank.AccountOperations _delegate) this._delegate = _delegate; public AccountPOATie(final Bank

25、.AccountOperations _delegate, final org.omg.PortableServer.POA _poa) this._delegate = _delegate; this._poa = _poa; public void deposit(float amount) this._delegate.deposit(amount); public boolean withdraw(float amount) return this._delegate.withdraw(amount); public float getBalance() return this._de

26、legate.getBalance(); AccountPOATie.java西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的輔助工具類 IDL編譯器為每一個(gè)用戶自定義類型還生成一個(gè)輔助工具類。AccountHelper.java聲明了AccountHelper類,該類為Account接口定義了許多實(shí)用功能和支持功能的靜態(tài)方法(又稱類方法)。 從Any對(duì)象提取或向Any對(duì)象插入對(duì)象(extract和insert方法); 從輸入輸出流讀寫對(duì)象(read和write方法); 獲取對(duì)象的庫標(biāo)識(shí)和類型碼(id和type方法); 綁定對(duì)象與類型轉(zhuǎn)換操作(bind和和narrow方法方法)等等。編程

27、時(shí)回用到該類中提供的方法。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的輔助工具類package Bank; public final class AccountHelper public static Bank.Account narrow(final org.omg.CORBA.Object obj) /. public static Bank.Account bind(org.omg.CORBA.ORB orb, java.lang.String name) /. /. AccountHelper.java西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的對(duì)象傳遞支撐類Acc

28、ountHolder.java聲明的AccountHolder類為傳遞對(duì)象提供支持。 IDL有三種參數(shù)傳遞方式:in、out和inout。 in類型的參數(shù)以及返回結(jié)果與Java的參數(shù)傳遞方式與結(jié)果返回方式完全相同。 out和inout兩種類型的參數(shù)允許參數(shù)具有返回結(jié)果的能力,無法直接映射到Java語言的參數(shù)傳遞機(jī)制,這時(shí)AccountHolder類為傳遞out和inout參數(shù)提供了一個(gè)托架(holder)。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院生成的對(duì)象傳遞支撐類package Bank; public final class AccountHolder implements org

29、.omg.CORBA.portable.Streamable public Bank.Account value; public AccountHolder() public AccountHolder(final Bank.Account _vis_value) this.value = _vis_value; public void _read(final org.omg.CORBA.portable.InputStream input) value = Bank.AccountHelper.read(input); public void _write(final org.omg.COR

30、BA.portable.OutputStream output) Bank.AccountHelper.write(output, value); public org.omg.CORBA.TypeCode _type() return Bank.AccountHelper.type(); AccountHolder.java西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院編寫對(duì)象實(shí)現(xiàn)對(duì)象實(shí)現(xiàn)代碼所在的類名字可由程序員自由掌握,只要不與IDL編譯器自動(dòng)產(chǎn)生的Java類產(chǎn)生名字沖突即可??蛻舫绦蛞矡o須了解對(duì)象實(shí)現(xiàn)是由哪一個(gè)Java類完成的。CORBA應(yīng)用程序的對(duì)象實(shí)現(xiàn)最常用、最簡(jiǎn)單的實(shí)現(xiàn)方式是使用繼承,即直接繼承由IDL編譯器生成的xxxPOA類。 當(dāng)對(duì)象實(shí)現(xiàn)需要利用繼承機(jī)制達(dá)到其他目的時(shí),就必須改用CORBA對(duì)象實(shí)現(xiàn)的另一種實(shí)現(xiàn)方式 紐帶機(jī)制(tie mechanism)。我們的例子程序采用簡(jiǎn)單的繼承方式編寫對(duì)象實(shí)現(xiàn)。西安電子科技大學(xué)軟件學(xué)院西安電子科技大學(xué)軟件學(xué)院賬戶的對(duì)象實(shí)現(xiàn)public class AccountImpl extends Bank.AccountPOA / 屬性定義 prote

溫馨提示

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