但傳統(tǒng)的Corba有它的缺點(diǎn):
No standard way to deploy object implementations:
沒有標(biāo)準(zhǔn)的配置對(duì)象應(yīng)用的方式。如:沒有標(biāo)準(zhǔn)的方式分布對(duì)象應(yīng)用,在它們的執(zhí)行上下文安裝,或在特定的ORB激活應(yīng)用。因此,系統(tǒng)設(shè)計(jì)者必須用ad hoc策略去實(shí)例化在系統(tǒng)中的對(duì)象。進(jìn)一步說,因?yàn)閷?duì)象可能要互相依靠,實(shí)例化可能在一個(gè)大型的系統(tǒng)變得復(fù)雜。
??Lack of support for common PRogramming idioms for CORBA servers:
Corba 的說明提供了豐富的應(yīng)用服務(wù)的特性。在某些的應(yīng)用域,僅僅有限的特性被應(yīng)用。結(jié)果,通過能自動(dòng)產(chǎn)生應(yīng)用普通應(yīng)用實(shí)例Corba代碼的工具能支持必須的特性,是期望的。如:在Corba 2.2說明中,介紹了POA,它是一個(gè)引導(dǎo)客戶端的請(qǐng)求到具體的對(duì)象應(yīng)用的機(jī)制。POA提供了標(biāo)準(zhǔn)的API去登記對(duì)象應(yīng)用,去活,或激活對(duì)象應(yīng)用。POA是靈活的Corba編程模型模塊,并且提供了大量的規(guī)則配置它的行為。然而,重要一類應(yīng)用僅僅用其中的一部分,但是服務(wù)開發(fā)者不得不去學(xué)習(xí)如何配置許多的規(guī)則,為了得到想要的行為。
??Difficulty extending object functionalities:
傳統(tǒng)的Corba對(duì)象模型,對(duì)象僅能通過繼續(xù)來擴(kuò)展它的應(yīng)用。為了支持新的新的界面,應(yīng)用開發(fā)者必須:1 定義新的,從要求的界面繼續(xù),的IDL界面; 2 應(yīng)用新的界面;3 分配應(yīng)用到服務(wù)器端。然而,多重繼續(xù)在Corba Idl 是易碎的,因?yàn)橹剌d在IDL是不可以的,因?yàn)橄馛的語(yǔ)言缺乏重載。
因此,以上的介紹限制了應(yīng)用。進(jìn)一步說,應(yīng)用可以需要暴露相同的IDL界面多次,為了答應(yīng)開發(fā)者多個(gè)應(yīng)用或多個(gè)服務(wù)的實(shí)例,通過一個(gè)入口點(diǎn)。相反,多重繼續(xù)使暴露相同的界面多次或決定哪一個(gè)是提供給客戶端最原始界面,提供成為不可能。
??Availability of CORBA Object Services is not defined a priori:
Corba說明沒用要求在運(yùn)行時(shí),哪一個(gè)對(duì)象服務(wù)是提供的。結(jié)果,對(duì)象開發(fā)者必須用 ad hoc 策略去配置和激活這些服務(wù)。
??No standard object lifecycle management:
雖然Corba對(duì)象服務(wù)定義了生命周期服務(wù),但它并不是要求的。因此,客戶端要明顯內(nèi)容去治理對(duì)象的生命周期,以 ad hoc 方式。進(jìn)一步說,通過生命周期服務(wù)控制的Corba對(duì)象的開發(fā)者必須明白這個(gè)事實(shí),和必須定義附加的界面去控制對(duì)象生命周期。定義這些的界面使單調(diào)的過程,應(yīng)該自動(dòng)進(jìn)行,但較早的Corba說明缺乏。
CORBA說明的不足,早先的和包括在VERSION 2.3的,以上列出的,經(jīng)常導(dǎo)致緊密的結(jié)合度,和難于設(shè)計(jì),重用的,展開的,維護(hù)的和擴(kuò)展的 ad-hoc 對(duì)象應(yīng)用。
為了彌補(bǔ)以上的不足,OMG接受了CORBA Component Model(CCM)作為CORBA 3的一部分。CCM擴(kuò)展了傳統(tǒng)的CORBA對(duì)象模型,通過定義答應(yīng)應(yīng)用開發(fā)者去應(yīng)用,治理,配置,和展開集成了Corba服務(wù)的模塊的特性和服務(wù),如容忍度,安全事務(wù)和事件服務(wù),在一個(gè)標(biāo)準(zhǔn)的環(huán)境。CCM標(biāo)準(zhǔn)不僅提高了服務(wù)器軟件重用性,也為動(dòng)態(tài)的Corba應(yīng)用配置提供了巨大的靈活性。 隨著Corba的應(yīng)用增加,CCM表現(xiàn)了出適合可升級(jí)的,應(yīng)用要求嚴(yán)格的client/server應(yīng)用。這章,我們描述CCM定義的主要的特性和服務(wù),并圖示CCM結(jié)構(gòu)的好處。

模塊開發(fā)者定義模塊應(yīng)用支持的IDL界面;下一步,利用CCM提供的工具應(yīng)用模塊。結(jié)果的模塊應(yīng)用被打包進(jìn)動(dòng)態(tài)連接苦。最后,CCM提供的分配機(jī)制用于分配模塊,在模塊服務(wù)器上(component server)。模塊服務(wù)器是通過處理過程主管應(yīng)用,通過相關(guān)的DLL。因此,在模塊服務(wù)器上,模塊執(zhí)行和提供,去處理客戶端的請(qǐng)求。一個(gè)好處是,CCM標(biāo)準(zhǔn)了開發(fā)的流程,下面,我們?cè)贑CM中的描述模塊,從客戶端的觀點(diǎn)和模塊開發(fā)者的觀點(diǎn),而且,我們描述了為支持CCM,ORB的擴(kuò)展。
Client View
下面,我們介紹從CLIENT的視點(diǎn)來看模塊是什么和如何應(yīng)用模塊。

一個(gè)模塊 Foo 實(shí)例的參考曾現(xiàn)給client端,像一個(gè)有規(guī)則的Corba對(duì)象指引到界面Foo的實(shí)例。因此,對(duì)模塊不清楚的Client端能調(diào)用操作,通過一個(gè)到模塊對(duì)象等價(jià)界面的對(duì)象指引,能唯一鑒別這個(gè)模塊實(shí)體。通過有規(guī)則的Corba對(duì)象,抹開的等價(jià)界面能從另外的界面繼續(xù),稱作模塊的支持界面。如我們開始提到的,用繼續(xù)是難以擴(kuò)展Corba對(duì)象的。因?yàn)閷?duì)象不能和多個(gè)界面相連,用一個(gè)單一的應(yīng)用實(shí)體。為了解決這個(gè)問題,CCM增加facets到模塊中,F(xiàn)acets,也是提供的界面,是模塊提供的界面,通過繼續(xù)不必要連接到模塊的支持界面。CCM多面體在設(shè)計(jì)上和Extension Interface 模式一致,類似于COM(Microsoft's Component Object Model)中的模塊界面。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注