Readme_ShoppingCart
更新 : 2005 年 12 月 5 日
Shopping Cart サンプルでは、簡単なショッピング カート アプリケーションの状態をメンテナンスするためにメッセージ交換グループ識別子を使用します。このアプリケーションでは ServiceBrokerInterface サンプルが使用されます。
既定では、Shopping Cart サンプル アプリケーションは C:\Program Files\Microsoft SQL Server\100\Samples\Engine\\ServiceBroker\ShoppingCart にインストールされます。サンプル フォルダが存在しない場合は、「サンプルのインストール」を参照してください。
サンプルは、演習目的で利用するためにのみ提供されています。サンプルを運用環境で使用することは想定されていないため、運用環境でのサンプルのテストは行われていません。Microsoft では、これらのサンプルに関する製品サポート サービスを提供していません。システム管理者の承認を得ることなく、サンプル アプリケーションやサンプル アセンブリを、運用中の SQL Server データベースやレポート サーバーに接続したり、これらのデータと共に使用することは避けてください。
サンプルのビルドとインストール
Visual Studio 2005 で
ShoppingCartCS.sln
を開きます。F6 キーを押すか、[ビルド] メニューで [ソリューションのビルド] をクリックして、ソリューションをビルドします。
コマンド プロンプトを開き、
Scripts
フォルダに移動して、次のコマンドを実行します。install all
インストール スクリプトによって、アプリケーションの SQL Server オブジェクトがインストールされます。これには、ShoppingCartService サービスを実装する共通言語ランタイム (CLR) ストアド プロシージャが含まれます。
サンプルの実行
サンプル ディレクトリから
ShoppingCartClient.exe
アプリケーションを実行します。簡単にするため、クライアントは、クライアントが実行されるたびに 1 つの注文を処理します。[Create Order] をクリックして注文を作成します。[Item] リストからアイテムを選択して [Add Item] をクリックし、ショッピング カートにアイテムを追加します。
[Service Broker Trace] タブをクリックすると、送信済みおよび受信済みの Service Broker メッセージの概要が表示されます。
ssb_ShoppingCart データベースの ShoppingList テーブルおよび StateTable テーブルは、アプリケーションの状態をメンテナンスします。CLR ストアド プロシージャによって、クライアントからのメッセージに基づいてテーブルが更新されます。Management Studio または sqlcmd を使用して、これらのテーブルを調べることができます。
サンプルのアンインストール
コマンド プロンプトを開き、
Scripts
フォルダに移動して、次のコマンドを実行します。uninstall all
アンインストール スクリプトによって、アプリケーションの SQL Server オブジェクトが削除されます。
必要条件
このサンプルには Visual Studio 2005 が必要です。このサンプルでは、以前のバージョンにはなかった CLR の機能が使用されているため、Visual Studio 2005 より前のバージョンではこのサンプルをビルドできません。
使用例
サービスをホストするデータベースの状態が最も頻繁に格納されるのは Service Broker アプリケーションです。メッセージを受信すると、アプリケーションはデータベースから状態を読み込み、メッセージを処理します。
Service Broker Interface サンプルの Service
クラスによって、状態をメンテナンスする便利な方法が提供されます。このサンプルでは、Service クラスを使用して状態をメンテナンスする方法が示されます。
Service
クラスを使用して状態のメンテナンスを行うには、次の表のとおり、1 つのストアド プロシージャを SQL Server に実装し、2 つのメソッドをアプリケーションに実装します。
アイテム | シグネチャ | 説明 |
---|---|---|
ストアド プロシージャ |
|
アプリケーションの状態を返します。このプロシージャによって返される結果セットには、メッセージ交換グループ識別子が含まれている必要があります。 |
パブリック メソッド |
|
ストアド プロシージャによって提供された結果セットを読み取り、状態を復元します。Service Broker Interface は識別子を |
パブリック メソッド |
|
状態をデータベースに保存します。 |
このトピックでは、状態を復元するための一般的な概要について説明します。完全な例については、ShoppingCartService.cs
を参照してください。
ストアド プロシージャはメッセージ交換グループ識別子を受け取り、2 つの結果セットを返す必要があります。1 番目の結果セットは、メッセージ交換グループ識別子自体で構成されます。2 番目の結果セットには、アプリケーション固有の状態が含まれています。このストアド プロシージャには固定名はありません。代わりに、AppLoaderProcName
プロパティを設定することにより、ストアド プロシージャの名前を指定します。Service Broker Interface は指定されたストアド プロシージャの呼び出しを行います。
LoadState
メソッドによってアプリケーションの状態を復元します。正確には、アプリケーションが行う処理は、アプリケーションが必要とする状態によって異なります。メソッドには、パラメータとして System.Data.Sql.SqlReader
のインスタンスを取得します。SqlReader
には、ストアド プロシージャを返す結果セットが含まれています。通常は、LoadState
メソッドを実装すると、Service
クラスの State
プロパティが更新され、プライベート フィールドにメッセージ交換グループ識別子が保存され、それからアプリケーション固有の状態が適切なデータ構造に保存されます。たとえば、ShoppingCartService
によって、アイテム、量、および価格の情報が ShoppingCart
クラスのプライベート インスタンスに格納されます。
LoadState
を呼び出した後、Service Broker Infrastructure によってメッセージがディスパッチされます。属性ベースのメッセージ ディスパッチ フレームワークを使用する場合、メッセージ型の名前に加え、State プロパティに基づいてメッセージをディスパッチできることに注意してください。メッセージを処理するメソッドでは、LoadState
で作成されたデータ構造の読み取りや更新を行うことができます。
メソッドを処理するメッセージが返されると、Service Broker Infrastructure によって SaveState
メソッドが呼び出されます。SaveState
メソッドは、Service クラスの Connection
プロパティを使用して SqlCommand
オブジェクトを作成し、そのオブジェクトを使用してデータベースに格納された状態を更新します。たとえば、ShoppingCartService
は、保存されたショッピング カートの内容を削除し、ショッピング カートの現在の内容をデータベースに挿入します。
変更履歴
リリース | 履歴 |
---|---|
2005 年 12 月 5 日 |
|