複製鏈接
請複製以下鏈接發送給好友

對象請求代理

鎖定
對象請求代理(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
類    型
網絡通信
相關名詞
中 間 件
應用學科
通信

對象請求代理定義

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

對象請求代理中間件概述

中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不同的技術之間共享資源。
中間件位於客户機/ 服務器的操作系統之上,管理計算資源和網絡通訊。是連接兩個獨立應用程序或獨立系統的軟件。相連接的系統,即使它們具有不同的接口,但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞。通過中間件,應用程序可以工作於多平台或 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的應用),可以更充分地利用系統的硬件資源。