我正在努力跟上Smalltalk/Seaside的发展。根据Wikipedia的说法,“Seaside是基于延续的Web应用程序框架”。来自Java背景,我对延续性不是很熟悉。

经过一番阅读后,我了解到延续是用于维护状态的,因此可以保存进程的快照,以后可以恢复(类似于将Windows置于休眠模式)。

与使用“返回”按钮有关,这与Seaside最相关吗?
使用代码块和“回调”与使用延续不同吗?

我还试图评估在Seaside中实际使用延续的当前重要性。我很困惑,因为许多有关Seaside的在线引用都提到延续性是关键和定义性功能。但是,我也发现许多文章提到在Seaside中使用延续不是那么常用,实际上也不是关键功能。

非常感谢您对我的帮助,这对我有帮助!

最佳答案

最初,Seaside使用延续来建模页面之间的流程并启用“后退”按钮。 Seaside 3.0不再是这样:继续是完全可选的。如果要使用 call: and answer: functionality,则可以加载软件包Seaside-Flow。否则,Seaside应用程序是免费的。

无论哪种方式,作为Web应用程序开发人员,您都不会看到(或看到)延续。它们是一个实现细节,很好地封装在Seaside Web框架中。

更新:在Seaside 3.0中,状态是通过按请求存储特殊对象来管理的。该对象记住该时间点的应用程序状态。如果用户回来,对象将知道如何还原和恢复先前的状态。在这方面,该对象的行为就像一个延续(该类称为WASessionContinuation),但其实现却大不相同。它不对执行堆栈进行快照,而仅对应用程序状态的特定部分进行快照(这就是消耗更少内存的原因)。而且它不会像延续那样跳入代码中的某处,而是实现了必要的恢复逻辑作为模板方法WASessionContinuation>>#handleRequest的一部分(这就是它更快的原因)。

10-05 20:55