国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

CORBA 及Java IDL應用編程

2019-11-18 10:48:09
字體:
來源:轉載
供稿:網友

  善,形成現在被軟件行業普遍認可的標準——CORBA/IIOP 規范2.3。CORBA的開發者OMG最初由3Com、American Airlines、Canon、Data General、Hewlett-Packard、Philips、 Sun 和Unisys等八家公司在1989年組建,專門從事公共軟件平臺的研究和行業標準的制訂, 目前已經有800多個成員單位加入OMG。
    CORBA的核心是開放軟件總線——ORB,它提供了網絡環境無關性、操作系統無關性和開發語言無關性的公共平臺。在面向對象的應用環境中,CORBA對象(本文所說的“對象”是面向對象系統中的術語,是指一個實體)的請求者不必知道它所請求的對象是在哪里,是如何實現的,而是由ORB來負責跨平臺的運作治理,無須應用系統的開發者干預。CORBA所具有的跨平臺、分布式、面向對象的這些優點使它具有廣闊的應用前景,日益受到軟件行業的重視。
    CORBA是一個中間件規范并不是一個實體軟件。軟件開發者通過使用第三方的ORB工具或IDL語言來定義CORBA對象,實現ORB功能。
    
    一、CORBA應用模型
    
    下圖展示了CORBA在分布式面向對象應用中,從客戶端發出請求直到服務端實現CORBA對象的一個流轉過程。
    CORBA對象的客戶有一個對該對象的“對象引用”,客戶使用“對象引用”來請求“對象方法”。假如服務端不在本地(不在同一機器的同一應用系統中或不在同一機器中),則“對象引用”指向stub功能(在java 中,stub和skeleton都是類來實現),stub利用ORB機制將請求帶到服務端的對象。stub通過ORB來確定運行對象的服務端的機器,并請求該機器的ORB連接到對象的服務端去。stub同ORB建立連接后,向該機的skeleton發送“對象引用”及相關參數,再由skeleton功能連接到目標對象的“對象實現”上。skeleton將請求和參數轉換成規定格式然后調用該對象。最后,“對象實現”的結果沿著來的路徑傳送回客戶請求端。
    以上是CORBA實現對象應用的全過程。在這個操作過程中,客戶并不知道CORBA對象的位置、它的實現細節,也不必知道所使用的ORB是什么。在ORB之間通過建立在TCP/IP標準之上的IIOP-Internet InterORB PRotocol進行通信聯系,相互傳送信息??蛻糁皇鞘褂肅ORBA對象的接口來調用對象的方法,CORBA對象的接口則使用IDL語言來定義。對象的接口定義了對象的類型,對象的方法和引用參數以及對象方法可能返回的異常結果。IDL編譯器將把CORBA對象的定義轉換成特定的編程語言。IDL還對每個對象生成相應的stub文件(類)和skeleton文件(類),通過它們實現應用系統同ORB的連接。
    
    二、Java IDL應用編程
    
    Java JDK 1.2提供了對CORBA的支持,Java IDL即idltojava編譯器就是一個ORB,可用來在Java語言中定義、實現和訪問CORBA對象。Java IDL支持的是一個瞬間的CORBA對象,即在對象服務器處理過程中有效。實際上,Java IDL的ORB是一個類庫而已,并不是一個完整的平臺軟件,但它對Java IDL應用系統和其他CORBA應用系統之間提供了很好的底層通信支持,實現了OMG定義的ORB基本功能。
    下面將以“中國,早上好!”客戶/服務應用為例,具體說明Java IDL的實際編程方法。在本例中,客戶端向服務端提出服務請求,服務端回送“中國,早上好!”,然后在客戶端的屏幕上顯示出來。
    1定義并編譯對象接口
    定義IDL接口文件China.idl內容如下:
    module ChinaApp
    {
     interface China
     {
     string MorningChina();
     };
    };
    然后運行Java IDL編譯器來編譯該接口文件:
     idltojava China.idl
    經idltojava 編譯后自動建立了一個文件目錄ChinaApp,并在該目錄下生成五個Java語言文件:
    _ChinaImplBase.java就是服務端的skeleton類,它實現了服務端的China.java接口,為服務端對象提供了CORBA服務功能。
    _ChinaStub.java 是客戶端的stub類,為客戶端提供CORBA服務功能,它實現了客戶端的China.java接口。
    _China.java 是IDL接口的Java語言實現,是方法MorningChina()的實現。
    _ChinaHelper.java類提供了許多輔助功能的方法,主要是narrow()方法它為CORBA對象引用轉化成適合的類型。
    _ChinaHolder.java 提供了有關參數操作的實現,這些參數在CORBA中使用但Java語言中沒有直接的對應。
    下面將要利用這五個編寫實際應用的Java程序。
    2編寫客戶端應用程序
    (1)引入要使用的包:
    import ChinaApp.*; // 本應用的stub類
    import org.omg.CosNaming.*; // 要使用CORBA的名字服務
    import org.omg.CORBA.*; // 使用CORBA服務
    (2)聲明客戶應用類:
    public class ChinaClient {
    // main方法
    }
    (3)定義客戶應用類的main方法:
    public static void main(String args []){
     try {
     // 方法功能碼
     } catch (Exception e) {
     System.out.println("ERROR : " + e);
     e.printStackTrace(System.out);
     }
    } // main()
    以下幾步將編寫try塊中的內容。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东方市| 沁源县| 林芝县| 名山县| 饶阳县| 邹平县| 吉木乃县| 永靖县| 嵊州市| 博罗县| 台中市| 应用必备| 英吉沙县| 通道| 钟祥市| 扎囊县| 县级市| 伽师县| 平昌县| 沁水县| 平度市| 宿松县| 北辰区| 连州市| 兴隆县| 宁安市| 镇雄县| 玉门市| 徐州市| 望江县| 民勤县| 克拉玛依市| 杭锦后旗| 江门市| 涟源市| 潜山县| 垦利县| 漳浦县| 榕江县| 亚东县| 连平县|