2017-09-22 16 views
0

予約システムのようなもので、複数の人が同じ席を予約することができないasp.net Webサービスがあります。予約の適格性は他のテーブル値に基づいていますSQLサーバーで。私は前述のようにSQLサーバーのキュー処理を使用する予定ですhere。私の顧客は、同期呼び出しでこれを行うことを望んでいます。つまり、同じWebサービスメソッド呼び出しで結果を得たいということです。私の質問は、キューを処理し、キューの戻り値(時間の範囲内のループを使用して)まで待機する同期メソッド呼び出しを許可する方法が効率的です。これを達成するための最善の方法をアドバイスしてください。ASP.Net Webサービスがプロセスデータベースキューにコールを同期

答えて

1

あなたはXY problem trapにステップしています。あなたの主な目標は、座席が2度予約できないようにすることです。この問題の適切な解決策は、キューを使用するアプローチを再考する必要があります。キューは、バックグラウンドタスクで処理リソースを効率的に使用するのに最適です。リアルタイム処理(あなたのような)のために、それはより多くの問題を解決します。

複数のユーザーが同じシートに2度アクセスしようとすると競合が発生するのを避けたいようです。キューは問題を解決しません。エンゲージフェーズに移動するだけです。最初に待ち行列に入る人が勝つ。最後に不要な合併症を追加しましたが、それはあなたに利益をもたらすものではありません。

問題をもっと簡単に解決できるのは、DBにユニークなキーを作成して、座席を2度予約できないようにすることです。一瞬前に奪取された座席を予約しようとすると、error number 2627というSQLExceptionが発生します。シートが取られたことをユーザーに知らせることができます。