📄 ch02s03.html
字号:
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>3. 网络框架中用continuation</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"><link rel="start" href="index.html" title="Java网络程序员看Continuation"><link rel="up" href="ch02.html" title="Chapter 2. Continuation,call/cc函数与回退/刷新键"><link rel="prev" href="ch02s02.html" title="2. 较复杂的continuation应用:coroutine"><link rel="next" href="ch03.html" title="Chapter 3. Seaside框架"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3. 网络框架中用continuation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Continuation,call/cc函数与回退/刷新键</th><td width="20%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e205"></a>3. 网络框架中用continuation</h2></div></div></div><p>用continuation支持后退比支持coroutine更简单,我们只需要在每次页面处理时保存一个新的continuation,并把所有这些continuation储存在server端的一个hash table里。我们给client的所有URL都有这个continuation的index。这样,每次一个客户端请求进来时,我们只需要根据它包含的continuation index读取并调用该continuation,我们就能正确地处理后退键,因为用户后退的话,我们的程序也会随之倒退到当时的状态。当然,有时处理完一个URL后用户就不能回退了,例如用户用信用卡付完了帐,我们就不能让他回去修改信用卡号码了。这时,我们只需要删除已经作废的几个continuation,用户就回不去了。</p><p>同样的机制也可以处理刷新键。如果逻辑上某个页面不允许刷新,那么我们可以在处理完客户请求后立即删除本continuation。如果用户刷新,那么我们会发现他请求的continuation不存在;但是如果用户提交一个新的请求,他会使用一个新的、有效的continuation,所以他的请求会被接受。</p><p>这听起来可能很复杂,但是这些机制都已经有人在相关框架中写好了,所以真正使用起来相当简单:您几乎永远不会自己处理continuation。接下来我们就介绍continuation框架中最著名,最成熟的一个,smalltalk的Seaside framework。</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2. 较复杂的continuation应用:coroutine </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Seaside框架</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -