共用方式為


共用交易物件

要集區的交易式元件有特殊需求。

手動登記資源

參與交易的可集區對象必須手動登記受控資源。 如果物件在客戶端之間保存 Managed 資源,當物件在指定內容中啟動時,資源管理員將無法自動登記在交易中。

物件本身必須處理偵測交易的邏輯、關閉資源管理員的自動登記,以及手動登記其保存的任何資源。 執行此動作的步驟專屬於您使用的資源管理員。 如果您需要手動登記,請參閱資源管理員的檔。

如下所述,當交易為使用中時,物件可以與交易親和性集區,如果與該交易相關聯的用戶端呼叫,則可以使用交易親和性來啟動。 在登記資源之前,您應該先檢查交易親和性。 如果物件已從該交易專屬的集區中取得,它已經在該交易中完成工作,並登記其資源。

關閉自動登記

在取得資源之後,應該關閉自動登記,通常是在物件的建構函式中。 也就是說,您會停用自動登記,然後連線。

停用自動登記有時可能是一個微妙的程式,特別是在分層數據存取提供者的情況下。 自動登記有時會與連接共享結合,如同 ODBC,有時與 OLE DB 一樣。 您可能需要確保自動登記在數個層級的提供者關閉。

實作 IObjectControl

參與交易的可集區對象必須監視其持有的資源目前狀態。 如果對象偵測到它處於無法重複使用的狀態,例如,如果連線不正確,它應該會針對 IObjectControl::CanBePooled 傳回 False。 這會產生捨棄物件實例和註定要目前交易的效果。

交易特定集區

物件的集區通常是同質的,而且目前未使用的任何集區對象都適合傳回任何用戶端。 此規則的唯一例外狀況是在交易對象的情況下,對象共用已優化。 當要求物件的用戶端具有相關聯的交易時,COM+ 會掃描集區中已與該交易相關聯的可用物件。 如果找到具有交易親和性的物件,則會傳回給用戶端;否則,會傳回來自一般集區的物件。

如此一來,會維護特殊子集區,其中包含具有特定交易親和性的物件。 當交易認可或中止時,這些物件會傳回沒有交易親和性的一般集區,可供任何用戶端使用。

基於這個理由,當您的元件在交易中手動登記其受控資源時,應該先檢查它們是否已登記。 如果是,就不需要登記。

COM+ 物件建構函式字串

控制物件存留期和狀態

對象共用的運作方式

使用物件共用改善效能

可集區物件的需求