`

高性能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

分享到:
评论

相关推荐

    practical_intro_merb.pdf

    Merb是一款轻量级、高性能的Ruby Web框架,它以黑客友好的理念,提供了一个简洁、灵活且易于扩展的开发平台。Merb的核心功能涵盖了MVC架构、请求处理、会话管理、路由配置等方面,同时提供了丰富的插件系统和辅助...

    Node.js 入门手册:那些最流行的 Web 开发框架.docx

    13. Derby:MVC框架,使得在Node.js和浏览器中编写实时、协作应用变得简单。 14. djangode:从Django借用了一些有用的概念,适用于Node.js(2010年3月,适用于node.js 0.1.30)。 15. drty:Django向NodeJS的移植...

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

    Ruby 语言以其独特的魅力和强大的功能吸引了众多开发者,尤其是自Rails框架出现以来,它成为了许多程序员的首选。本文将深入探讨Ruby的十大令人喜爱的特点,揭示其灵活性和易用性。 1. 动态类型:Ruby 是一种动态...

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

    **Merb** 是一个基于 MVC 架构的框架,它具有高性能和模块化的特点。在 Merb 中,`will_paginate` 可以与 DataMapper 集成,提供数据的分页处理。使用方式类似于 Rails: ```ruby @posts = Post.all.paginate(:page...

    Ruby on Rails 3 Tutorial

    - **定义**:Ruby on Rails(简称Rails)是由David Heinemeier Hansson创建的一种全栈式Web应用开发框架,它采用MVC(Model-View-Controller)设计模式,旨在简化Web开发过程。 - **特性**: - **约定优于配置**:...

    node.js入门手册:那些最流行的web开发框架 (1).docx

    **CompoundJS**(原名 RailwayJS)是一个类似于 Ruby on Rails 的 MVC Web 框架,兼容 Express 和 Connect。它为开发者提供了一套完整的工具集,包括路由管理、视图渲染等功能。 #### 十二、Crux **Crux** 类似于 ...

    循环: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 ...

    (ruby 1.9 开发)Rango

    - **仅支持 Ruby 1.9**:Rango 专门为 Ruby 1.9 设计,利用了 Ruby 1.9 中的新特性和性能提升。 - **代码生成器**:提供了生成器来帮助快速搭建项目结构,但并不强制要求特定的项目结构。 - **代码热加载**:通过...

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

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

    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,*

    rails3-railsconf2010

    Rails(Ruby on Rails)是一种用Ruby语言编写的开源全栈web应用框架,以模型-视图-控制器(MVC)架构为基础,以其简洁、高效以及开发者的友好性著称。Rails 3的发布标志着Ruby on Rails框架的一个重要里程碑,引入了...

    SASS使用说明-中文-20230626

    - **Rack/Rails/Merb 插件**:在Web框架中集成SASS,方便自动化编译和项目构建。 4. **其他功能** - **@-Rules 与指令 (@-Rules and Directives)**:SASS中的`@extend`用于继承其他选择器的样式,`@mixin`定义...

    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,...

Global site tag (gtag.js) - Google Analytics