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