Ich möchte einen dauerhaften Warenkorb für eine MVC-Anwendung erstellen, dh wenn ein Benutzer beim Einloggen in den Warenkorb einige Produkte hinzufügt und die Anwendung verlässt, ohne eine Bestellung aufzugeben oder den Artikel aus seinem Warenkorb zu entfernen. Ich möchte, dass Benutzer ihre hinzugefügten Artikel in ihrem Einkaufswagen haben, bis eine bestimmte Zeitperiode einen Monat sagt, die Artikel manuell aus dem Warenkorb bestellen oder entfernen. Ist es eine gute Idee, ihren Warenkorb in asp.net sessionState zu speichern? Wenn ja, in welchem Modus, Server, InProc, Out of Process oder SQLServer? Mit freundlichen GrüßenIst es professionell, Benutzer Einkaufswagen in einem sessionState zu speichern, um es persistent mit asp.net zu machen?
Antwort
Sitzungsstatus dauert nur so lange, wie der Benutzer mit Ihrer Website interagiert. Technisch gesehen etwas länger, aber sobald ein Benutzer weg navigiert oder seinen Browser schließt, sollten Sie die Sitzung geschlossen betrachten.
Option A: Verwenden Sie ein Cookie auf dem Computer des Benutzers, um Elemente in ihrer Einkaufsliste zu speichern. Speichern Sie so wenig Informationen wie möglich, vielleicht nur die Produkt-Artikelnummer und die Menge.
Beispiel: das Cookie Erstellen
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);
das Cookie zu lesen:
HttpCookie cartCookie = new HttpCookie("TheCart");
cartCookie = Request.Cookies["TheCart"];
Option B: Wenn Ihr Benutzer angemeldet ist, bleiben Sie dann den Warenkorb Zustand in einem Daten Speicher - zum Beispiel relational, auf der Festplatte oder in einer NoSQL-DB.
Scheint eine sehr überzeugende Antwort, aber würden Sie mir bitte sagen, wofür dieser SessionState verwendet wird? – Dawar
Der Sitzungsstatus wird verwendet, um die Daten zu verfolgen, während die Benutzer gerade Ihre Website durchsuchen. Es erspart Ihnen, Daten zwischen Seiten zu posten und gibt einen "globalen" Statusbeutel im Kontext eines Benutzers. Es gibt auch den Ansichtszustand, der in eine Seite und einen Anwendungsstatus eingebettet ist, der global für alle Benutzer gilt. In der Regel müssen Sie diese Konzepte (Sitzungsstatus, Cookies, Anwendungsstatus und Anzeigestatus) mischen, um zu einer optimalen Lösung zu gelangen. Informieren Sie sich darüber, um weitere Informationen dazu zu erhalten, wo Sie welche verwenden können. –
Vielen Dank :) die Vorschläge sind zu hilfreich – Dawar
Artikel im Warenkorb werden nicht gesammelt. Sie möchten sie nicht in einem nicht dauerhaften Speicher speichern. Darüber hinaus sind sie mehr als nur ein Zustand der Webanwendung, sie sind eine mögliche Bestellung eines Kunden, die von anderen Systemen aus zugänglich sein sollte. Speichern Sie es in einer richtigen Datenbanktabelle ist nur eine Option –