• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    OMG IDL語法規則及ORB

    發布: 2008-1-31 11:47 | 作者: 蘇洋 | 來源: 不詳 | 查看: 32次 | 進入軟件測試論壇討論

    領測軟件測試網 9. 接口的繼承
      與C++和Java中類的繼承類似,OMG IDL中關于接口的繼承分為兩種類型:
      ● 單繼承: 一個接口繼承另一個接口的屬性及方法特征;
      ● 多繼承: 一個接口繼承兩個或兩個以上接口的屬性及方法特征。
      用繼承關系編寫接口定義時,如果在接口定義之前該接口的父接口沒有定義,則需要在定義接口之前先聲明父接口,即所謂的前置聲明(Forward Declaration)。下面舉例說明接口繼承。
      在前一講中,曾定義了人力資源管理接口JobManager,由于實際需要,還要根據該接口定義資源服務接口,而該接口應繼承管理接口的特征。因此,以管理接口為父對象定義新的接口JobServer:
      interface JobServer : JobManager
      { void MailToManager( in long ManagerId, out string status); }
      JobServer : JobManager表明接口JobServer繼承JobManager的對象特征。
      上例中僅說明了單繼承類型,多繼承需要用逗號將被繼承的類分開,如:
      interface JobCenter : JobServer,JobManager { }
    10. 異常處理(Exception)
      與C++和Java的語法規則類似,CORBA同樣提供了異常處理機制,稱為“引發異!保≧aising an Exception)。CORBA本身定義了一部分由調用請求或ORB傳遞引發的異常,稱為系統異常(有關CORBA系統異常請查閱相關資料)。因此,在OMG IDL中定義的異常通常稱為“自定義異!。
      OMG IDL中用Exception關鍵字定義用戶異常,在定義的方法后面加上raise關鍵字來聲明,如果符合異常的觸發條件,則引發定義類型的異常。如下例所示:
      enum ErrorStatus {Fatal,Important,Slight,NoMeaning};
      Exception ReasonOfMail
      { ErrorStatus status; }
      interface JobManager
      { string QueryJobStatus( in long Number, out string property)
      raises (ReasonOfMail);}
    11.定義方法傳遞的上下文
      在前面幾講中,曾提到過上下文,上下文在接口定義的方法中是如何傳遞的呢?上下文對象中包括一個稱為特征名-特征值的名值對,在方法中使用context關鍵字定義。ORB在每次客戶機發出調用請求時,在對象實現中匹配特征值。如下例所示:
      string QueryJobStatus( in long Number, out string property)
      raise(ReasonOfMail) context(“who”);
      按照以上定義,執行QueryJobStatus方法時,ORB在服務對象實現端的上下文序列中匹配特征名為“who”的特征值。
    ORB互操作體系結構
      ORB的互操作性(InterOperability)體現在分布于網絡中的多個對象借助Internet ORB間協議(IIOP)和通用ORB間協議(GIOP),達到不同廠商ORB之間操作的一致性。
      具體來說,ORB互操作是指對于兩個獨立開發的ORB,一個ORB中的客戶端應用可以調用在另外一個ORB中利用OMG IDL定義的服務對象實現的方法。實現互操作的基本條件有:
      ● 多廠商ORB之間不需要預先知道對方的實現細節;
      ● 每個ORB必須實現其規范中定義的全部內容;
      ● 保留每個ORB獨立服務的實現。
      ORB間互操作能力的實現,極大地豐富了分布式程序設計思想的內涵,使得構建基于整個互聯網的分布式應用成為可能。
      通過在CORBA中引入內聯橋接(In-line Bridging)和請求級橋接(Request-level Bridging), 使ORB在不需要了解對方ORB實現細節的情況下,就可以實現ORB間的互操作。
      上面兩種ORB間的橋接方式只是說明了ORB間相互發送請求時的虛擬連接方式。為了實現ORB間的通信,在CORBA規范中定義了兩種用于在不同廠商ORB間進行通信的協議,即通用ORB間互操作協議(General Inter_ORB Protocol ,GIOP)和環境相關的ORB間互操作協議(Environment-Specific Inter-ORB Protocol,ESIOP)。這兩種協議屏蔽了操作系統類型、實現語言以及具體廠商等因素。只要ORB支持該協議,就能夠在不同的ORB之間實現通信。
    1.通用ORB間互操作協議(GIOP)
      CORBA中定義的一種面向連接的互操作協議為通用ORB間互操作協議(General Inter_ORB Protocol ,GIOP)。在CORBA規范中,該協議只是一個框架,給用戶在具體實現過程中留下了充足的空間。GIOP規范包括如下內容:
      ● 公共數據表示(Common Data Representation,CDR)的定義:該數據定義用于將OMG IDL數據類型映射為ORB之間的橋接(Bridge)可以理解的二進制數據類型。
      ● GIOP消息:在CORBA規范中定義了用于實現ORB之間通信的七種類型的消息,它們分別是: 請求(Request)、響應(Reply)、請求取消(RequestCancel)、請求定位(LocateRequest)、響應定位(LocateReply)、連接關閉(CloseConnection)和消息錯誤(MessageError)。
      通過定義這些消息,使得除了能夠在不同的ORB間支持CORBA規范中定義的全部功能外,還能夠支持對象實現的定位、對象的動態激活和通信資源的動態管理。
      ● GIOP消息傳遞: GIOP消息傳遞用于規范在網絡中傳遞應用數據和GIOP消息的方式。GIOP消息傳遞具有如下特點:面向連接,保持字節流的傳輸順序,確?煽總鬏,傳輸內容的長度無關,達到TCP/IP協議規范的初始化性能等。
    GIOP互操作協議規范了在網絡中實現ORB互操作的方式。GIOP協議還有相對于具體的網絡協議類型的鏡像,最典型的就是GIOP在TCP/IP協議中的實現: 基于Internet的ORB間協議(Internet Inter-ORB Protocol,IIOP)。IIOP規范繼承了GIOP規范的全部內容,并且增加了如下要素:
      ● 打開TCP/IP連接的方式;
      ● 利用連接實現GIOP消息傳遞的方式。
      可以這樣理解IIOP協議:在遵守GIOP中關于公共數據表示和消息格式定義的前提下,以TCP/IP協議為實現藍本,具體化GIOP消息的傳遞方式。
    2.環境相關的ORB互操作協議
      CORBA規范中定義的另外一種ORB間的互操作協議是環境相關的ORB間互操作協議(Environment-Specific Inter-ORB Protocol,ESIOP),該協議規范了在具體的應用環境中實現ORB間互操作的方式。由于該協議與分布式應用環境有著密切的關系,使得該協議在不同的實現和應用方式方面具有較大的變化,因此稱基于ESIOP的特定環境協議為環境相關的ORB互操作協議族。
      ESIOP協議中最具代表性的、同時也是在CORBA規范中明確說明了的是分布式計算環境中公共ORB互操作協議(Distributed Computing Environment Common Inter-ORB Protocol,DCE-CIOP)。在該協議中,數據的表示方式與前面講述GIOP協議完全相同,但是在消息的定義以及傳遞方式中,采用的是遠程方法調用(Remote Procedure Call,RPC)中的Locate和Invoke方法實現消息以參數形式傳遞,進而實現ORB間的互操作。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: IDL OMG


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>