10

我正在努力加快 Smalltalk / Seaside 的速度。根据Wikipedia的说法,“Seaside 是一个基于延续的 Web 应用程序框架”。来自 Java 背景,我对延续不是很熟悉。

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

在使用“后退”按钮方面,这与 Seaside 最相关?使用代码块和“回调”与使用延续不一样?

我也在尝试衡量在 Seaside 中实际使用延续的当前重要性。我很困惑,因为许多对 Seaside 的在线引用都提到延续是一个关键和定义特征。但是,我还发现许多文章提到在 Seaside 中使用延续并不常用,实际上也不是关键特性。

非常感谢任何有用的意见,让我明白这一点!

4

2 回答 2

13

最初 Seaside 使用延续来模拟页面之间的流程并启用后退按钮。Seaside 3.0 不再是这样:延续是完全可选的。如果你想使用call:answer:功能,你可以加载包Seaside-Flow。否则,Seaside 应用程序将免费继续。

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

更新:在 Seaside 3.0 中,状态是通过为每个请求存储一个特殊对象来管理的。该对象会及时记住应用程序的状态。如果用户回来,对象知道如何恢复和恢复之前的状态。在这方面,这个对象表现得像一个延续(类被称为WASessionContinuation),但它的实现是非常不同的。它不会对执行堆栈进行快照,而只会对应用程序状态的特定部分进行快照(这就是消耗更少内存的原因)。此外,它不会像延续那样跳转到代码中的某个地方,而是将必要的恢复逻辑作为模板方法的一部分实现WASessionContinuation>>#handleRequest(这就是它更快的原因)。

于 2011-11-26T18:10:29.970 回答
2

Continuations 是一个关键特性,它表明可以使用正确的抽象进行 Web 编程。这使得 Seaside 能够吸引喜欢在正确的抽象级别进行开发的聪明的开发人员,从而提高生产力。但这并不意味着它是您的 Web 应用程序的正确抽象,也不意味着它在 Seaside 中是必需的。

于 2011-11-28T12:54:29.263 回答