2016-07-26 1 views
1

Je veux faire un panier d'achat persistant pour une application MVC, en d'autres termes si un utilisateur ajoute des produits à son panier lorsqu'il est connecté et quitte l'application sans passer commande ou retirer l'article de son panier. Je souhaite laisser les utilisateurs ajouter leurs articles dans leur panier jusqu'à un certain temps, soit un mois, en les commandant ou en les retirant manuellement de leur panier. Est-ce une bonne idée de sauvegarder son panier dans asp.net sessionState? Si oui, dans quel mode, State Server, InProc, Out of Process ou SQLServer? CordialementEst-ce professionnel de sauver les utilisateurs du panier dans un sessionState pour le rendre persistant en utilisant asp.net?

+0

Articles dans le panier sont de l'argent non collectées. Vous ne voulez pas les stocker dans un stockage non durable. En outre, ils sont plus qu'un simple état de l'application Web, ils sont l'ordre potentiel d'un client qui devrait être accessible à partir d'autres systèmes. Le stocker dans une table de base de données correcte n'est qu'une option. –

Répondre

1

L'état de la session dure seulement tant que l'utilisateur interagit avec votre site. Techniquement un peu plus longtemps, mais une fois qu'un utilisateur navigue ou ferme son navigateur, vous devriez considérer la session fermée.

Option A: Utilisez un cookie sur l'ordinateur de l'utilisateur pour stocker des éléments dans sa liste d'achats. Stockez le moins d'informations possible, peut-être juste le numéro de produit et la quantité.

Par exemple: Pour créer le cookie

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); 

Pour lire le cookie:

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

Option B: Si votre utilisateur est connecté, persistent alors l'état de chariot dans un ensemble de données stocker - par exemple, relationnel, sur disque ou dans une base de données NoSQL.

+0

Cela semble une réponse très convaincante, mais pourriez-vous me dire à quoi sert cette sessionState? – Dawar

+0

L'état de session est utilisé pour garder une trace des données pendant que les utilisateurs sont occupés à naviguer sur votre site. Cela vous évite d'avoir à poster des données entre les pages et donne un sac d'état "global" dans le contexte d'un utilisateur. Il y a également View State, qui est intégré dans une page et un état d'application, qui est global pour tous les utilisateurs. Généralement, vous devez combiner ces concepts (état de session, cookies, état de l'application et état de la vue) pour obtenir une solution optimale. Lisez-les pour avoir plus d'informations sur les endroits où utiliser. –

+0

Merci beaucoup :) les suggestions sont trop utiles – Dawar