3

私が現在取り組んでいるプロジェクトには、セッション変数を使用する MS SQL Server と ASP.net Web サービスが含まれます。どうやらこれにより、クライアントの呼び出しが順次実行されます。これらのメソッドが非同期で実行されるようにしたいと考えています。

いくつかの調査を行った後、最も良い方法は、セッションを追跡するテーブルを使用して (guids say を使用)、セッションごとに個別のテーブルを使用して、データベースにセッション状態を永続化することです。

これに直接飛び込む前に、セッションを格納するように SQL Server を構成した場合に、Web サービスに対して同じ感覚の非同期操作が得られるかどうかを知る必要があります。

できますか?

4

1 に答える 1

1

申し訳ありませんが、コードを非同期で実行してセッション変数を使用する唯一の方法は、完全にカスタムのセッション ソリューションを作成することです。つまり、完全にカスタムで asp.net セッションを完全に無効にすることです。

セッションを行うための基本的なヒント:

  1. ユーザーデータに関連付けられた 1 つの Cookie があります
  2. データはデータベースの 1 つのテーブルにあります。
  3. セッションごとにそのテーブルにカスタムフィールドを作成し、Dictionary<>を避けてそれらを保持します
  4. あなたはダーティリードで作業し、最後の書き込みが勝ちます
  5. 毎回必要なセッション変数のみを読み書きします (すべてを一緒にする必要はありません)。
  6. 各行にはタイムアウト日があり、MS のように SQL のシェデュラーを使用して古いセッションを削除します。
  7. でセッションをロードしOnPreInit、変更されたもののみを保存しますOnUnload
  8. セッションを完全に無効にすることにより、セッションが通知なしで同期されるため、現在は正常に機能するコードを使用してロックする必要がありますがMutex、データベース呼び出しへの新しい挿入のように、セッション ロックがないと 2 回実行される可能性があります。

相対的:

同じセッションを共有している別の Web アプリの処理中に Web アプリがブロックされた
ASP.NET のボトルネックを特定するのに役立つ perfmon カウンター
ASP.Net のセッションを完全に置き換える

この質問に答えるためにif I configure SQL Server to store the session ? 、セッションはまだロックされており、残りのリクエストをブロックしています。SQL サーバーまたは他のメディアでセッションを行っている場合、作業方法は変更されず、保存されたデータの場所のみが変更されます。

于 2012-07-04T08:29:30.370 に答える