天天看點

CORBA 介紹

         最近一直在做關于通訊的項目,用到了 中間件 Corba,先前 手頭也有些資料 ,進行了整理 ,和大家 交流交流 。好東西 ,大家 一起學習 。總共 包含兩部分 ,其中corba介紹是理論上的東東 ,corba實踐中提供了 簡單的例子 。負責人的告訴你 ,本人運作過那裡的程式 ,沒有問題的。又疑問的話,找俺。

      CORBA(Common Object Request 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實作。

       CORBA的IDL隻是IDL的一個例子。

       在提供使用者語言和平台中性的遠端程式呼叫規範的同時,CORBA也定義了通常需要的服務,例如事務和安全。

       CORBA(通用對象請求代理體系結構)是在當今快速發展的軟體與硬體資源的情況下發展出的一種新技術。它可以讓分布的應用程式完成通信,無論這種應用程式是什麼廠商生産的,隻要符合CORBA标準就可以互相通信。CORBA 1.1于1991年由OMG提出,同時還提出了接口定義語言Interface Definition Language,IDL)以及能夠讓客戶/伺服器對象在特定的ORB(對象請求代理)實作中進行通信。而1994年提出并被采納的CORBA 2.0标準才真正實作了不同生産廠商間的互操作性。

       ORB是一個在對象間建立客戶/伺服器聯系的中件。使用ORB,客戶可以調用伺服器的對象或對象中的應用,被調用的對象不要求在同一台機器上。由ORB負責進行通信,同時ORB也負責尋找适于完成這一工作的對象,并在伺服器對象完成後傳回結果。客戶對象完全可以不關心伺服器對象的位置,實作它所采用的具體技術和工作的硬體平台,甚至不必關心伺服器對象的與服務無關的接口資訊,這就大大簡化了客戶程式的工作。既然能夠這麼友善,那ORB就需要提供在不同機器間應用程式間的通信,資料轉換,并提供多對象系統的無縫連接配接。

       我們通常編制客戶/伺服器程式時,常常需要自己定義通信協定,而協定的制定往往與硬體和實作的方法有關,而ORB能夠簡化這一過程。在ORB下,協定通過IDL語言進行定義,保證了一緻性,為了照顧到靈活性,ORB允許程式員選擇相應的作業系統,執行環境和程式設計語言。更重要的是它可以使原來的代碼通過一定的方式重用。CORBA是面向對象标準的第一步,有了這個标準,軟體的實作與工作環境對使用者和開發者不再重要,可以把精力更多地放在本地系統的實作與優化上。

       下面我們來看看CORBA的一些具體情況。CORBA被設計用來對不同對象系統進行內建,提供靈活的的對象調用與功能實作。下圖是客戶對象通過ORB調用伺服器對象。

       對象請求代理結構的大體工作過程就象上面的工作過程一樣。客戶将需要完成的工作交給ORB,由ORB決定由哪一個對象執行個體完成這個請求,然後激活這個對象,将完成請求所需要的參數傳送給這個激活的對象。除了客戶傳送參數的接口外,客戶不需要了解其它任何資訊,這就大大節省了使用者的開發精力。而下圖着重說明ORB的接口結構。

       這個圖中的一些資訊希望大家能夠注意一下,在程式設計的時候不一定能夠全部用上,但是它們還是很重要的。在提出請求時,客戶可以使用動态調用接口或者OMG IDL句柄。當然使用者也可以直接調用一些ORB内部的功能。對象實作通過OMG IDL産生的架構或通過動态架構接收到調用請求,在處理這些請求時,對象實作可以調用對象擴充卡和ORB。

       對象的接口有兩種定義方式,可以使用接口定義語言(稱為OMG接口定義語言,OMG IDL)進行靜态定義,這種語言根據進行的操作和傳送的參數定義對象。另一種方法,可以将接口加入接口庫服務中,這種服務代表作為對象的接口的元件,允許在運作時對這些成為元件的接口進行通路,這兩種方法是等效的。下圖表示的是客戶使用句柄或動态調用接口進行通路的情況。

       客戶知道對象的類型和希望進行的操作(一般客戶都知道這個,如果連需要進行什麼操作都不知道,那就可笑了)客戶可以通過通路一個對象的對象參考提出請求。客戶可以通過調用句柄函數初始化調用,也可以動态提出請求。動态發出的請求和通過句柄接口發出的靜态請求兩者在格式是一樣的,請求的接收者不可能知道這種請求是動态發出的還是靜态發出的。下圖是一個對象實作接收請求的示意圖。

       ORB定位合适的可以實作這個功能的代碼,通過IDL架構或動态架構傳向對象實作傳送參數,并将控制權交給對象實作。架構是指定于接和對象擴充卡的,在實作請求的過程中,對象實作可以通過對象擴充卡擷取一些ORB服務。在完成請求時,将控制權和輸出資料傳回給客戶。不要被圖給迷惑了,對象實作可以根據自己的需要選擇需要的對象擴充卡使用。下圖是接口和實作庫的結構示意圖。

       上圖顯示了接口和實作住處如何對客戶和對象實作是可用的,接口可以在OMG IDL或在接口庫中實作,這種對接口的定義用于産生客戶句柄和對象實作架構。對象實作資訊在安裝時提供,儲存于實作庫中,在傳送請求時可以使用這個資訊庫中的内容。

       對象請求代理這個結構在上圖中并不需要作為元件單獨實作,它由接口定義。任何提供正确接口的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對對象參考進行通路。

       OMG接口定義語言(OMG IDL)通過對象的接口定義了對象的類型。一個接口由一些命名的操作和與這些操作相關的參數組成。請注意,雖然IDL提供概念架構用于描述對象,但不需要有IDL源代碼供ORB工作。隻要相同的資訊以句柄函數或運作接口庫的形式提供,特定的ORB就可以正常工作。IDL是一種方法,它使對象實作能夠告訴潛在的客戶,什麼樣的操作可以執行。從IDL的定義上可以将CORBA對象映射為特定的程式設計語言或對象系統。

       不同的面向對象語言和非面向對象語言可以以不同的方式通路CORBA對象。對于面向對象語言而言,它希望看到的是對象的形式,即使對非面向對象語言來說,它所希望看到的也不包括具體的内部實作。将OMG IDL映射為程式設計語言的方法對于所有的ORB實作應該是一緻的。這些映射可能包括資料類型的映射和調用ORB的過程(或函數)接口的映射。語言映射還定義了對象調用和客戶(或實作)中的控制線程之間的互相作用。最普通的映射提供了同步調用,結果可以在過程完成時傳回。其它的映射可以用來初始化調用并将控制權傳回給程式,在這些情況下,附加的函數必須相應的同步功能。

       為了映射非面向對象語言,将有一個對每個接口類型的程式接口。通常,句柄将提供通路OMG IDL定義的操作的機制。句柄調用對于ORB核心是私有的那部分ORB。如果有多于一個ORB,将會有對應于不同ORB的接口。在這種情況下,需要ORB和語言映射互相協調以通路正确的對象參考句柄。面向對象語言不需要句柄接口。接口允許對象動态調用,使用者可以不必調用一個特定對象上的操作,他可以指定調用特定的對象。客戶程式提供關于操作和參數類型的資訊就可以了。

       允許動态處理對象調用的接口是非常有用的,不是由與特殊操作相關的架構來通路對象實作,而是由一個提供通路操作名和參數的界面用一種類似于動态調用接口的方式來通路對象實作。動态架構界面可以由客戶句柄或動态調用接口來調用,它們向動态架構接口發出對象請求。動态架構接口的基本思想是讓所有的對象請求通過調用同一組例程來達到調用對象實作中方法的目的,這組例程便叫做動态調用例程DIR。

       對象擴充卡是對象實作通路ORB提供的服務的主要方式由ORB提供的服務在一個對象擴充卡中經常包括:對象引用的産生和解釋、方式調用、互動性安全、對象和實作的激活與釋放、對象引用到實作的映射及實作的定位由于各個不同對象的對象粒度、生命周期等等。ORB核心無法為所有的對象提供一個統一、友善有效的界面。通過對象擴充卡的作用,可以将目的對象分成若幹組,每組通過特定的對象擴充卡來滿足其特定的需要,但這樣一來,對象擴充卡的種類便會急劇膨脹,為了減少對象擴充卡的種類,CORBA給出了基本對象擴充卡(BOA),以滿足大多數對象的需要,BOA提供了産生和解釋對象引用、對請求進行認證、激活/去活實作 、激活/去活單個對象、通過架構調用方法等功能. 在提供這些功能時 ,BOA要用到一些與作業系統有關的知識 ,這些知識由實作倉庫提供,實作倉庫還存放對象實作的有關資訊。

       ORB接口一種直接對應于ORB的接口,它對于所有的對象接口,對象擴充卡都是一樣的。大部的操作都由對象擴充卡,句柄,架構或動态調用實作,對于所有對象都需要的操作很少。接口庫是一種服務,其中儲存着接口資訊,這些資訊在ORB執行請求時會用得上。而且,當一個應用程式在調用一個未知接口的對象時,可以通過接口庫了解能夠在其上進行的操作。除了,它可以充當ORB功能外,實作庫通常還儲存與ORB對象實作相關的資訊。實作庫包括了一些資訊,這些資訊讓ORB可以定位并激活對象的實作。實作庫中的資訊是特定于ORB或實作環境的,通常,實作的安裝和控制政策是通過實作庫實作的。除了,它可以充當ORB功能外,實作庫通常還儲存與ORB對象實作相關的資訊。

一、CORBA的來源

●CORBA體系結構是對象管理組織(OMG)為解決分布式處理環境(DCE)中,硬體和軟體系統的互連而提出的一種解決方案;

●OMG是一個世界性的非赢利論壇組織,成立于1989年,最初有3Com、AmericanAirlines、Cannon Inc、DataGeneral、HP、Philips Telecommunication N.M、SUN、Unisys八個成員,目前已超過700個成員,其目标是開發一種技術上先進和商業上可用,獨立于廠商的軟體工業規範;

●1991年OMG提出了CORBA1.1,定義了IDL接口定義語言,開發出對象請求代理ORB中間件,在客戶機/伺服器結構中,ORB通過一定的應用程式接口(API),實作對象之間的互動;

●1994年12月OMG完成了CORBA2.0,提出了IIOP(Internet Inter Object Protocol),用以規範不同廠家的ORB之間的真正互通,同時增加了互操作性和對C++及SmallTalk的比對,OMG期望通過上述規範,建立一種“連接配接世界的體系結構”;

●CORBA 在面向對象的标準化和互操作上邁出了堅實的一步。使用CORBA,使用者能在不知道軟體和硬體平台以及網絡位置的情況下透明的擷取資訊;

●CORBA自動進行許多網絡規劃任務如對象注冊、定位、激活;多路徑請求;分幀和錯誤處理機制;并行處理以及執行操作;

