none
Warenkorb-Session mit DataTable RRS feed

  • Frage

  • Hallo,

    ich möchte eine Shop programmieren. Was ist die beste Lösung um einen Warenkorb zuhalten?

    Ich dachte da an eine Warenkorb-Session mit DataTable. Welche Nachteile gibt es dabei oder gibt es andere Lösungen?

     

    Danke für Eure Hilfe

    Frank Bergmann

    Dienstag, 22. März 2011 19:10

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
    Dienstag, 22. März 2011 20:01
    Moderator
  • Hallo Frank,

    wenn ich das richtig lesen ist das mit den Session nichts für viele Besucher.

    definiere "viele". Du kannst problemlos mit Sessions arbeiten. Früher haben viele Leute Cookies/Session-Cookies explizit nicht erlaubt, heute sieht das dank Web ZwoNull ein wenig anders aus. Es kommt aber dennoch immer auch auf die Zielgruppe an.

    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

    Wann Datenbank und wann nicht, steht eigentlich in meinem anderen Posting. Das hat nichts mit viel oder wenig Besuchern zu tun.

    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
    Mittwoch, 23. März 2011 09:51
    Moderator

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
    Dienstag, 22. März 2011 20:01
    Moderator
  • 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

     

     

    Mittwoch, 23. März 2011 00:12
  • Hallo Frank,

    wenn ich das richtig lesen ist das mit den Session nichts für viele Besucher.

    definiere "viele". Du kannst problemlos mit Sessions arbeiten. Früher haben viele Leute Cookies/Session-Cookies explizit nicht erlaubt, heute sieht das dank Web ZwoNull ein wenig anders aus. Es kommt aber dennoch immer auch auf die Zielgruppe an.

    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

    Wann Datenbank und wann nicht, steht eigentlich in meinem anderen Posting. Das hat nichts mit viel oder wenig Besuchern zu tun.

    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
    Mittwoch, 23. März 2011 09:51
    Moderator