`

高性能Ruby MVC框架:Merb

阅读更多
对Rails性能的争论由来已久。当Web应用要处理大量的文件交换或并发连接时,Rails真的会变得很慢,而这正是Merb要解决的问题。来自Engine Yard的Ezra Zygmuntowicz,从10个月前开始开发Merb(Mongrel+Erb),并在本月的Ruby Hoedown大会上做了相关演示。Ezra本来是在线程安全方面对Rails进行一下优化,结果他发现,重新开发一个框架比试图改变ActionPack(Rails的View和Controller部分)要来的简单的多。

Merb在很多方面都与Rails有相似之处。Merb与Rails的区别之处在于:

它没有cgi.rb
它拥有ActionPack的一个很干净的实现
使用可配置的互斥锁(Mutex Locks)机制,它是线程安全的(路由机制也是线程安全的)
它的设计简单明了
通过深入研究,可以很容易地对Merb的轻量级核心框架进行扩展
关键的区别是:

没有自动呈现(auto-render),控制器action的返回值直接返回给客户端。如果需要进行呈现的话,必须显式地调用呈现方法。
Merb的呈现方法仅仅返回一个字符串,相对Rails的类似功能来说,这样就允许多次呈现并且有更强的灵活性。
PartControllers支持封装的应用,并且没有太大的性能损失。
Zack Chandler提供了一个Merb示例应用。Merb v0.4核心已经完成,Ezra保证它会保持轻量级,并通过插件来提供额外的特性。

下一个版本将提供哪些特性呢?

文档、规范、入门手册
兼容Rubinius
更多的性能分析(profiling)和优化
更多的工具和便利性
说到性能,Phil Misiowier发布了Merb与Rails的详细对比(使用Swiftiply和Nginx)。 Phil的目的是要测试在真实世界中集群配置的表现。他试图发现在不同的会话管理选项(Disabled,Database stored,Memcached)和日志配置下,分别使用Rails与Merb,并发是如何对应用的运行产生影响的。在所有的测试中,Merb比 Rails表现好,而且根据不同的应用服务器和HTTP服务器,性能表现要超过Rails 5%到20%。

Phil得出了下面的结论:

与Merb一起使用Evented Mongrels,在具有高并发性能的同时,还可以为你的投资带来最好的回报[……]要保证理解你的应用的使用模式,并且不要过度工程化你的解决方案。在绝大多数情况下,使用标准的Mongrel集群运行Rails,对你来说可能就够用了。


Merb实际上是对Rails的重写,不过它去除了ORM,JS库以及对其它模板语言的支持(只支持erb),因此它比Rails更快一些,你可以将它看作是一个轻量级的 Rails。

当然也不只是删减,Merb还对Rails做了大量修改,不过大部分修改都体现在核心代码上,据Merb作者自己讲,核心代码的可维护性大大提高,至于外部表现,则不是很明显,我发现的就是路由部分做了改变,默认只有4个generator,同时默认使用rspec,而非test:unit,mailer现在有了一个独立于view的目录,app server默认使用4000端口等等。

总体来说,应用开发人员涉及的部分基本都与Rails保持一致,很容易上手,想要体验Merb?

$ sudo gem install merb --include-dependencies
$ merb my_application
$ cd my_application
$ merb

分享到:
评论

相关推荐

    Ruby语言令人喜爱的十大特点

    自从Rails框架问世后,Ruby一举成为了一个令不少人赞赏的编程语言。在这篇文章中,来自Merb与Rails核心开发团队的Yehuda Katz向我们分享了十大令人喜爱的Ruby语言特点。

    循环:Ruby的简单背景循环框架

    loops是用于Ruby on Rails,Merb和其他ruby框架的小型轻量级框架,其创建目的是支持应用程序中的简单后台循环,这些后台循环通常用于在服务器(队列工作器,批处理任务处理器等)上进行某些后台数据处理。...

    Rails,Sinatra,Merb,DataMapper等的分页库-Ruby开发

    will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装:##用于Rails 3 +,Sinatra和Merb的Gemfile gem'will_paginate','〜> will_paginate ...

    crack:从Merb和Rails中复制的真正简单的JSON和XML解析

    兼容性Ruby1.8.7 ruby 1.9+(与时间解析相关的3个失败,如果有人可以解决的话会很喜欢)关于补丁/拉动请求的注释分叉该项目。 进行功能补充或错误修复。 为此添加测试。 这很重要,因此我不会在以后的版本中无意间...

    Ruby-willpaginate一个分页库可与RubyonRailsSinatraMerbDataMapper和Sequel集成

    will_paginate - 一个分页库可与Ruby on Rails, Sinatra, Merb, DataMapper和Sequel集成

    practical_intro_merb.pdf

    practical_intro_merb.pdf

    crack, 真正简单的JSON和XML解析,从Merb和 Rails.zip

    crack, 真正简单的JSON和XML解析,从Merb和 Rails 裂纹 真正简单的JSON和XML解析,从Merb和 Rails 。 XML解析器从Merb中提取出来,JSON解析器从 Rails 中剥离。 我没有信用,只是打包供大家...兼容性ruby 1.8.7ruby 1.9

    will_paginate:用于Rails,Sinatra,Merb,DataMapper等的分页库

    will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装: ## Gemfile for Rails 3+, Sinatra, and Merbgem 'will_paginate' , '~> 3.1.0' 有关...

    wikimedia-mobile:维基媒体在 Merb 中的移动站点

    维基移动 这是 2010 年由维基媒体的优秀人士带给您的...获取运行 1) 从 / 安装 Ruby 1.9.2 和 RubyGems 版本 1.3.6+ 2)安装最新的捆绑软件gem gem install bundler rake3)为要测试的任何语言设置en.m.wikitest.org,*

    delishlist.com:与Capistrano一起部署的中型Sinatra网站(从Merb重写)

    与Capistrano一起部署的中型Sinatra(从Merb重写)。 将链接标记在或上的wishlist ,更好地演示。 不隶属于Yahoo! Inc.是“ Delicious”商标的所有者,也不具有Pinboard。 开发人员 bundle createdb delishlist_...

    request-log-analyzer:基于您的日志文件创建报告。 支持Rails,Apache,MySQL,Delayed :: Job和其他格式

    请求日志分析器 这是一个简单的命令行工具,可以分析各种格式的请求日志文件以生成性能报告。 其目的是找到最适合优化的动作。 分析日志文件。 当前支持:Amazon S3,Apache,Delayed :: Job,Merb,Mysql,...

    Beginning Rails 3

    例如,以前只对 Rails 应用程序可用的数据验证便捷功能现在成为独立的组件,并且可以包含在 Vanilla Ruby 代码中。如呈现部件和模板等控制器功能,现在也是相互独立的,并且可以嵌入到任一库中。

    freego-sprinkle:我们的(旧)洒食谱

    它使用基于 Ruby 的领域特定语言来描述包和策略,以确定应在特定系统上安装什么。 请参阅了解更多信息。 用法: # on the new server machine: # just ensure root user can login via ssh. # on the local ...

    jQuery实战中文版+源码

    jQuery是目前最受欢迎的JavaScript/Ajax库之一,能用最少的代码实现最多的功能。...Yehuda Katz 著名Web技术专家,jQuery开发团队的核心成员,Merb等开源项目的贡献者。他还维护着热门网站VisualjQuery.com。

    github的使用文档教程

    git是一个分布式的版本控制系统,最初有linux Tovalds编写,初衷是为了管理linux内核代码的管理,在推出之后,git在其他项目中取得了很大的成功,尤其是在Ruby社区中,目前,包括Rubinius和Merb在内的很多知名项目都...

    nori:XML到哈希转换器

    真正简单的XML解析来自于Crack,而后者则来自于Merb。 创建Nori是为了绕过Crack的过时开发,改进其XML解析器并解决某些问题。 parser = Nori . new parser . parse ( "<tag>This is the contents</tag>" ) # => { ...

    Github for windows

    在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。

    Git权威指南视频教程

    在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。

    slackworks-blarg

    旧系统是自定义代码,从 Merb 移植到 Rails,将文章保存在 CouchDB 中。 新的只是带有丑陋皮肤的 Octopress。 如何使用 文章位于source/_posts/ ,它们可以是 HTML 或 Markdown,并且只需要在顶部有一些神奇的 ...

Global site tag (gtag.js) - Google Analytics