●作為面向對象系統中的通信核心, CORBA為當代的計算環境中帶來了真正意義上的互聯;

二、CORBA的含義及特點

●CORBA定義了一種面向對象的軟體構件構造方法,使不同的應用可以共享由此構造出來的軟體構件;

●每個對象都将其内部操作細節封裝起來,同時又向外界提供了精确定義的接口,進而降低了應用系統的複雜性,也降低了軟體開發費用;

●CORBA的平台無關性實作了對象的跨平台引用,開發人員可以在更大的範圍内選擇最實用的對象加入到自己的應用系統之中;

●CORBA的語言無關性使開發人員可以在更大的範圍内互相利用别人的程式設計技能和成果, 是實作軟體複用的實用化工具;

三、CORBA的一般用途

●存取來自現行桌面應用程式的分布資訊和資源;

●使現有業務資料和系統成為可供利用的網絡資源;

●為某一特定業務用的定制的功能和能力來增強現行桌面工具和應用程式;

●改變和發展基于網絡的系統以反映新的拓撲結構或新資源;

四、CORBA的技術背景

●面向對象技術的興起;

●客戶/伺服器模式的普遍應用;

●內建已有系統及通信和實作細節的需求;

●現有分布處理機制和方法存在着不足之處;

五、基于分布式對象計算的CORBA

