轻量级开发的成功秘诀,第 9 部分: 基于 Continuation 的框架
2009-11-11 00:00:00 来源:WEB开发网新请求非常简单:只需启动一个新的 Web 应用程序即可。也可以使用在产生用户请求时存储的 ID 从字典中加载 continuation。
这可看作考虑问题的角度方面的一次飞跃。通过传统方式,是从有许多独立请求的浏览器的角度思考问题。而通过 continuation 方式,是将所有一切看做一个大型应用程序,有一些回调用户的调用。迄今为止,本文的介绍或许还很难使您的脑筋转过弯儿来,但这没有关系。最重要的是使用模型。下面给出一个购物车的基本形式:
清单 5. 购物车def checkout(cart)
items=cart.items
shipping_address=get_shipping_address()
billing_address=get_billing_address if billing_address.is_separate_address()
credit_card_info=get_credit_card_info()
process_checkout(items, shipping_address, billing_address, credit_card_info)
end
虽然各个 get 调用都返回到用户,但不必保存状态,也不必在控制返回时恢复状态。由框架捕获的 continuation 将为您处理这些问题。
continuation 的优点
您一定可以马上想到 continuation 的主要优点。不必在每次返回用户以获取更多信息时都保存和加载状态。这一特点带来的好处简直难以估量,如果需要建立操作流程复杂的 Web 站点,此类服务器可帮助您节省大量时间。编写和维护代码也更加容易。
我感到非常震惊,Java 技术中几乎所有先进的 Web 框架都无法很好地处理 Back 按钮。有了 continuation 之后,用户不仅仅可以返回去浏览之前的一页,更可以查看浏览器历史中的任意页面。不必自行构建支持功能,因为 Web 服务器拥有该时间点的完整调用堆栈。Back 按钮可以无缝地工作。如果需要在任意点禁用 Back 按钮,也丝毫不会遇到什么困难。只需将用户过去的 continuation 从 continuation 字典中清除即可。同样,线程处理也变得更为容易,因为各个 continuation 都有自己的私有数据集。
更多精彩
赞助商链接