2016-07-26 4 views
1

MVCアプリケーション用の永続ショッピングカート、つまりユーザーがログインしたときにいくつかの製品をカートに追加し、注文を行わずにカートに残っている商品を残したいとします。私は、ある程度の時間が来るまでユーザーが買い物カゴに追加したアイテムを持つようにして、カートを手動で注文したり、カートからアイテムを1か月以内に取り除いたりしたいと考えています。 asp.net sessionStateにカートを保存することをお勧めしますか?はい、どのモード、State Server、InProc、Out of Process、またはSQLServer? よろしくお願いいたします。asp.netを使用して永続化するために、ユーザーのショッピングカートをsessionStateに保存するのはプロフェッショナルですか?

+0

商品がショッピングカートに入れられていません。あなたは*耐久性のないストレージにそれらを保存したくない*。さらに、Webアプリケーションの一部の状態だけでなく、他のシステムからアクセス可能な顧客の潜在的な注文です。それを適切なデータベーステーブルに格納することはただ一つの選択肢に過ぎません –

答えて

1

セッション状態は、ユーザーがあなたのサイトとやり取りしている間だけ続きます。技術的にはもう少し時間はかかりますが、ユーザーがブラウザを離したりブラウザを閉じたりすると、セッションが終了したとみなす必要があります。

オプションA: ユーザーのコンピュータでクッキーを使用して、ショッピングリストにアイテムを保存します。できるだけ少ない情報、おそらく製品SKUと数量だけを保管してください。

例:クッキーを読むためにクッキー

HttpCookie cartCookie = new HttpCookie("TheCart"); 
DateTime now = DateTime.Now; 

// Possibly a serialised string of the shopping cart object (ensure no sensitive info though) 
cartCookie.Value = shoppingCartData; 

// Set when the cookie should expire. 
cartCookie.Expires = now.AddMonths(1); 

// Add the cookie too the response 
Response.Cookies.Add(cartCookie); 

を作成するには:

HttpCookie cartCookie = new HttpCookie("TheCart"); 
cartCookie = Request.Cookies["TheCart"]; 

オプションB: をお使いのユーザーがログインしている場合、そのデータにカートの状態を保持たとえば、リレーショナル、ディスク上、またはNoSQL DBに格納することができます。

+0

非常に説得力のある答えですが、このsessionStateが何のために使われたのか教えてください。 – Dawar

+0

セッション状態は、ユーザーがサイトを閲覧中にデータを保持するために使用されます。ページ間にデータを投稿する必要がなくなり、ユーザーのコンテキスト内で「グローバル」状態バッグが得られます。また、ページに埋め込まれたビューステートと、すべてのユーザーでグローバルなアプリケーションステートがあります。通常は、これらの概念(セッション状態、Cookie、アプリケーション状態、およびビュー状態)をブレンドして、最適なソリューションを得る必要があります。それらを読んで、どこでどこを使用するかについてさらに深く理解してください。 –

+0

ありがとうございます:)提案はあまりにも役立ちます – Dawar

関連する問題