●在CORBA環境中,應用程式的內建是基于面向對象模型的;

●CORBA通過分布式對象計算,即分布式計算和面向對象計算的結合,以實作軟體重用,這是開發下一代軟體的基礎;

●分布式對象計算的組成

分布式計算和對象模型的結合:CORBA是這兩者的完美結合,這兩部分不僅帶來了自身的優點,而且完善了對方的優點;

代理器的使用:CORBA使用代理器來處理系統中客戶機與伺服器之間的消息;

●什麼是分布式計算

分布式計算是兩個或多個軟體互相共享資訊;

大部分分布式計算是基于客戶/伺服器模型的;

分布式計算可以擁有稀有資源共享、平衡機器負載等優點,使計算機資源的使用更為有效;

CORBA采用一定的手段增強分布式計算:

●CORBA采用增強分布式計算的手段

允許客戶機與器間靈活變化的關系;

加入一個稱為代理的中介;

允許伺服器有多個程序;

支援同步及異步兩種通信形式;

●對象模型是對象計算中的概念,是考慮問題及其可能解決方案的概念性架構; 對象模型的基礎是對象概念之上的,對象提供了把行為和屬性結合成一單獨實體的手段;

●使用對象模型具有以下優點:定義一個基于現實世界的系統模型

 把系統邏輯地分成能完成特定任務的對象

 當需求改變時擴充子產品

● 在CORBA中分布式計算和對象模型的結合實作了互相促進,CORBA在分布式計算和對象模型環境中加入了下列内容:

●分布式計算方面的增強:對分布式計算環境,CORBA在環境中加入了特定對象的引用。在CORBA中,要完成某個操作,所需要做的僅僅是請求某個有能力完成該操作的對象去完成它,客戶機不需要知道更多的資訊;

對象模型方面的增強:對于對象模型,CORBA加入了代理器的概念。代理器使應用程式不需要知道對象在網絡上哪個地方和對方是如何工作的就可以進行互動,隻有代理器需要知道CORBA伺服器和客戶機在網絡上的位置;

六、CORBA――通信中間件

●中間件是處于應用程式及應用程式所在系統的内部工作方式之間的軟體;

●中間件把應用程式與系統所依附軟體的較低層細節和複雜性隔離開來,使應用程式開發者隻處理某種類型的單個API――其他細節則可以由中間件處理;

●CORBA可以被稱為通信中間件,它可以看成是把應用程式和通信核心的細節分離的軟體;

七、CORBA規範的技術特點

●引入了代理的概念;

●所實作的客戶方程式與伺服器方程式的完全分離;

●将分布計算同面向對象的概念互相結合;

●提供了軟體總線的機制;

●分層的設計原則與實作方法;

八、CORBA産品一覽

●IONA公司的Orbix ;

●Inprise公司的VisoBroler ;

●Digital公司的Component Broker ;

●IBM公司的Component Broker ;

●Sun Microsystems 公司的NEO、JOE;

●SunSoft公司的DOE ;

●東南大學開發研制的ORBUS;

