Skip to main content
Skip table of contents

Sessions in einer eCommerce Applikation

Um einen Kunden am Shop anzumelden, mit seinen Preisen darzustellen, ihm einen Einkaufskorb zu ermöglichen etc. muss der Shop einen Status halten. Selbst innerhalb eines zustandslosen REST Calls wird zwischen einzelnen Zugriffen auf das Objektmodell ein Status zwischen den verschiedenen Methodenaufrufen erhalten werden müssen.

Das Objektmodell des Shops verwendet für das Halten der Session ein eigenes Objekt, das innerhalb einer Webserver Umgebung seinerseits auf das System.Web.HttpContext.Session Objekt baut (dort wird ein Objekt unter dem Namen “centauri” ins Session-Objekt geschrieben).

Steht dieses Objekt nicht zur Verfügung, verwendet die aktuelle Implementierung eine globale Variable, um die aktuelle Session über mehrere Codeteile hinweg zu halten.

Der Zugriff auf dieses Objekt erfolgt über

CODE
var state = Centauri.Data.State.Current();

Anschließend können über die Variable state mit den Methoden Add(), Remove(), etc. Werte und ganze Objekte in den State gespeichert werden.

Die Verwendung von Centauri.Data.State erfolgt normalweise nur innerhalb des Objektmodells und nicht in der Shop Implementierung.

Centauri.Data.State und Centauri.Shop.State haben komplett verschiedene Aufgaben. Während Centauri.Shop.State den kaufmännischen Zustand einer Kundensession im Shop abbildet, ist Centauri.Data.State ein dynamisches Array für verschiedene technische Zustände innerhalb des Shops. Centauri.Shop.State setzt auf diesem dynamischen Array auf, um die Kundensession zu realisieren.

Beispielsweise enthält die Implementierung von Centauri.Shop.State.Customer (zur Abfrage des aktuell angemeldeten Kunden):

var state = Centauri.Data.State.Current();
var customer = (Customer)state.Find("customer");
return customer;

Um einen Wert in die Session zu speichern

CODE
var state = Centauri.Data.State.Current();
state.Add( "IPAdresseDesKunden", System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);

Um die Werte aus der Session zu holen

CODE
var state = Centauri.Data.State.Current();
var ip = state.Find( "IPAdresseDesKunden");

Find() liefert null zurück, wenn der Name noch nicht im State gespeichert ist.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.