0

学生のグループが「部屋」を予約できるようにするasp.netアプリケーションがあります。各部屋には独自の交換アカウントが設定されているため、学生が部屋を予約すると、カレンダーに予定を作成するために EWS 呼び出しが行われます。jquery を使用して空き時間帯を表示し、学生が空き時間のみを予約できるようにします。

トラフィックが多く、同じ時間枠をめぐって競合が発生したため、同時予約に対処する必要がありました。私の考えでは、メインスレッドを一時停止し、今行った予約を見つけるために電話をかけ、部屋からの受け入れを確認し、受け入れたユーザーに「確認済みの予約」を返し、受け入れたユーザーに「予約を拒否」することができると考えていました。低下しました。EWS は毎回応答を返すとは限らないため、部分的な成功がわかりました。ルームが電子メールで予約を受け入れている間に、ユーザーが不明な応答を受け取ることがあります。アプリケーションは、EWS からの応答で生きたり死んだりします。多くの同時トランザクションを伴う高トラフィックでは、EWS が私の呼び出しに応答できないようです。面白いことに、トラフィックが非常に少ない他のすべての部門がこのアプリを気に入っており、彼らにとって非常にうまく機能しています:(

私の考えでは、EWS 通話をキューに入れる必要があります。

同じ/異なるリソースと時間の EWS 同時通話の管理について、だれかガイダンスを教えてもらえますか?

EWS ユーザー トランザクション (予約の作成、予約の確認、条件が呼び出された場合の予約の削除) をキューに入れたことがある人はいますか?

4

1 に答える 1

2

私の知る限り、EWS 内でネイティブにリクエストをキューに入れる方法はありません。おそらく最善の策は、サーバー上で何らかの形式のロックを使用して、一度に 1 つの要求のみが実行されるようにすることです。

または、.NET 内のタスク機能を利用して、この方法でコマンドをキューに入れることもできます。を使用すると、LimitedConcurrencyLevelTaskScheduler実行中のリクエストの数を制限できます。一度に 3 つのリクエストを処理できる場合は、これを構成することもできます。詳細とコード サンプルは、こちらにあります

なんらかの理由でアプリ プールがリサイクルされると、キューに入れられたすべての要求が存在しなくなることに注意する必要があります。

于 2013-09-15T23:08:12.823 に答える