共用方式為


控制物件存留期和狀態

集區物件可以透過實作 IObjectControl來參與 COM+ 管理其在集區內活動的方式。 建立集區物件時,它會匯總成較大的物件,並在物件生命週期的特定時間點上呼叫下列方法,透過 IObjectControl 來管理物件:

  • Activate— 每當物件被傳回至用戶端時,會在特定情境中被啟動。
  • 停用—每當客戶端釋放物件時,或在 JIT 啟動的物件被停用的情況下,會呼叫。
  • CanBePooled— 每當需要將物件傳回一般集區時進行呼叫。

實作 IObjectControl 是選擇性的,但交易物件除外,這些對象應該一律實作 CanBePooled,以監視其保留的資源狀態。 不過,建議您在大部分情況下實作 IObjectControl,因為它提供有效率的方式來管理集區對象的行為,如下所述。

執行 Context-Specific 初始化

使用 Activate,您可以在指定用戶端啟動的上下文中初始化該物件。 例如,若要判斷物件是否有交易親和性(其資源可能已經登記),您可能會取得與內容相關聯的交易標識符。

通常您將使用 Activate來執行在對象公開的任何方法中一致的初始化,並將它視為物件建構函式的上下文特定部分。

清除任何客戶端狀態

使用 Deactivate,您可以清除任何可能存在的用戶端特定狀態,讓您的物件以完全一般狀態返回集區,然後可供任何用戶端使用,而不會影響安全性或隔離。

控制物件的重複使用

使用 CanBePooled,您可以監視物件的內部狀態,並報告其是否適合重複使用。 如果 CanBePooled 傳回 True,且尚未達到集區上限,則會將物件放回一般集區。 如果 的 CanBePooled 傳回 False,則該物件會被捨棄。 在交易元件的情況下,返回 False 將會導致目前的交易無法完成。

一般而言,您會保留物件的一些全域數據成員,而且如果您偵測到連線不正確或某種資源處於不良狀態,請將此設定為反映目前的情況,並透過 CanBePooled傳回它。

如果物件未實作 CanBePooled,實例將繼續重複使用,直到達到集區最高層級為止。

COM+ 物件建構函式字串

對象共享的運作方式

使用物件共用改善效能

池化交易物件

可集區化物件需求