共用方式為


物件共用

COM+ 物件共用服務能讓您免除從頭開始建立每一個物件的負擔。當物件啟動後,會從集區將它取出。當物件停用後,它會被放回集區,等待下一次的要求。

您可以將 ObjectPoolingAttribute 屬性套用到衍生自 System.EnterpriseServices.ServicedComponent 類別的類別,以設定物件共用功能。

套用 ObjectPoolingAttribute 和設定其屬性的程序,在 HOW TO:建立共用物件及設定其大小和逾時限制中有詳細描述。

物件共用能讓您控制使用的連接數目;和連接共用相反,後者能讓您控制連接數目的上限。以下是物件共用與連接共用重要的差異:

  • 建立。使用連接共用時,建立是發生在同一個執行緒上,因此如果集區中沒有東西,連接便會以您的身份建立。使用物件共用時,集區可以建立新的物件。然而,如果您已經到達連接數目上限,它會改為給您下一個可用的物件。當花費很長的時間建立物件,但使用物件的時間不長時,這是一個重要的行為。

  • 最大值與最小值的強制。連接共用並沒有此種做法。在擴充應用程式規模時,物件共用的最大值是相當重要的。您可能需要利用幾個物件,來多工處理數千個要求。(TPC/C 基準測試即以此為標準)。

COM+ 物件共用基本上與 .NET Framework Managed SQL Client 連接共用是相同的。例如,建立是發生於不同的執行緒,而且會強制執行最小值與最大值。

Note注意:

應用程式定義域會影響物件共用的行為。在 Windows 2000 中,當應用程式啟動設為「程式庫」,且您具有多個應用程式定義域時,共用物件就會全部建立於預設應用程式定義域中,並在多個用戶端之間共用。在相同情況下,使用 Windows XP 與 Windows Server 2003 時,每個應用程式定義域都會有一個物件集區。使用上述任一種作業系統搭配多重應用程式定義域,且您的應用程式啟動設為「伺服器」時,跨處理序用戶端都會使用預設應用程式定義域中的物件集區。

Note注意:

一般而言,您在使用 Serviced 元件時,不需要從用戶端呼叫 DisposeObject。然而,在未啟用 Just-in-Time (JIT) Activation 服務的情況下使用 COM+ Object Pooling 服務時,就需要它。此時,為驗證將物件傳回集區是否安全,您必須在處理完物件之後通知 COM+。一般而言,如果您對共用物件一次只想產生一個呼叫,建議您啟用具有物件共用的 JIT Activation。如果您想取得參考並對其產生多重呼叫,使用物件共用但不加上 JIT 啟動的成效可能會比較好。

請參閱

工作

HOW TO:建立共用物件及設定其大小和逾時限制

參考

ObjectPoolingAttribute
System.EnterpriseServices Namespace

概念

可用 COM+ 服務摘要

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.