共用方式為


物件共用技術範例

更新:2007 年 11 月

這個範例會示範在 .NET Framework 環境中,Just-in-time (JIT) Activation 與物件共用的用法。每一個伺服器應用程式都有一個代表一個記錄檔案的共用物件。數個用戶端應用程式會產生共用物件類別,然後再加以呼叫,便能夠顯示在啟用 JIT Activation 且將物件集區大小設為最大的情況下,所有用戶端呼叫都透過單一物件執行個體來 傳遞的。如此一來,會產生記錄 COM+ 活動和多重用戶端呼叫的單一記錄檔。

如需使用這些範例的詳細資訊,請參閱下列主題:

若要使用命令提示字元建置範例

  1. 開啟 [命令提示字元] 視窗,然後巡覽至 Technologies\ComponentServices\ObjectPooling 目錄下任一程式設計語言的子目錄。

  2. 根據您選擇的程式設計語言,在命令列中輸入 msbuild ObjectPoolingCS.sln 或 msbuild ObjectPoolingVB.sln。

若要使用 Visual Studio 建置範例

  1. 開啟 [Windows 檔案總管],然後巡覽至 ObjectPooling 目錄下任一程式設計語言的子目錄。

  2. 根據您選擇的程式設計語言,按兩下 ObjectPoolingCS.sln 或 ObjectPoolingVB.sln 的圖示,在 Visual Studio 中開啟該檔案。

  3. 在 [建置] 功能表上,按一下 [建置方案]。OPDemoSvr.dll 和 OPDemo.exe 組件便會建置於預設的 \bin 或 \bin\Debug 目錄中。

若要在 GAC 中註冊及安裝組件

  1. 巡覽至已建置之組件的所在目錄。

  2. 在命令列中輸入 regsvcs OPDemoSvr.dll,註冊該組件。

  3. 在命令列中輸入 gacutil –i OPDemoSvr.dll,在 GAC 中安裝該組件。

若要執行範例

  1. 開啟 [命令提示字元] 視窗或 [Windows 檔案總管],然後巡覽至新建之可執行檔的所在目錄。

  2. 在 [所有程式] 功能表的 [系統管理工具] 子功能表中,開啟 [元件服務] 管理工具。

  3. 展開 COM+ 總管左方窗格中的 Component Services\Computers\My Computer\COM+ Applications,然後找到 OPDemoSvr COM+ 應用程式。

  4. 展開 OPDemoSvr\Components,找到 Microsoft.Samples.Technologies.ComponentServices.ObjectPooling.PooledLogFile 元件。以滑鼠右鍵按一下 [PooledLogFile] 元件,然後從快顯功能表中選取 [屬性]。按一下 [啟動] 索引標籤,您會發現物件共用的功能現在已經啟用了。

    注意事項:

    此元件設定的最小集區大小為零,最大集區大小為一。這表示無論從用戶端程式碼中執行多少個物件的個體化,同一時間內最多只會有一個共用物件。在此程式碼範例,這些屬性是利用 ObjectPoolingAttribute 進行明確設定。如果範例程式碼沒有明確要求不同的值,就會套用預設的 60 秒建立逾時值。

  5. 請注意 [物件建構] 編輯欄位的內容,這個欄位中包含將由範例共用物件建立之磁碟架構記錄檔的名稱。名稱的預設值為 OPSvrLogCS.txt 或 OPSvrLogVB.txt,您可以變更檔名或新增路徑資訊,例如 C:\OPSvrLogCS.txt。如果您沒有在檔名中加入路徑資訊,那麼檔案便會建立在目前的 System32 目錄中。

  6. 按一下 [確定],關閉 [OPDemoServer 元件屬性] 對話方塊。

  7. 從 [Windows 檔案總管] 或 [命令提示字元] 視窗中啟動三次 OPDemo.exe。例如,在 [命令提示字元] 視窗中,巡覽至 C:\Documents and Settings\Your User Name\My Documents\Samples\Technologies\ComponentServices\ObjectPooling\VB\ObjectPooling\bin 目錄,然後輸入 opdemo.exe 三次。

  8. 從每一個用戶端應用程式,按一下 [Start Writing] 按鈕。用戶端視窗中會出現一個閃爍的星號,表示正在將項目寫入到 OPDemoServer 元件物件建構字串中所指定的記錄檔內。

  9. 所有用戶端應用程式都開始寫入之後,請稍候幾秒鐘。然後,按一下每一個用戶端應用程式中的 [Stop Writing] 按鈕。

  10. 找出記錄檔,並在 Notepad.exe 應用程式或其他文字編輯器中開啟該記錄檔。此時,您應該會看到一串表示 COM+ 呼叫 IObjectControl 的陳述式。您可以在這些呼叫的中間看到每個用戶端應用程式 (利用處理序 ID 識別) 寫入的訊息,這便示範了 COM+ 如何針對每一個具現化的物件,協調這三個物件參考之間的所有呼叫。如需 IObjectControl 介面的詳細資訊,請參閱範例程式碼中的註解和 Platform SDK。

    注意事項:

    若要重新命名或刪除記錄檔,必須結束用戶端應用程式的所有執行個體,並且關閉 [元件服務] 管理工具的 OPDemoSvr 應用程式。以滑鼠右鍵按一下總管左方窗格中的 COM+ 應用程式,再從快顯功能表中選取 [關閉],即可完成。