九、CORBA服務的基本内容

  在CORBA體系規範中定義了多種類型的服務(Service),如命名(Naming)、生存期(LifeCycle)、事件(Event)、事務(Transaction)、對象持久化(Persistent Objects)、查詢(Query)、特征(Property)、時間(Time)等服務功能。

  在CORBA規範中,沒有明确說明不同廠商的中間件産品要實作所有的服務功能,并且允許廠商開發自己的服務類型。是以, 不同廠商的ORB産品對CORBA服務的支援能力不同,使我們在針對待開發系統的功能進行中間件産品選擇時,有更多的選擇餘地。

下面介紹與分布式應用程式設計和開發關系密切的CORBA服務内容:

1. 對象命名服務(Naming Service)

  在命名服務中,通過将服務對象賦予一個在目前網絡空間中的惟一辨別來确定服務對象的實作。在用戶端,通過指定服務對象的名字,利用綁定(Bind)方式,實作對服務對象實作的查找和定位,進而可以調用服務對象實作中的方法。

2. 對象安全性(Security)服務

  在分布式系統中,服務對象的安全性和用戶端應用的安全性一直是一個比較敏感的問題,安全性要求影響着分布式應用計算的每個方面。對于分布在網際網路中的分布式應用來講,為了防止惡意使用者或未經授權的方法調用對象的服務功能,CORBA提供了嚴格的安全政策,并制定了相應的對象安全服務。安全服務可以實作如下功能:

  ● 服務請求對象的識别與認證;

  ● 授權和通路控制;

  ● 安全監聽;

  ● 通信安全的保證;

  ● 安全資訊的管理;

  ● 行為确認。

  CORBA系統将對象請求的安全性管理的功能交由ORB負責,系統元件隻需負責系統本身的安全管理,使得基于分布式應用在安全性控制方面的責任十分明确。

3. 并發控制(Cocurrency Control)服務

  CORBA規範中定義并發控制服務的目的在于實作多客戶通路情況下的并發性控制和對共享資源的管理。

  并發控制服務由多個接口構成,能夠支援通路方法的事務模型和非事務模型。由于兩種模型的引入,使得非事務型客戶在通路共享資源時,如果該資源被擁有事務模型的方法鎖定(Lock),則該客戶轉入阻塞狀态,直到事務型方法執行結束,将共享資源鎖打開,非事務模型的客戶才能夠通路該共享資源。

  并發控制服務使多個對象能夠利用資源鎖定(Lock)的方式來對共享資源進行通路。在通路共享資源之前,客戶對象必須從并發控制服務中獲得鎖定。在确認資源目前正在空閑時,獲得資源的使用權。每個鎖定是一個資源-客戶對,說明哪個客戶正在通路何種類型的資源。

4. 對象生命期服務(LifeCycle)

  CORBA中的生命期服務定義和描述了建立、删除、拷貝和移動對象的方法。通過生命期服務,用戶端應用可以實作對遠端對象的控制。

利用命名(Naming)服務

實作分布式應用

  在上篇文章中介紹的利用JavaIDL開發分布式應用時曾采用命名服務的方式。對象命名服務是ORB查找服務對象實作的一種簡單的方式。

1. 功能需求分析和定義接口檔案

  本例的主要功能是模拟電話使用者注冊及電話号碼查詢業務,開發基于命名服務的分布式應用程式,中間件産品采用VisiBroker 4.5.1 for Java。

  根據系統功能的定義,兩種業務均屬于電信業務的經營範圍,是以定義子產品名TeleCom。電話号碼注冊為電信業務管理功能範圍,需定義該功能接口Registry,該接口内包含使用者注冊方法register();電話号碼查詢為使用者服務功能範圍,需定義接口User,該接口内包含查詢個人電話号碼方法getNumber()。經過上述分析後編寫的IDL接口定義檔案TeleCom.idl如下:

  module TeleCom

  { interface User //接口User聲明

  { //接口中getNumber方法的定義

  int getNumber();

  };

  interface Registry //接口Registry聲明

  { //接口中register方法定義,其中以string類型變量作為輸入參數 ’方法傳回User對象

  User register(in string name);

  };

  };

  上述接口定義檔案經idl2java編譯後,在目前接口檔案目錄中生成TeleCom子目錄,該目錄中包括UserPOA.java、RegistryPOA.java等檔案。這些檔案是用戶端和服務對象實作功能的架構以及相關的支援檔案。有興趣的讀者可以實際建立IDL檔案,經IDL到Java語言的映射後,分析生成檔案的格式。

