共用方式為


COM+ 內容

針對在 COM+ 應用程式內執行的已設定元件, 內容 是提供 COM+ 服務的基礎。 在 COM+ 中,內容會定義為與一或多個 COM 物件相關聯的運行時間屬性集,這些物件用來為這些物件提供服務。

在 COM+中,每一個 COM 物件都會與它執行時確切的一個內容相關聯(也就是在其啟用和停用之間),而且每個內容都位於一個 COM Apartment 內。 多個物件可以在相同的內容中執行,而且多個內容可以位於相同的 Apartment 內。 當對象啟動時初始化,內容屬性,例如安全性內容屬性,代表對象的運行時間需求。

注意

對於不使用 COM+ 服務的未設定元件,大部分情況下會忽略內容。

 

COM+ 會使用內容屬性作為提供運行時間服務的基礎。 這些屬性會保留狀態,決定執行環境如何針對內容中的物件執行服務。 在某些情況下,您可以直接與對象的內容屬性互動,以指出與為物件提供之服務相關的一些狀態。 例如,當參與自動交易的物件對交易結果進行投票時,您會這麼做。

如需這些概念之 COM 基礎的詳細討論,請參閱進程、線程和 Apartment。

以程式設計方式與內容屬性互動

每個內容都有相關聯的 ObjectContext 物件,可追蹤其屬性。 您可以呼叫 GetObjectContext 函式來存取 ObjectContext 存取 ObjectContext 之後,您可以在它公開的 IObjectContext 介面上呼叫方法來操作內容屬性。

例如,呼叫 IObjectContext::SetComplete 的效果是將交易一致性位設定為「一致」,而 JIT 啟用完成位在與對象相關聯的內容上「完成」。 「一致」訊號給 COM+ 表示您投票認可交易,而「完成」表示當方法傳回時,您的物件已準備好停用。

除了 IObjectContext 之外,提供內容屬性存取權的其他特製化介面還有 IObjectContextInfoIContextState IObjectContextActivity 在某些情況下, ISecurityCallContext 也會存取內容屬性。 您可以使用 IGetSecurityCallContext::GetSecurityCallContext 來取得 ISecurityCallContext

瞭解啟用和攔截

一般而言,您只需要考慮內容代表數個屬性的範圍,其中有些屬性是您可以設定或取得的,這些屬性是用來為元件提供 COM+ 服務。 不過,在某些情況下,您可能需要更詳細地考慮下列兩個相互關聯的內容 Facet:

  • 內容啟用,或適當內容中物件的初始化。
  • 攔截,或 COM+ 在跨內容界限的呼叫上執行什麼動作。

與 MTS 內容包裝函式的關聯

內容可有效地取代 MTS 內容包裝函式。 他們服務的目的—藉由截獲建立要求來提供自動服務—現在是 COM+的整合功能。 因此,您不再需要使用 保管庫 Ref 函式。 在 MTS 中,保管庫 Ref 可用來取得對象參考,而該物件可能會在其內容包裝函式外部傳遞。 在 COM+中,這是不必要的;一般對象參考 ( 指標) 工作。