作者 Robert Bazinet译者 李明(nasi)


Ruby on Rails团队正忙于采用Rack将 Rails推升至新的高度。Rake的实现方式使得开发者可以在自己的应用中使用许多现成的中间件,而这种特性使得Rails团队开发Metal成为可能。Metal是通用Rake中间件的包装,放置在Rails请求之前,并且可以访问Rails的会话。对于那些要求运行速度非常快,需要每秒处理成百上千个请求的应用来说,Metal简直就是量身定做的一般。


David Heinemeier Hansson在Ruby on Rails的官方博客上正式宣布引入Rails Metal,并举例说明了其适用范围:



目前为止我们已经实现了一个轻量级的包装器,它封装了通用Rack中间件,并命名为"Metal"。 Rails Metal对类似与Campfire投票服务的应用非常有用,Campfire每秒需要处理成百上千的请求,速度要求非常快,同时其逻辑又很简单(2个数据库调用然后返回一个字符串)。目前这个服务是用C编写的,不过我们将会看到,它很快将会被Rails Metal所取代。



Jesse Newland也发表了一篇名为Rails Metal:借Rails之力的微框架的博文,其中写到:



最近我们用Rack取代了Rails原有的请求处理代码,并且集成了中间件的支持,Rails Metal是一项睿智的改进,它允许Rails应用使用Rack中间件来创建一个超级快的action。



Jesse提供了Rails Metal的“hello word”的例子,并与普通的Rails控制器做了比较:



class Poller < Rails::Rack::Metal
def call(env)
if env["PATH_INFO"] =~ /^/poller/
[[200], {"Content-Type" => "text/html"}, "Hello, World!"]
else
[[404], {"Content-Type" => "text/html"}, "Not Found"]
end
end
end

普通的Rails控制器:



class OldPollerController < ApplicationController
def poller
render :text => "Hello World!"
end
end

这两段代码迥异,在一个简单的基准测试上的结果是:Metal比老版本的controller快25倍。


InfoQ采访了Rails核心团队成员、Rails Metal的开发者Joshua Peek,了解到了一些这个前景一片光明的新兴技术的细节。


当被问道Rails Metal是什么时,Joshua回答说:



Rails Metal应用是一种面向特定类型的应用,小而且快。它们可以和Rails应用在相同的进程里运行,这意味着它应该很容易开发,或者你也可以单独部署。



哪些类型的问题适合使用Rail Metal来解决?



Metal适用于构建需要每秒处理成百上千请求的微型服务。



Rails Metal是一种新技术,并不是人人都适用,那么Metal对于一般的Rails开发者来说有什么价值呢?



虽然对于任何一个Rails开发者来说,建立metal应用都是件非常容易的事,但是它确实是一件利器。Rails开发者还是应该继续按照原来的方式使用Rails,当他们确认某个特定的action有特别高的性能要求时,Metal就能派上用场了。



Metal似乎是用到了最新的Rack实现最本质的功能,但是实际上,Rails引入Metal的目的却并不在此,就此Josh解释说:



Rails提供了一个全栈的MVC框架,包罗万象,你可以用来构建一个真正的应用。然而,Rails也允许你使用“metal”来实现最快的速度。无论是两者中的哪一个,我们都希望给开发者提供最好的支持。



有意思的是,人们在看到Merb-Core时,可能会拿它和Metal做比较,而事实上两者迥然不同。



Merb是一个完整的MVC框架。然而,Metal就不是那么有血有肉了。它简化了Rack API,你得到的是一个原始的请求环境散列,你需要返回一个状态码,应答包头和一个应答包体。在Metal里面没有控制器或者视图的概念,开发者可以用最少的代码来实现想要的功能。



我们已经听过很多微框架及其适用范围了。Jesse Newland把Metal和其他的“微框架”相提并论。我们询问了Joshua,Metal是否会造成其他的微框架的需求降低:



不会的。对于像Sinatra这类微框架来说,还有一定的空间,把它做得足够简单,来编写简单的API处理程序。事实上,你可以把Sinatra当成一个metal应用来使用。因为Sinatra构建于Rack之上,所以会工作的很好。



最后,开发者如何才能获取到Metal?



现在Edge Rails已经引入了Metal。或者你也可以等Rails的下一个gem发布,应该是2.3版。



Rails Metal的发布已经引起了广泛的关注,它给需要速度的Rails应用带来了好消息。更多关于Rails Metal的信息,请访问Ruby on Rails官方博客以及GitHub代码库,你可以从Github库中获取Rails。


查看英文原文:Ruby on Rails gets down to the Metal



[阅读全文...]

挖上一个精彩
挖客给您推荐更多精彩!
挖下一个精彩

这些挖客臭味相投 · · · · · ·


挖客说 · · · · · ·

 

匿名评论
(文明上网,承担一切因您的行为而直接或间接导致的法律责任)

 

 
合作伙伴:   网易科技   赛迪社区   千龙科技   265上网导航   刷刷   动态网站制作指南   煎蛋   新新web2.0   9Fav就喜欢网   Linux桌面中文网   我爱水煮鱼   乐婴网
  天涯海阁   掘图志   cngadget   17Fav   桑林志   91新鲜网   奇事奇物网   搜酷全球   poboo