需求

**平台:**Windows 2000、Windows XP、Windows Server 2003

**.NET Framework 版本:**2.0、1.1、1.0

備註

這個範例會使用物件建構字串指定記錄檔的名稱或完整路徑名稱。Just-in-time (JIT) Activation 是一種 COM+ 服務,能夠讓用戶端在不需要實際物件執行個體的情況下,不定時間地建立及儲存某個物件參考。COM+ 會在消費者透過物件參考呼叫時,即時啟動物件。這項啟動過程可能包含建立新的物件執行個體,或是在搭配 COM+ 物件使用時,傳遞共用物件的參考至呼叫端。COM+ 會依據物件内容的完成程度位元來停用物件。如果是使用 .NET 服務的元件,可以將 AutoCompleteAttribute 套用到類別方法,表示物件離開此方法時即可停用。

在「元件服務」管理工具中看到的 C# 元件名稱為 OPDemoServerCS.PooledLogFile,在 Visual Basic 中則為 OPDemoServerVB.PooledLogFile。如需範例二進位碼之建立和註冊步驟的詳細資訊,請參閱原始程式碼檔案中的註解。

注意事項:

在執行範例之前,您必須先使用全域組件快取工具 (Gacutil.exe) 將 OPDemoSvr.dll 組件安裝到全域組件快取內。Gacutil.exe 位於 SDK\<version number>\Bin 目錄中。

COM+ 物件共用這種服務可以維護作用中物件的集區,讓需要設定元件為共用的用戶端使用。這個集區可以利用系統管理或使用 ObjectPoolingAttribute 進行設定。集區屬性包括集區大小的上限和下限,以及物件建立要求逾時值。

啟用 JIT Activation 和物件共用的元件可以利用實作 IObjectControl 介面的方式,控制如何重複使用這些功能。IObjectControl 方法只能由 COM+ 呼叫,以指出物件啟動/停用處理序的重要事件,或是判斷物件是否能傳回物件集區。這個範例實作 IObjectControl 的用意只是要示範 COM+ 所使用的介面。如需 JIT Activation 和物件共用的詳細資訊,請參閱 Platform SDK 文件。

請參閱

參考

CanBePooled

全域組件快取工具 (Gacutil.exe)

ObjectPoolingAttribute

JustInTimeActivationAttribute

ServicedComponent

System.EnterpriseServices

其他資源

Just-in-Time 啟動

物件建構

寫入服務元件