共用方式為


佇列元件技術範例

更新:2007 年 11 月

這個範例會示範 .NET 應用程式與 Microsoft Message Queuing (MSMQ) 以及 COM+ 的佇列元件功能之間的互動情形。MSMQ 能讓應用程式在有時會暫時離線的情況下,進行跨網路及系統的通訊。由傳送應用程式所產生的訊息會儲存在佇列中,稍後由接收應用程式加以擷取。MSMQ 上會建置「佇列元件」,以提供非同步啟動及執行伺服器元件的能力。

重要事項:

若要建置及執行這個範例,電腦上必須有安裝為「工作群組」模式的 MSMQ。

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

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

  1. 開啟 [命令提示字元] 視窗,巡覽至 Technologies\ComponentServices\QueuedComponents 目錄下的其中一個語言特定子目錄。

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

若要使用 Visual Studio 建置範例

  1. 開啟 [Windows 檔案總管],巡覽至 Technologies\ComponentServices\QueuedComponents 目錄下的其中一個語言特定子目錄。

  2. 根據您選擇的程式設計語言,按兩下 QueuedComponentsCS.sln 或 QueuedComponentsVB.sln 的圖示,在 Visual Studio 開啟這個檔案。

  3. 在 [建置] 功能表上,按一下 [建置方案]。

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

  1. 巡覽至包含已建置之組件的目錄。

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

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

若要執行範例

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

  2. 在命令列輸入 QCDemo.exe,或在 [Windows 檔案總管] 中按兩下 QCDemo.exe 啟動它。

  3. 按一下 [Send Queued Msg] 按鈕。變更文字編輯欄位中的字串值,然後再按一下 [Send Queued Msg]。這麼做應該會將兩個封裝方法呼叫置於佇列中。

  4. 檢查 QCDemoSvr 佇列中的訊息。以滑鼠右鍵按一下 [我的電腦],然後從快顯功能表中選取 [管理]。展開 [電腦管理] 主控台的 Services and Applications\Message Queueing\Public Queues。在這個節點中,您應該會看到名稱為 qcdemosvr 的佇列。這個佇列名稱會對應到存放佇列元件的 COM+ 應用程式名稱。這個應用程式會在稍後的步驟中檢查。

  5. 展開 qcdemosvr 並選取 [佇列訊息]。此時您會在右方窗格中看到兩個訊息,對應到在用戶端應用程式中所發出的兩個佇列元件方法呼叫。

  6. 啟動「元件服務」管理工具。

  7. 展開 COM+ 總管左方窗格中的 Component Services\Computers\My Computer\COM+ Applications,找出 QCDemoSvr COM+ 應用程式。

  8. 以滑鼠右鍵按一下 [QCDemoSvr] 應用程式,然後從快顯功能表中選取 [啟動]。這麼做會啟動伺服器元件。接聽程式/播放程式會從 qcdemosvr 佇列中接收訊息,然後呼叫至伺服器。結果您會看到兩個訊息方塊,其中包含用戶端應用程式範例的原始呼叫文字字串。

  9. 當您返回 [電腦管理] 主控台時,會發現 qcdemosvr 不再含有佇列的訊息。來自用戶端應用程式的後續呼叫會直接傳遞到伺服器,每按一下按鈕後就會立即出現訊息方塊。

    注意事項:

    在 Windows 2000 中,您必須關閉 QCDemoSvr COM+ 應用程式 (以滑鼠右鍵按一下 COM+ 總管中的應用程式,然後選取 [關閉]),才能返回佇列訊息。在 QCDemoSvr COM+ 應用程式關閉之前,必須先關閉 QCDemo 用戶端可執行檔。

若要解除安裝範例

  1. 巡覽至您執行 msbuild.exe 或啟動 .sln 檔案的目錄。

  2. 根據您選擇的程式設計語言,在命令列輸入 msbuild.exe QueuedComponentsCS.sln /t:Clean 或 msbuild.exe QueuedComponentsVB.sln /t:Clean。這會使用 /u 參數呼叫 .NET 服務安裝工具 (Regsvcs.exe)全域組件快取工具 (Gacutil.exe),從 COM+ 類別目錄和全域組件快取中移除範例檔案。

需求

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

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

備註

如需二進位碼建立和註冊步驟之範例的詳細資訊,請參閱原始程式碼檔案中的註解。

「佇列元件」是一項 COM+ 功能,建構在 Message Queuing Services (MSMQ) 頂層,提供以非同步方式叫用及執行元件的機制。當用戶端呼叫佇列物件時,此呼叫實際上是針對錄製器,錄製器會將呼叫封裝成訊息置於佇列中。接聽程式從佇列讀取訊息,然後傳遞給播放程式。播放程式則實際對伺服器物件執行方法呼叫。您在「元件服務」管理工具所看到的 C# 版本元件名稱為 QCDemoServerCS.QComponent,Visual Basic 版本則為 QCDemoServerVB.QComponent。

注意事項:

您必須先註冊 QCDemoSvr.dll 組件,才能設定「訊息佇列」,以及將組件安裝到全域組件快取 (GAC) 中。.NET 服務安裝工具 (regsvcs.exe) 位於 %system root%\Microsoft.Net\Framework\<runtime version> 目錄,全域組件快取工具 (gacutil.exe) 則位於 SDK\<version>\Bin 目錄中。

伺服器必須啟動,才能接收佇列訊息。伺服器元件可以透過指令碼搭配工作排程器以手動方式啟動,也可以利用程式設計的方式啟動。這個範例使用手動方式啟動伺服器元件。

此範例含有一個用戶端應用程式,以及標示為 InterfaceQueuing 的 Managed 物件。接聽程式是利用類別屬性啟用。建置應用程式時,COM+ 會建立一個和指定之 COM+ 應用程式同名的佇列。

用戶端應用程式含有單一按鈕。按一下按鈕,即可利用佇列 Moniker 叫用佇列元件錄製器。透過傳回的參考所做的所有呼叫,都會在封裝後置於適當的訊息佇列中。

當佇列方法呼叫在「元件服務」管理工具中啟用後,便會解除封裝並傳遞至實際的伺服器元件。範例伺服器會顯示一個簡單的訊息方塊,指出呼叫已到達伺服器。

請參閱

參考

ApplicationQueuingAttribute

Component

InterfaceQueuingAttribute

Queue

System.ComponentModel

System.EnterpriseServices

System.Reflection

System.Runtime.InteropServices

System.Windows.Forms

其他資源

建立元件佇列

使用訊息元件

佇列元件

寫入服務元件