SessionState をかなり頻繁に使用していた asp.net mvc4 アプリをステートレス アプリに変換しようとしています。この情報を DB に保存できることを理解しており、そうするつもりです。
ただし、私の質問は、私の特定のアーキテクチャに関するものです。私のアプリには、いくつかの部分ビュー パネルで構成されるメインの「ページ」があり、それぞれに他のパネルに影響を与えるアクションがあります。私が今まで行ってきたことは、viewModel の状態全体 (多数の相互に関連する EF リスト コレクションと「レコード」オブジェクト) をセッションに格納することであり、うまく機能しています。セッションがランダムに終了する場合を除きます。
したがって、このデータをセッションから取り出して、必要に応じて再構築できる DB に入れる必要があります。私の懸念は、情報をデータベースに保存すると、画面上で実行されるすべてのアクションが 3 ~ 5 の異なるパネルに影響を与え、それぞれが独自の状態更新を行う可能性があることです。これは、対話ごとに DB への最低 10 往復です!
このアイデアをよりスケーラブルにするために使用できる戦略は何ですか?
追加情報
ここで問題となっているビューは、一種の POS ショッピング カート システムです。イベントの選択、カートへのアイテムの選択/追加、カート アイテムの編集、連絡先の選択、連絡先の編集、カート アイテムの表示、カートの「小計」の表示、最後に [チェックアウト] ボタンのあるパネルがあります。
新しいイベントを選択すると、利用可能なアイテムのリストが変更されます。カートに追加するアイテムを選択すると、カートのアイテム リスト、小計、およびチェックアウト パネルが変更されます。カート項目の編集も同様です。
主な関心事は、失われたセッションから回復する方法です。組み込みの asp.net セッション コードの信頼性が低すぎることがわかったからです。私のテスターは、セッションがタイムアウトになるという問題に遭遇し、その後、私のアプリにはいかなる種類の回復プロセスもありません。平均 10 人のユーザーがいる 1500 のサイトにインストールすると、セッションが失われるという問題が発生するので、実際の問題になる前に対処する必要があります。
私は無国籍にならないことに同意します...急いで使用される言葉の選択が間違っています。その状態を、セッションの失敗を超えて信頼できる形に変えようとしているだけです。私の現在の主なアイデアは、セッションをviewModelデータのローカルキャッシュとして引き続き使用することですが、セッションが何らかの形で失われた場合にDBからviewModelを再構築できるフォールバック操作を行うことです。