轻量级开发的成功秘诀,第 9 部分: 基于 Continuation 的框架
2009-11-11 00:00:00 来源:WEB开发网
清单 2. 载入循环并通过代码调用循环
prompt< c=loop
1
2
3
4
现在就可以调用 continuation,在 i 被置为 2 并输出后跳出循环:
prompt< c.call
3
4
非常令人惊讶,时光倒流了,回到了捕获 continuation 的时候。这一有趣的抽象对于某些问题来说是非常有用的。
Web 服务器中的 continuation
若您出于某些原因希望挂起操作并在随后不需要时跳出操作,那么 continuation 尤为有用。但这不恰恰就是 Web 应用程序的特点吗?处理用户的请求、存储状态、要求用户提供更多信息,然后等待。当用户再次调用 Web 服务器时(可能是几分钟之后),就需要转向状态字典、读取用户响应,然后继续处理。就这样循环反复。
如果有 continuation,那么就可以创建一个 continuation 对象,使用惟一 ID 生成器存储该对象,并请求用户提供更多信息。通常的应用服务器代码形式如下:
清单 3. 应用服务器代码def ask_user(webpage_id)
id=Id_genrator.new_id
continuation=callcc...
continuations[id]=continuation
load_user_webpage(id, screen_id)
end
(请注意,这并非真正的框架 —— 只是展示基于 continuation 的应用服务器中主要细节形式的代码而已。)
然后 Web 服务器即可处理其他 Web 请求。当用户提交页面并指定您传递给该用户的 ID 时,就可恢复 continuation 并继续执行处理。Web 服务器的代码形式如下:
清单 4. Web 服务器代码while(True) do
request=get_latest_request()
if request.is_a_new_request do
start_new_app(request)
else
continuation=continuations[request.id]
continuation.call(request)
end
end
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››轻量级数据交换格式 JSON轻松入门
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››成功站长应具备的12个良好心态(上)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››成功开发iPhone软件的10个步骤
- ››开发移动 Web Ajax 应用
- ››开发者眼中的iPhone与Android
- ››成功的站长 注重文章的原创性和与内容为王
- ››开发者或想使用的10个Android2.2新特性
更多精彩
赞助商链接