Benutzer mit den meisten Antworten
Warenkorb-Session mit DataTable

Frage
-
Antworten
-
Hallo Frank,
ich möchte eine Shop programmieren.
da bist Du nicht der erste :) Soll das was produktives werden oder eher eine Versuchsumgebung? Wenn ersteres, würde ich eher zu einem der verfügbaren .NET Shopsysteme (gibts teilweise auch mit Sourcecode) raten.
Was ist die beste Lösung um einen Warenkorb zuhalten?
Alle und keine. Es gibt nicht "die beste Lösung". Es kommt immer auf die Anforderungen an.
Will man nur temporär arbeiten, d.h. sollen Warenkörbe nicht persistent gespeichert werden, kann man das komplett in der Session (oder auch im Cache, wenn man nicht mit Session arbeiten kann/will) speichern. In dem Fall würde ich aber keine DataTable nehmen, sondern eine eigene, kleine Klasse, die dann auch die abgelegten Artikel mit den notwendigen Informationen (Artikel, Preis, Anzahl, Optionen, ...) aufnehmen kann. Also bspw. so:
---
Class Basket
Property Abc As String
Property Def As Int64
Property Items As List( Of BasketArticle )
End Class
Class BasketArticle
Property ArticleId As Int64
Property Price As Double
Property Options As Irgendwas
End Class---
Wenn man aber bspw. einen Warenkorb speichern kann um diesen zu einem späteren Zeitpunkt zu vervollständigen, wenn man auch nicht durch die Kasse gezogene WK ggfs. für Kontroll- oder Statistikzwecke aufheben will, wenn man (aus irgendeinem Grund) Zugriff auf nicht bestellte WK haben muss, wird eine persistente Speicherung, bspw. in einer Datenbank notwendig. Die oben gezeigten Klassen kann man natürlich dennoch nutzen, um die Informationen für den aktuellen Request vorzuhalten. Die Ablage selbst findet aber in der DB statt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 28. März 2011 11:23
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 12. April 2011 08:34
-
Hallo Frank,
wenn ich das richtig lesen ist das mit den Session nichts für viele Besucher.
Wäre es dann besser wenn man viele Besucher erwartet den Warenkorb in einer SQL Datenbank zu speichern und nur eine ID als Session Variable zu führen
Was machen den die großen Shops?
Das musst Du die dann schon fragen :) Schau dir doch einfach mal ein paar der verfügbaren Systeme an. Da findest Du mit Sicherheit einige sehr wertvolle Informationen.
"Große" Shops wie Amazon, ... haben weniger ein Problem mit Sessions sondern eher eines mit Clustern, LoadBalancing, Traffic, ... So "groß" wird dein Shop aber wohl erstmal nicht werden, oder?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 28. März 2011 11:23
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 12. April 2011 08:34
Alle Antworten
-
Hallo Frank,
ich möchte eine Shop programmieren.
da bist Du nicht der erste :) Soll das was produktives werden oder eher eine Versuchsumgebung? Wenn ersteres, würde ich eher zu einem der verfügbaren .NET Shopsysteme (gibts teilweise auch mit Sourcecode) raten.
Was ist die beste Lösung um einen Warenkorb zuhalten?
Alle und keine. Es gibt nicht "die beste Lösung". Es kommt immer auf die Anforderungen an.
Will man nur temporär arbeiten, d.h. sollen Warenkörbe nicht persistent gespeichert werden, kann man das komplett in der Session (oder auch im Cache, wenn man nicht mit Session arbeiten kann/will) speichern. In dem Fall würde ich aber keine DataTable nehmen, sondern eine eigene, kleine Klasse, die dann auch die abgelegten Artikel mit den notwendigen Informationen (Artikel, Preis, Anzahl, Optionen, ...) aufnehmen kann. Also bspw. so:
---
Class Basket
Property Abc As String
Property Def As Int64
Property Items As List( Of BasketArticle )
End Class
Class BasketArticle
Property ArticleId As Int64
Property Price As Double
Property Options As Irgendwas
End Class---
Wenn man aber bspw. einen Warenkorb speichern kann um diesen zu einem späteren Zeitpunkt zu vervollständigen, wenn man auch nicht durch die Kasse gezogene WK ggfs. für Kontroll- oder Statistikzwecke aufheben will, wenn man (aus irgendeinem Grund) Zugriff auf nicht bestellte WK haben muss, wird eine persistente Speicherung, bspw. in einer Datenbank notwendig. Die oben gezeigten Klassen kann man natürlich dennoch nutzen, um die Informationen für den aktuellen Request vorzuhalten. Die Ablage selbst findet aber in der DB statt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 28. März 2011 11:23
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 12. April 2011 08:34
-
Hallo Stefan,
wenn ich das richtig lesen ist das mit den Session nichts für viele Besucher.
Wäre es dann besser wenn man viele Besucher erwartet den Warenkorb in einer SQL Datenbank zu speichern und nur eine ID als Session Variable zu führen
oder wie kann ich auch ohne Session Variable dem Besucher seinem Warenkorb zuordnen?
Was machen den die großen Shops?
Frank Bergmann
-
Hallo Frank,
wenn ich das richtig lesen ist das mit den Session nichts für viele Besucher.
Wäre es dann besser wenn man viele Besucher erwartet den Warenkorb in einer SQL Datenbank zu speichern und nur eine ID als Session Variable zu führen
Was machen den die großen Shops?
Das musst Du die dann schon fragen :) Schau dir doch einfach mal ein paar der verfügbaren Systeme an. Da findest Du mit Sicherheit einige sehr wertvolle Informationen.
"Große" Shops wie Amazon, ... haben weniger ein Problem mit Sessions sondern eher eines mit Clustern, LoadBalancing, Traffic, ... So "groß" wird dein Shop aber wohl erstmal nicht werden, oder?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 28. März 2011 11:23
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 12. April 2011 08:34