对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
分享到:
相关推荐
Merb是一款轻量级、高性能的Ruby Web框架,它以黑客友好的理念,提供了一个简洁、灵活且易于扩展的开发平台。Merb的核心功能涵盖了MVC架构、请求处理、会话管理、路由配置等方面,同时提供了丰富的插件系统和辅助...
13. Derby:MVC框架,使得在Node.js和浏览器中编写实时、协作应用变得简单。 14. djangode:从Django借用了一些有用的概念,适用于Node.js(2010年3月,适用于node.js 0.1.30)。 15. drty:Django向NodeJS的移植...
Ruby 语言以其独特的魅力和强大的功能吸引了众多开发者,尤其是自Rails框架出现以来,它成为了许多程序员的首选。本文将深入探讨Ruby的十大令人喜爱的特点,揭示其灵活性和易用性。 1. 动态类型:Ruby 是一种动态...
**Merb** 是一个基于 MVC 架构的框架,它具有高性能和模块化的特点。在 Merb 中,`will_paginate` 可以与 DataMapper 集成,提供数据的分页处理。使用方式类似于 Rails: ```ruby @posts = Post.all.paginate(:page...
- **定义**:Ruby on Rails(简称Rails)是由David Heinemeier Hansson创建的一种全栈式Web应用开发框架,它采用MVC(Model-View-Controller)设计模式,旨在简化Web开发过程。 - **特性**: - **约定优于配置**:...
**CompoundJS**(原名 RailwayJS)是一个类似于 Ruby on Rails 的 MVC Web 框架,兼容 Express 和 Connect。它为开发者提供了一套完整的工具集,包括路由管理、视图渲染等功能。 #### 十二、Crux **Crux** 类似于 ...
loops是用于Ruby on Rails,Merb和其他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 设计,利用了 Ruby 1.9 中的新特性和性能提升。 - **代码生成器**:提供了生成器来帮助快速搭建项目结构,但并不强制要求特定的项目结构。 - **代码热加载**:通过...
兼容性Ruby1.8.7 ruby 1.9+(与时间解析相关的3个失败,如果有人可以解决的话会很喜欢)关于补丁/拉动请求的注释分叉该项目。 进行功能补充或错误修复。 为此添加测试。 这很重要,因此我不会在以后的版本中无意间...
crack, 真正简单的JSON和XML解析,从Merb和 Rails 裂纹 真正简单的JSON和XML解析,从Merb和 Rails 。 XML解析器从Merb中提取出来,JSON解析器从 Rails 中剥离。 我没有信用,只是打包供大家...兼容性ruby 1.8.7ruby 1.9
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' 有关...
维基移动 这是 2010 年由维基媒体的优秀人士带给您的...获取运行 1) 从 / 安装 Ruby 1.9.2 和 RubyGems 版本 1.3.6+ 2)安装最新的捆绑软件gem gem install bundler rake3)为要测试的任何语言设置en.m.wikitest.org,*
Rails(Ruby on Rails)是一种用Ruby语言编写的开源全栈web应用框架,以模型-视图-控制器(MVC)架构为基础,以其简洁、高效以及开发者的友好性著称。Rails 3的发布标志着Ruby on Rails框架的一个重要里程碑,引入了...
- **Rack/Rails/Merb 插件**:在Web框架中集成SASS,方便自动化编译和项目构建。 4. **其他功能** - **@-Rules 与指令 (@-Rules and Directives)**:SASS中的`@extend`用于继承其他选择器的样式,`@mixin`定义...
与Capistrano一起部署的中型Sinatra(从Merb重写)。 将链接标记在或上的wishlist ,更好地演示。 不隶属于Yahoo! Inc.是“ Delicious”商标的所有者,也不具有Pinboard。 开发人员 bundle createdb delishlist_...
请求日志分析器 这是一个简单的命令行工具,可以分析各种格式的请求日志文件以生成性能报告。 其目的是找到最适合优化的动作。 分析日志文件。 当前支持:Amazon S3,Apache,Delayed :: Job,Merb,Mysql,...