[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
>>>>> "Scott" == Scott McKay <firstname.lastname@example.org> writes:
Scott> At 9:37 PM +0200 8/11/03, Michael Sperber wrote:
>> >>>>> "Scott" == Scott McKay <email@example.com> writes:
Scott> >Scott> I personally don't see why a continuation, with its implicitly
Scott> >Scott> captured state, is superior to having a session object that
Scott> >Scott> explicitly captures the state.
Scott> >They are orthogonal to each other, I'd say. Continuations are about
Scott> >capturing *bindings*, not state. Session objects are usually about
Scott> >capturing state. In systems which only have the latter, session
Scott> >management usually breaks down in the face of branches in the browser
Scott> A binding is part of the state, right?
Not where I come from :-) But I guess that's a matter of terminology.
Scott> I argue that, in
Scott> this domain, if you aren't explicitly capturing *all* the
Scott> state so that it can be "persisted", or if you are not
Scott> including tokens in your URLs (in links and in POSTs)
Scott> that somehow identifies the state, then you have an
Scott> incomplete design that will either:
Sure. I never said otherwise.
Scott> [...] To repeat myself, I still don't see how just having
Scott> continuations meets both of these goals. Yahoo Store has a
Scott> sufficiently complex user model that I would be pretty pissed
Scott> if I lost a session due to some server crash, so I'm still
Scott> curious what Paul did to address this.
Scott> Personally, I have no problems with continuations and
Scott> have even (gasp!) written interpreters and worked on
Scott> compilers that use them, but I don't find this particular
Scott> problem domain a very compelling reason for them.
It seems you're competent enough to design web software that does The
Right Thing, and find this easy. The vast majority of dynamic web
sites with some kind of session management gets the continuation part
wrong (but the state part right). With first-class continuations, you
never have to worry about about the continuation part with the right
kinds of abstractions. (In fact, literally kids can get this right.)
That leads me to believe that continuations are an excellent match for
this problem domain.
The question of making continuation objects persistent across server
crashes is yet another orthogonal issue. There's a paper out by the
PLT people that shows how to get this right. I believe it's
Graunke, Findler, Krishnamurthi, Felleisen
Automatically Restructuring Programs for the Web
Automated Software Engineering 2001
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla