Jus*_*tin 10 continuations smalltalk seaside
我正努力加快Smalltalk/Seaside的速度.根据维基百科,"海边是基于延续的Web应用程序框架".来自Java背景我不太熟悉continuation.
经过一些阅读后,我理解延续用于维护状态,从而保存进程的快照,并可以在以后恢复(类似于将Windows置于休眠模式).
这与使用"后退"按钮的Seaside最相关?使用代码块和"回调"与使用延续不同?
我还试图评估在Seaside实际使用延续的当前重要性.我很困惑,因为许多在线参考Seaside提到延续作为关键和定义功能.但是,我也发现一些文章提到在Seaside使用延续并不常用,实际上并不是一个关键特征.
非常感谢任何有用的输入,让我直截了当!
Luk*_*gli 13
最初,Seaside使用continuation来模拟页面之间的流程并启用后退按钮.对于Seaside 3.0来说,这已不再适用:延续是完全可选的.如果要使用call:和answer:功能,可以加载包Seaside-Flow.否则,Seaside应用程序将继续免费.
无论哪种方式,作为Web应用程序开发人员,您永远不会看到(或看到)延续.它们是一个很好地封装在Seaside Web框架中的实现细节.
更新:在Seaside 3.0状态通过每个请求存储一个特殊对象来管理.此对象会记住该时间点的应用程序状态.如果用户回来,该对象知道如何恢复和恢复以前的状态.在这方面,这个对象的行为就像一个延续(该类被调用WASessionContinuation),但它的实现是非常不同的.它不会对执行堆栈进行快照,而只会对应用程序状态的特定部分进行快照(这就是消耗更少内存的原因).此外,它不会像继续那样跳转到代码中,而是实现必要的恢复逻辑作为模板方法的一部分WASessionContinuation>>#handleRequest(这就是为什么它更快).