對象請求代理

對象請求代理(ORB,Object Request Broker)是對象之間建立客戶端/服務端(Client/Server)關係的中間件。使用ORB,客戶可以透明地調用一個服務對象上的方法,這個服務對象可以在本地,也可以在通過網路連線的其他機器上。ORB截獲這一調用,同時負責查找實現服務的對象並向其傳遞參數、調用方法並返回最終結果。客戶並不知道服務對象位於什麼地方、它的程式語言和作業系統是什麼,也不知道不屬於對象接口的其他系統部分。這樣,ORB在異構分布環境下為不同機器上的套用提供了互操作性,並無縫地集成了多種對象系統。

對象請求代理(Object Request Broker)是用戶提供與其他分散式網路環境中對象通信的接口,是中間件(Middleware)中主要的一類,它在CORBA(Common Object Request Broker Architecture)規範中處於核心地位,定義異構環境下對象透明地傳送請求和接收回響的基本機制,是建立對象之間client/server關係的中間件。它的作用在於提供一個通信框架,透明地在異構的分布計算環境中傳遞對象請求。CORBA規範包括了ORB的所有標準接口。對象請求代理這個結構不需要作為組件單獨實現,它由接口定義。任何提供正確接口的ORB實現都是可被接受的。

基本介紹

  • 中文名:對象請求代理
  • 外文名:Object Request Broker
  • 類型:網路通信
  • 相關名詞:中 間 件
  • 套用學科:通信
定義,中間件概述,功能,作用,請求代理體系結構,概述,ORB的結構,公共對象請求代理體系結構(CORBA),CORBA在軟體無線電系統中的作用,

定義

對象請求處理是在對象間建立客戶/伺服器聯繫的一種中間件

中間件概述

中間件是一種獨立的系統軟體或服務程式,分散式套用軟體藉助這種軟體在不同的技術之間共享資源。
中間件位於客戶機/ 伺服器的作業系統之上,管理計算資源和網路通訊。是連線兩個獨立應用程式或獨立系統的軟體。相連線的系統,即使它們具有不同的接口,但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞。通過中間件,應用程式可以工作於多平台或 OS 環境,能滿足大量套用的需要運行於多種硬體和OS平台支持分布計算,提供跨網路、硬體和OS平台的透明性的套用或服務的互動支持標準的協定支持標準的接口。

功能

對象請求代理(ORB)是對象匯流排,它在CORBA規範中處於核心地位,定義異構環境下對象透明地傳送請求和接收回響的基本機制,是建立對象之間client/server關係的中間件。ORB使得對象可以透明地向其他對象發出請求或接受其他對象的回響,這些對象可以位於本地也可以位於遠程機器。ORB攔截請求調用,並負責找到可以實現請求的對象、傳送參數、調用相應的方法、返回結果等。client對象並不知道同server對象通訊、激活或存儲server對象的機制,也不必知道server對象位於何處、它是用何種語言實現的、使用什麼作業系統或其他不屬於對象接口的系統成分。

作用

它的作用在於提供一個通信框架,透明地在異構的分布計算環境中傳遞對象請求。CORBA規範包括了ORB的所有標準接口。1991年推出的CORBA 1.1 定義了接口描述語言OMG IDL和支持Client/Server對象在具體的ORB上進行互操作的API。CORBA 2.0 規範描述的是不同廠商提供的ORB之間的互操作。值得指出的是client和server角色只是用來協調對象之間的相互作用,根據相應的場合,ORB上的對象可以是client,也可以是server,甚至兼有兩者。當對象發出一個請求時,它是處於client角色;當它在接收請求時,它就處於server角色。大部分的對象都是既扮演client角色又扮演server角色。另外由於ORB負責對象請求的傳送和server的管理,client和server之間並不直接連線,因此,與RPC所支持的單純的Client/Server結構相比,ORB可以支持更加複雜的結構。

請求代理體系結構

公共對象請求代理體系結構(Common ObjectRequest Broker Architecture,也稱通用對象請求代理體系結構),是由OMG組織制訂的一種標準的面向對象套用程 序體系規範。或者說 CORBA體系結構是對象管理組織(OMG)為解決分散式處理環境(DCE)中,硬體和軟體系統的互連而提出的一種解決方案;OMG組織是一個國際性的非盈利組織,其職責是為套用開發提供一個公共框架,制訂工業指南和對象管理規範,加快對象技術的發展。
OMG組織成立後不久就制訂了OMA(Object Management Architecture,對象管理體系結構)參考模型,該模型描述了OMG規範所遵循的概念化的基礎結構。OMA由對象請求代理ORB、對象服務、公共設施、域接口和套用接口這幾個部分組成,其核心部分是對象請求代理ORB(Object Request Broker)。對象服務是為使用和實現對象而提供的基本服務集合;公共設施是向終端用戶應用程式提供的一組共享服務接口;域接口是為套用領域服務而提供的接口;套用接口是由開發商提供的產品,用於它們的接口,不屬於OMG標準的內容。ORB提供了一種機制,通過這種機制,對象可以透明的發出請求和接收回響。分布的、可以互操作的對象可以利用ORB構造可以互操作的套用。
CORBA標準由物件管理組織(OMG)設立並進行控制,CORBA定議了一系列API,通信協定,和物件/服務信息模型用於使得異質應用程式能夠互相操作,這些應用程式用不同的程式語言編寫,運行在不同的平台上。CORBA因此為定義明確的物件提供了平台和位置的透明性,這些物件是分散式計算平台的基礎。
通常來說,CORBA把用其他語言開發的程式碼和關於該程式碼能力和如何調用該程式碼的資訊包到一個套裝(package)中,包成套裝的物件則可以在網路上被其他程式(或CORBA物件)調用。 在這個意義上來講,CORBA可以被看作是一個機器可讀的檔案檔格式,類似於標頭檔(header),但是具有相當多的資訊。
CORBA使用一種接口定義語言用於刻畫物件將呈現出來的接口。CORBA又規定了從IDL到特定程式語言,如C++或Java,實現的映射。這個映射精確的描述了CORBA資料類型是如何被用戶端和伺服器端實現的。標準映射的有Ada、C、C++、Smalltalk、Java、以及Python。 還有一些非標準的映射,為Perl和Tcl的映射由這些語言寫的ORB實現。
對象請求代理這個結構不需要作為組件單獨實現,它由接口定義。任何提供正確接口的ORB實現都是可被接受的。接口可分為以下幾大類:
1.對於所有ORB實現均相同的接口;
2. 指定於特定對象類型的操作;
3. 指定於對象實現的特定形式的操作;
不同的ORB可以採用不同的實現策略,加上IDL編譯器,庫和不同的對象適配器,這一切提供了一系列對客戶的服務和對具有不同屬性對象的實現。可以存在多個ORB實現,它們有不同的名稱和不同的實現方法與調用方法,對於客戶而言,客戶可以同時訪問由不同ORB實現管理的對象,當幾個ORB共同工作時,它們必須能夠區別它們各自的對象名(也就是對象參考),客戶不管區別只管使用。ORB核心是ORB的一部分,它提供了對象的基本命名和請求通信機制。CORBA設計得可以支持不同的對象機制,它是通過在ORB核心上建立ORB來完成這一點的。
一個對象的客戶可以訪問此對象參考,並對對象進行操作。客戶不清楚對象的內部結構,它只知道對象的接口和執行操作所需要的時間和空間等資源。雖然我們可以把客戶想像為一個調用對象的進程,但是我們也不要忘記了對象也可以調用另外對象的服務。客戶看到的ORB接口和人觀念中的接口有差不多,這就為編程提供了幫助。客戶不需要對代碼進行改變就可以通過ORB實現功能,對象適配器只能由ORB或對象實現調用。
對象實現提供了對象的表現形式。通常實現由另一對象提供或由相應的軟體提供,當然也可以自己編程實現。在某些情況下,對象的主要功能是非對象實體產生作用。在CORBA中可以支持對象的不同實現。通常,對象實現不依賴於ORB或客戶請求,對象實現可以通過選擇對象適配器選擇和ORB相關服務來選擇接口。
對象參考是需要在ORB內指定的信息,客戶和對象實現相應於語言映射有對象參考的一個透明定義,這樣就把實現的表示與參考隔離開了。兩個ORB實現可能在選擇對象參考表示時是不同的。所有的ORB必須提供相對於對象參考一致的語言映射,這使得程式能夠獨立於ORB對對象參考進行訪問。

