2011-06-22 8 views
0

サイトの再構築中に、私は自分のサイトのさまざまな側面について再考しています。InProcセッションまたはデータベースへの保存(EF4.1を使用)

私の現在のサイトが行うことの1つは、購入プロセスのさまざまなページリクエストを通じてショッピングカートをセッション(InProc)に保存することです。

私は、セッション状態の使用から離れ、代わりにEntity Frameworkを使用してカートをデータベースに保存することを検討しています。

この方法でカートを保管する際のパフォーマンスに大きな影響がありますか?

+0

なぜあなたはこれをしたいですか?アプリケーションが単一のサーバーでホストされ、ファームの一部ではない場合は、一般的にInProcが優先されます。 – Yuck

+0

セッションに保存されていたEFを使用して既に保存していたオブジェクトを自分のデータベースに書き戻すのが難しいためでした。私はObjectStateManager例外で終わった。私の最後のコメントを参照してください:http://stackoverflow.com/questions/6425983/ef4-1-how-to-deal-with-items-being-added-to-an-objects-collection – FloatLeft

答えて

0

データベースを使用してカートを保管すると、パフォーマンスの違いに気付かないでしょう。プラスポイントは、あなたのサイトが離陸すれば、アプリケーションが拡大縮小できる日に10,000ヒットを得ることです:)

0

データベースにデータを格納するためのパフォーマンスヒットはありますか?はい。あなたのユーザーは気付く可能性がありますか?おそらくそうではありません。これと他のすべての小さなデータ呼び出しがアプリケーションに大きな影響を与えることがありますか?絶対に。ほとんどのものと同様に、ニーズ、利点、およびリソースのバランスを取る必要があります。

まず、ショッピングカートをデータベースに保存する理由を尋ねます。ウェブファームのシナリオやw3wpのリセットや失敗の場合の永続性などの理由が考えられます。

Webファームシナリオでは、アウトプロセスセッションモード、データベースセッションモード、またはインプロセスモードのスティッキセッションを使用するソリューションがいくつかあります。詳細はASP.NET session modesをご覧ください。

カートを永続化したり、メモリ内のボラティリティから保護しようとしているのであれば、迅速に実装するソリューションとしてセッション状態をデータベースに移動するだけで済みますが、明示的なデータベーステーブル。セッションのサイズ、ショッピングカートのデータのサイズ、ネットワークとハードウェアのパフォーマンス、およびシステムの他の多くの側面が結果に影響する可能性があります。だから、測定、変化、測定、比較する。

+0

Heh、あなたの他の回答の後、これはあなたの多くをお手伝いしないように見えます。私は時々すべてを書き出すためにしばらく時間がかかります。セッションから取得したオブジェクトを新しいサービスコンテキストに再接続しようとしましたか? – Chuck

+0

はい、リポジトリメソッドが呼び出されるたびに新しいコンテキストが作成されます。いくつかのテストをした後、私はObjectStateManagerの重複したキー例外を引き起こしたセッションからオブジェクトを再作成していたことがわかりました – FloatLeft

+0

こんにちは。私はObjectStateManagerの問題に関するいくつかの関連情報をここで見つけたと思う:http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/89b7087a-1b08-4fe0-9cc3-68986fe89a74/ – FloatLeft

関連する問題