評估準(zhǔn)則
我們已經(jīng)地討論了CORBA對象的生命周期,包括生命周期事件,對早期和后期綁定的討論,以及CORBA對象實現(xiàn)的一般分類。顯然,用戶希望ORB提供的應(yīng)用程序能支持所有這些CORBA對象生命周期不同方面的有效實現(xiàn)。ORB通過對象適配器(OA)來提供這種支持。下面定義了一系列的評估準(zhǔn)則,通過這些準(zhǔn)則可對對象適配器進行涉及CORBA對象生命周期有效支持的分析。然后用戶采納這些不同的評估準(zhǔn)則,并把它們應(yīng)用到BOA和POA代的對象適配器中。
·適配器結(jié)構(gòu)-- 最為重要的方面是適配器的一般結(jié)構(gòu)。
·對象標(biāo)識-- CORBA系統(tǒng)中的對象標(biāo)識不是小問題,必須仔細檢驗特定的ORB代如何為CORBA對象支持對象標(biāo)識的概念。
·早期綁定-- 用戶需要檢驗不同ORB代支持早期綁定的方式。這里值得注重的是綁定和伺服對象創(chuàng)建相互間有多大程度的關(guān)聯(lián)。
·后期綁定-- 不同ORB為后期綁定提供的機制必須要檢驗,非凡是關(guān)于用來支持持久對象的應(yīng)用程序的有用性。
·無狀態(tài)伺服對象-- 用戶想要檢驗ORB代為實現(xiàn)無狀態(tài)伺服對象而提供的支持。思路是對于無狀態(tài)伺服對象,用戶并不真正需要每個CORBA對象代表一個伺服對象實例-- 一個單獨的伺服對象可以作為多個CORBA對象的瞬態(tài)膠囊,并在每個請求的基礎(chǔ)上設(shè)定一個非凡CORBA對象的標(biāo)識。
·有狀態(tài)伺服對象-- 正如前面討論過的,對于有狀態(tài)伺服對象,確保用戶不必為每個請求重新激活這些伺服對象,并且激活伺服對象未超過某一閾值,這通常是很重要的。
評估BOA代
下面想在上述定義的每個與對象生命周期相關(guān)的評估準(zhǔn)則下探討基本對象適配器,說明對可移植對象適配器完成的工作。
1. BOA 體系結(jié)構(gòu)
前面提過,BOA體系結(jié)構(gòu)在很多方面是極其模糊的。應(yīng)用程序要求用來有效治理對象生命周期的很多特征都不夠具體。BOA定義了一些激活CORBA服務(wù)器和CORBA對象實現(xiàn)的函數(shù)。不幸的是,BOA側(cè)重于服務(wù)器激活,而不是像后期綁定和動態(tài)對象激活這些重要的問題。BOA還為對象引用的生成和解釋定義了一些函數(shù)。BOA隱含了伺服對象和CORBA對象間的一對一關(guān)系,即對于特定服務(wù)器支持的每個CORBA對象要求有一專用的伺服對象實例。
因為BOA規(guī)范過于模糊,所以本文使用IONA Technologies Orbix 2.x ORB作為參考實現(xiàn)。同樣,我們的目的不是要給出不同BOA代ORB的全面比較,而是使用ORB作為例子來討論一般的概念。
2. 對象標(biāo)識
BOA代的ORB把對象引用和創(chuàng)建時的引用數(shù)據(jù)相關(guān)聯(lián)。引用數(shù)據(jù)是8位位組序列,并由ORB控制。這就使在遵循CORBA的方式中提供給用程序定義的對象I D變得困難。Orbix ORB提供了_marker() API來為CORBA對象指明應(yīng)用程序定義的引用數(shù)據(jù)。marker是一字符串,由應(yīng)用程序提供,并作為引用數(shù)據(jù)的一部分由ORB存儲。
3. 早期綁定
如前所述,大多數(shù)BOA代ORB在客戶端樁類層次和服務(wù)器端框架類層次之間提供了緊密的耦合。這樣做的結(jié)果是伺服對象的創(chuàng)建通常會間接導(dǎo)致對象的激活,因為伺服對象繼續(xù)了構(gòu)造方法,這個構(gòu)造方法能間接在伺服對象和ORB運行時模塊之間創(chuàng)建綁定。這就暗示,假如用戶想把對象引用返回給客戶機,也就要創(chuàng)建和激活伺服對象實例,即使用早期綁定。
4. 后期綁定
BOA結(jié)構(gòu)并沒有定義ORB和應(yīng)用程序之間如何交互以支持后期綁定,或是通過命令進行對象激活。因此,本文把Orbix ORB作為BOA ORB如何論述這個問題的例子。
Orbix ORB使用圖3所示的裝載器機制來支持后期綁定。如前所述,裝載器扮演伺服對象治理器的角色。基本思想是應(yīng)用程序把裝載器實例注冊到ORB運行時模塊。ORB運行時模塊在對象故障的情況下依次激活裝載器上的load( )方法。這就給了裝載器一個機會來激活請求對象,這樣ORB就可以分派它。

新聞熱點
疑難解答