概述

在開發傳統的Client/Server套用時,開發者使用他們自己設計的或一個公認的標準來定義用於設備之間通信的協定。協定的定義依賴於實現語言、網路傳輸和許多其他因素,而ORB的出現簡化了這一過程。使用ORB時,協定是使用接口定義語言(IDL,InterfaceDefinitionLanguage)定義的,而IDL是獨立於語言的。並且ORB提供很強的靈活性,它使程式設計師選擇最適合的作業系統、執行環境,甚至系統各個組件也可以採用不同的程式語言實現。更重要的是,它允許現有組件的集成。在一個基於ORB的解決方案中,開發者可以使用與創建新對象一樣的IDL,並對遺留系統進行建模,他們創建“包裝”代碼以在標準化的軟體匯流排與遺留系統接口之間傳遞信息。

ORB的結構

圖1所示為一個客戶端向對象實現(ObjectImplementation)傳送一個請求。客戶端是操作對象的一個實體,對象實體是實現對象的代碼和數據。ORB負責根據一個請求來定位一個對象,安排對象實現準備接受請求,與請求的數據通信。客戶端的接口與對象的位置、實現對象的語言及其他不在對象接口反映出來的方面完全無關。
客戶端使用動態調用接口(DynamicInvocationInterface)或接口存根(OMGIDLStub)來發出請求。由於某種原因,客戶端也可以直接與ORB聯繫。對象實現使用對接口進行接口語言映射生成的框架檔案(Skeleton)或動態框架Skeleton的方式接受請求。對象實現也可以調用對象適配器(ObjectAdapter)和ORB。
可以用兩種方法來定義對象接口。第一種方法是用對象描述語言(OMGInterfaceDefinitionLanguage)來定義接口。該語言根據可能對對象進行的操作和這些操作使用的參數來定義對象類型。第二種方法是把接口放入接口庫服務(InterfaceRepositoryService)中;該服務把接口中的元素描述成一個對象。任何能實現ORB的軟體中,接口描述語言(可能根據文檔的內容而改變)和接口庫具有相同的作用。一個客戶端要使用對象引用(ObjectReference)來完成請求,它必須知道對象的類型及具體的操作。
對象請求代理
圖1 通過ORB傳遞請求
使用樁(Stub)和動態調用接口發出的請求具有相同的語義,信息的接收者不能分辨出該請求是使用哪種方法來傳遞的。ORB確定適當的實現代碼、傳遞參數,通過接口框架或動態框架把控制傳給對象實現,如圖2所示。每一個接口和對象適配器使用不同的框架檔案。為了完成請求,對象實現可能通過對象適配器使用來自ORB的服務。當完成請求後,控制和輸出結果返回給客戶端。
對象請求代理
圖2客戶端訪問對象實現的過程

公共對象請求代理體系結構(CORBA)

