共用方式為


Readme_ShoppingCart

更新: 2005 年 12 月 5 日

「購物車」範例使用交談群組識別碼維護簡單購物車應用程式的狀態。該應用程式使用 ServiceBrokerInterface 範例。

依預設,「購物車」範例應用程式會安裝在 C:\Program Files\Microsoft SQL Server\100\Samples\Engine\\ServiceBroker\ShoppingCart。如果範例資料夾不存在,請參閱<安裝範例>。

範例只供教育目的之用。它們不能用於實際執行環境,而且尚未在實際執行環境中測試過。Microsoft 不提供對這些範例的技術支援。若沒有系統管理員的權限,就不應該在生產 SQL Server 資料庫或報表伺服器上,連接或使用範例應用程式及組件。

建立並安裝範例

  1. 在 Visual Studio 2005 中,開啟 ShoppingCartCS.sln

  2. [F6] 或從 [建立] 功能表中選取 [建立方案] 來建立方案。

  3. 開啟命令提示字元,找到 Scripts 資料夾並執行下列命令:

    install all
    

    安裝指令碼會安裝應用程式的 SQL Server 物件。這包括實作 ShoppingCartService 服務的 Common Language Runtime (CLR) 預存程序。

執行範例

  1. 從範例目錄執行 ShoppingCartClient.exe 應用程式。為了簡化,用戶端每次執行時都只處理一個訂單。

  2. 按一下 [建立訂單] 以建立訂單。從 [項目] 清單中選取項目,然後按一下 [加入項目] 按紐,這樣便可將項目加入至購物車。

  3. 您可以隨時按一下 [Service Broker 追蹤] 索引標籤來查看已傳送和已接收之 Service Broker 訊息的摘要。

  4. ssb_ShoppingCart 資料庫中的 ShoppingListStateTable 資料表維護應用程式的狀態。CLR 預存程序會依據用戶端的訊息來更新資料表。您可以使用 Management Studio 或 sqlcmd 檢查這些資料表。

解除安裝範例

  1. 開啟命令提示字元,找到 Scripts 資料夾並執行下列命令:

    uninstall all
    
  2. 解除安裝指令碼會移除應用程式的 SQL Server 物件。

需求

此範例需要 Visual Studio 2005。因為此範例使用舊版所沒有的 CLR 功能,所以 Visual Studio 2005 之前的版本無法建立此範例。

示範

Service Broker 應用程式最常將狀態儲存於裝載服務的資料庫中。當訊息到達時,應用程式會先從資料庫載入狀態,然後再處理訊息。

「Service Broker 介面」範例的 Service 類別提供了一種維護狀態的便利方法。此範例示範如何使用 Service 類別維護狀態。

若要使用 Service 類別維護狀態,您要實作應用程式中的兩個方法和 SQL Server 中的預存程序,如下表中所列:

項目 簽章 描述

預存程序

CREATE PROCEDURE name (@cgid uniqueidentifier)

傳回應用程式的狀態。此程序傳回的結果集必須包含交談群組識別碼。

公用方法

public override bool LoadState(System.Data.Sql.SqlReader reader)

讀取預存程序提供的結果集,以還原狀態。此預存程序必須將交談群組識別碼儲存於類別中,因為 Service Broker 介面不會提供識別碼給 SaveState 方法。

公用方法

public override void SaveState()

將狀態儲存至資料庫。

此主題描述還原狀態的一般大綱。如需完整範例,請參閱<ShoppingCartService.cs>。

預存程序必須接受交談群組識別碼,並傳回兩個結果集。第一個結果集包含交談群組識別碼本身。第二個結果集包含應用程式指定的狀態。此預存程序沒有固定名稱。相反地,您必須設定 AppLoaderProcName 屬性來提供此預存程序的名稱。Service Broker 介面只呼叫提供的預存程序。

LoadState 方法會還原應用程式的狀態。應用程式遵循的確切處理需視應用程式要求的狀態而定。方法會將 System.Data.Sql.SqlReader 的執行個體視為參數。SqlReader 包含預存程序傳回的結果集。通常,實作 LoadState 方法會更新 Service 類別的 State 屬性、將交談群組識別碼儲存於私用欄位中,然後將應用程式指定的狀態儲存於適當的資料結構中。例如,ShoppingCartService 會將有關項目、數量和價格的資訊儲存於 ShoppingCart 類別的私用執行個體中。

呼叫 LoadState 後,「Service Broker 基礎結構」會分派訊息。請注意,如果使用以屬性為基礎的訊息分派架構,除了訊息類型名稱之外,您還可以依據狀態屬性來分派訊息。在處理訊息的方法中,您可以讀取或更新在 LoadState 中建立的資料結構。

當訊息處理方法傳回時,「Service Broker 基礎結構」會呼叫 SaveState 方法。SaveState 方法使用 Service 類別的 Connection 屬性建立 SqlCommand 物件,然後使用該物件更新儲存在資料庫中的狀態。例如,ShoppingCartService 會刪除購物車中儲存的內容,然後將購物車的目前內容插入至資料庫。

變更歷程記錄

版本 歷程記錄

2005 年 12 月 5 日

變更的內容:
  • 已變更產生金鑰檔的指示,包括金鑰檔的名稱和位置。