2. 實作服務功能

(1)實作User接口的類UserImpl

  根據系統分析确定的功能,定義接口User對應的實作類UserImpl的代碼如下:

  // UserImpl類繼承定義在UserPOA.java中的UserPOA類

  public class UserImpl extends TeleCom

  .UserPOA

  { private int aNumber;

  //

十、CORBA系統在CIMS中的應用

       在CIMS環境下,應用通常是分布的,應用之間需要交換資訊和資料,例如CAD和CAM之間,CAD、CAM和MRP II之間,甚至是不同的CAD應用之間都會發生資料的互動。分布式應用的開發,尤其是面向對象的分布式應用的開發,對于系統開發者而言是極具挑戰性的。CORBA、C OM/OLE Automation和JavaBeans是目前針對此類應用的主要分布對象計算模型和支援系統。一般來說,如果所開發的應用隻面向Windows平台(Windows 3.x/95/NT),那麼使用COM 是最佳的選擇;如果所開發的應用完全是使用Java語言編制的,那麼就應該采用JavaBeans 的方案。但是,如果所開發的應用需要內建異構的平台,那麼無疑應該選擇CORBA。通過C ORBA系統的支援,分布應用的開發者可以采用不同的語言、作業系統和硬體平台來開發面向對象的分布式應用。當然,首要的條件是存在支援該種平台、作業系統和語言的CORBA系統。

       利用CORBA系統進行分布對象應用的開發具有下面三個特點:①開發代價小、效率高。系統開發者隻需要編寫描述服務對象接口的IDL語言檔案并安裝描述檔案,實作服務對象的功能即完成了全部的任務。其它的相關代碼或者是由IDL編譯器自動建立,或者是由ORB 類庫提供,應用程式員并不需要編寫例如網絡通信、資料編碼/解碼、名址映射和安全管理的程式代碼,進而可以把工作重點放到服務對象實作的過程中去。②通過CORBA系統的支援,一個服務對象可以透明地被分布在本地和網絡上的客戶所調用,擴大了服務對象的使用範圍,為分布的客戶所共享。③CORBA系統作為“軟體總線”,可以為服務對象提供“ 即插即用”的功能,而且當對象實作改進或更新時,隻要接口保持不變,客戶代碼無需作任何改動。

       在CIMS的應用環境之下,CORBA系統的另一個十分重要的作用是內建已有的應用系統,這樣的應用系統通常稱為“遺留系統”(Legacy System)。“面向CIMS的并行工程內建架構關鍵技術”課題就是一個很好的例子。各個領域架構的應用系統,例如,機械領域的Pro Engi neer、電子領域的Mentor Graphics等等,需要通過CORBA系統內建到一起實作資訊的互動和共享。內建的關鍵在于對遺留系統的封裝和包裹(wrap),經過包裹,遺留系統就能夠以OMG IDL的形式提供給使用者,進而和新開發的面向對象的分布式應用同樣處理。包裹的形式視不同的遺留系統而不同,對于能夠提供使用者調用接口的遺留系統,隻要利用原有的調用來構造新的界面(必要時需要進行一定的擴充)即可;而對于比較封閉的遺留系統,內建的難度就大得多了,通常是利用檔案作為中介來內建。不過,目前CAD、CAM和MRP II 的系統廠商在發展過程中也在逐漸使自身的應用系統更加開放,向使用者提供更靈活的控制手段,完全封閉的系統已經十分少見了,進而使內建工作也變得相對簡單。