為了解決分散式計算環境(DCE,DistributedComputingEnvironment)中不同硬體設備和軟體系統的互聯、增強網路間軟體的互操作性、解決傳統分散式計算模式中的不足等問題,對象管理組織(OMG)提出了公共對象請求代理體系結構(CORBA),以增強軟體系統間的互操作能力,使構造靈活的分散式套用系統成為可能。
CORBA規範使得面向對象的軟體在分布、異構環境下實現可重用、可移植和互操作。主要包括以下幾個方面的特點。
(1)CORBA採用面向對象的軟體開發方法,對套用對象實現內部細節的完整封裝,保留對象方法的對外接口定義。CORBA使用OMGIDL定義接口,並可以映射到各種程式語言,包括C、C++、Java、python和SmallTalk等。一個接口對應於一個支持繼承的類,類的方法在接口中只需聲明,不需要說明接口實現方法。以WiMAX為例,OMGIDL的描述如下。所需的接口包括天線控制、加擾、信道編碼、交織、數字調製、OFDM、OFDM解調、數字解調、信道解碼和解擾。
moduleWiMAX
{
interfaceAntennaControl
{
booleansetRxAntenna(inANTENNAant);
booleansetTxAntenna(inANTENNAant);
};
interfacerandomization
{
}
};
(2)CORBA使用中間件作為事務代理,處理分散式套用中客戶端(Client)向服務方的對象訪問請求。中間件在CORBA中就是ORB,相當於CORBA中的軟匯流排,其結構如圖3所示。
對象請求代理
圖3 ORB軟匯流排
客戶與服務對象的完全分開,客戶不需要了解服務對象的實現過程以及具體位置,只需要傳遞參數通過ORB調用服務端程式,並通過ORB獲得服務端返回值。

CORBA在軟體無線電系統中的作用

軟體無線電不僅需要硬體模組化,也需要軟體模組化。由於缺乏標準的套用級的軟體到軟體的套用編程接口(API),缺乏對存儲器、快取空間與處理資源的量化,軟體重用度低,花費大,研製周期長,因而需要把軟體按功能分成模組,各模組功能與接口有清楚的定義。軟體無線電論壇根據API來進行區分各個模組,採用CORBA來構建整個系統。CORBA技術能夠無縫地共享套用數據,它提供了一種軟匯流排。利用接口定義語言(Java語言是一個子集),每一個軟體包被提供一個信息傳輸接口到ORB,對象用CORBA接口來實現插拔。
在軟體無線電中使用CORBA到底有什麼好處呢?這是一個很有意思的話題,事實上,構建一個軟體無線電的體系架構現在有很多種方法,但是這並不意味著對於如何構建軟體無線電的體系架構的研究已經很完善。恰恰相反,所有的這些方法或者理論都沒有給出一個一般意義上的軟體無線電系統的構建方法。比如,現在有的公司已經開發了軟體無線電接收機,但是人們很難或者幾乎不可能把它所構建的系統搬到另一個軟體無線電系統上去(即使最簡單的開發一個與之對應的軟體發射機),因為系統構建更多是基於處理過程的。而CORBA的引入正是力圖解決這個問題,它並不是為了解決某一個具體的問題而提出的,而是一開始就被賦予了構建一般意義上的抽象的軟體無線電系統的使命。而研究認為,CORBA能夠完成這樣的一個使命。首先,CORBA是開放式的、獨立於廠商、用於網路上計算機套用的底層結構。任何廠家、計算機、作業系統、程式語言及網路環境下的基於CORBA的套用均使用IIOP標準協定,所以任何基於CORBA的套用均能協同工作。其次,在小型的Client/Server模式的套用系統中使用CORBA,能給系統提供可靠的、標準的底層結構,可以使用CORBA來構建、運行在不同平台上的、用不同程式語言實現的客戶端及伺服器端的應用程式。此外,由於CORBA的容錯機制的存在,使用CORBA來製作基於對象模型的伺服器端的套用系統時,使每一個對象同時在兩個或多個伺服器上運行,當其中的一個出現故障時,系統能自動切換到另一個伺服器。這樣既能保證伺服器會擁有很高的穩定性,又能實現系統的負載均衡。考慮到當前的負載及以後可能達到的負載情況,可以選擇ORB,它可以在多個伺服器之間實現負載均衡。它是基於OMG可移動對象適配器的,當系統負載較重時(比如運行基於Web的套用),可以更充分地利用系統的硬體資源。

相關詞條

熱門詞條

聯絡我們