InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Wee:基于Continuation的Ruby Web框架

作者 Mirko Stocker 译者 李明(nasi) 发布于 2009年3月28日

领域
语言 & 开发
主题
Ruby ,
动态语言 ,
Web框架 ,
语言 ,
编程 ,
架构 ,
Seaside ,
Ruby 1.9 ,
Continuations

Wee(Web Engineering Easy的简称)是一个类似Seaside的Web框架,它使用Continuation,这使得开发者可以“轻松漂亮地完成任务”,Wee的作者Michael Neumann如此形容到。Wee也提供可复用组件,这种组件“和GUI中的Widgets类似,开发一次,就可以随处使用”,它的目标是让HTML的GUI应用可以组建化,而不是让其REST化。即将发布的2.0版本也将完全基于Rack。

Neumann在一篇关于Wee的博文中示例说明了使用Continuation的代码在可读性上有多么明显的优势。使用Continuation,简单的序列流就可以写成这样:

 callcc page1
 callcc page2
 callcc page3

还有另一种连续传递风格(Continuation Passing Style)的写法:

 call page1 do
   call page2 do
     call page3
   end
 end

如果Continuation这么有用,那为什么不是所有框架都采用Continuation呢?没有出现更多基于Continuation的Ruby Web框架,其中一个原因就在于:Ruby 1.8存在内存泄露。虽然Brent Roman的MBARI补丁已经修复了这个问题,但是还没有引入到官方的Ruby 1.8中(一旦Engine Yard开始接管Ruby的维护工作,应该就会引入这个补丁)。Ruby 1.9.1b不再存在内存泄露的问题,Wee也得益于这一点

Ruby 1.9.1中10000个请求(1个线程中)需要花费16秒,内存占用为12MB,而同样的请求在Ruby 1.8.7中会占用多达329MB的内存,时间上也长达56秒。

看来Wee是人们选择升级到Ruby 1.9的一个有力理由,而由于Merb也将合并到Rails 3.0之中,所以Wee很可能成为取代Rails的最佳选择。

查看英文原文:Wee: Continuation Based Ruby Web Framework

译者 李明(nasi) 毕业于东北大学,曾供职于百度网页搜索部,从事分布式网络爬虫及其国际化的研发工作。