Bei einem Stateless-Server muss der Client den Lock auf die Ressource wieder freigeben oder ein eigens entwickelter Hintergrundprozess. Bei einem Stateful-Server kann beim Beenden der Session der Lock wieder freigegeben werden. Welches Vorgehen ist präferiert die Entwickler-Community?
Auf die Beantwortung dieser Frage war ein Kopfgeld in Höhe von 100 Reputationspunkten ausgesetzt.
Das Kopfgeld wurde bereits vergeben.
2 Antworten
2
Aus meiner Sicht sollte man immer Stateless anstreben - schon weil man damit viel leichter skalieren kann. Ausserdem ist die Freigabe der Ressourcen beim Beenden der Session nicht immer gegeben - wenn kein expliziter Logout stattfindet, bei Netzwerkproblemen usw. Der Lock der Ressource würde ich wie Markus vom Server erledigen lassen - er kann die Benutzerkennung zuordnen und mit einem Hintergrundprozess die Ressource nach gewisser Zeit wieder freigeben, falls dies nicht implizit durch einen weiteren Aufruf geschieht.
Nur anhand der exklusiven Ressourcen würde ich das nicht entscheiden. Eher die Frage was in den Sessions gehalten wird und was nicht. Ressourcen würde ich nicht über Sessiondaten abbilden, sondern diese würde ich - wenn möglich - vom Applicationserver verwalten lassen. Wenn möglich Stateful-Sessions vermeiden, ansonsten kommt man gleich in die Problematik der Persistierung der Sessions.