InfoQ

InfoQ

新闻

我的书签

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

该内容已经被标记书签!

标记书签错误,请重试!

Node.js与Rails如何选择?

作者 崔康 发布于 2011年9月13日

领域
企业架构,
运维 & 基础架构,
架构 & 设计,
语言 & 开发
主题
应用服务器 ,
Web服务 ,
Java ,
开源软件 ,
并行编程 ,
并发 ,
语言 ,
平台 ,
工具 ,
SOA ,
企业架构 ,
开放源代码 ,
Joyent ,
编程 ,
敏捷 ,
社区 ,
架构 ,
互联网 ,
专家解惑 ,
评论 ,
Node.js ,
Rails ,
争论

按照GitHub上的访问量统计,Node.js这几个月已经开始领先Rails,有些Ruby社区的开发人员开始转向Node.js。随着Node.js逐渐受到社区的关注,开发人员都拿它与Rails作比较,有人说Node.js会替代Rails,有人说Rails优势明显,一直存在争论,我们来了解一下。

Web开发社区的Fabiano在自己的博客中分析了Rails和Node.js的各自特点:Rails是最完整的开源框架之一,大公司都在使用它。用途广泛,结构优雅,Rails不仅仅是MVC框架,还集成了大量的特性,而且是模块化结构。一些额外功能包括数据库迁移、MVC引擎、代码生成器、完整的文档等;Node.js的引擎V8运行快,平均性能比 Python快八倍(Python比Ruby快)。而且Node.js基于事件驱动,请求可以并发处理,无需阻塞IO操作。另外,关注的企业比较多,除了东家Joyent,还有LearnBoost和LinkedIn等。由NodeJS创建的Web服务器可以处理海量的网络连接。各种支持库可以运行在服务器端,而且其他语言的库也有部分在逐步迁移到Node.js上。基于Node.js的Express库占用内存很少但是很强大(Fabiano做了一个简单的基准实验,在没有外部缓存支持的情况下,单机实例每秒可以处理587次MySQL访问请求)。

综合以上分析,Fabiano认为Rails适用的场景包括:

  • 数据库依赖复杂的应用
  • 业务逻辑和验证复杂的应用
  • 并发请求数不是关键因素的应用
  • 需要管理界面的应用

而Node.js适用的场景包括:

  • API
  • 实时web/移动应用
  • 处理大量并发请求的应用

考虑到Rails和Node.js发展的时间,这种基于现状的比较可能对Node.js不利。毕竟,Node.js相对Rails来说算得上是个小孩,许多地方还需要更加成熟。就Fabiano提到的各种库来说,Node.js通过NPM平台正在快速开发各种第三方的模块,包括数据库连接、网络服务器、LDAP等,随着这些模块的完善,Node.js在企业应用中会更加容易使用。另外,对于稳定性来说,Rails目前已经广泛应用于各领域,经受了实战的考验,其可靠性随着版本的不断升级和补丁而得到保证。相比而言,NodeJS虽然在一些企业中发挥了作用,但是应用面还不够广泛,所以其稳定性受到社区的质疑。这是新平台发展的必经之路。现在Node.js逐渐普及,反馈的渠道有很多,问题修补也比较及时,再加上Node.js的设计初衷就是大并发量的Web服务应用,所以其可靠性会逐渐改善并得到社区的认可。

提到Node.js的发展,人们首先会想到它所依赖的Javascript引擎V8,该引擎最初是Google用于自身浏览器Chrome中,作为一款为 Web浏览器设计的Javascript引擎,其可靠性是否适应于服务器端呢?几个月之前,Node.js东家Joyent的创始人Jason与 Yahoo!副总裁Bruno就V8和Node.js的关系发起了一场讨论。最近Bruno又在博客中提到了一些近况,他表示Yahoo将继续支持Node.js的发展,目前团队内部的成果非常显著,但暂时不能过多透露。至于他最初对V8的依赖担忧,Bruno认为形势发生了改变。首先,Google对V8的缺陷修补非常支持支持和迅速。再次,Mozilla已经着手准备创建基于Spidermonkey的Node.js实现。Yahoo!和Joyent正在密切合作发展Node.js。

读者对于Node.js和Rails的关系如何看待?

崔康 热情的技术探索者,资深软件工程师,InfoQ编辑,从事企业级Web应用的相关工作,关注性能优化、Web技术、浏览器等领域。

NodeJS性能比 Python快八倍(Python比Ruby快) 发表人 曹 云飞 发表于
Re: NodeJS性能比 Python快八倍(Python比Ruby快) 发表人 朱 敏 发表于
Re: NodeJS性能比 Python快八倍(Python比Ruby快) 发表人 haoxiang zhang 发表于
Re: NodeJS性能比 Python快八倍(Python比Ruby快) 发表人 D destinyd 发表于
js胜 发表人 Ting Wang 发表于
  1. 返回顶部

    NodeJS性能比 Python快八倍(Python比Ruby快)

    发表人 曹 云飞

    结论已经很清楚了

  2. 返回顶部

    Re: NodeJS性能比 Python快八倍(Python比Ruby快)

    发表人 朱 敏

    我也是,心里扑通一跳。

    不过,最后大家出来都是HTML+CSS,搞清楚你想做什么是最重要(难)的。

  3. 返回顶部

    Re: NodeJS性能比 Python快八倍(Python比Ruby快)

    发表人 haoxiang zhang

    根据整个下结论,很扯

  4. 返回顶部

    Re: NodeJS性能比 Python快八倍(Python比Ruby快)

    发表人 D destinyd

    那为什么还那么多人用RUBY而不是全部用PYTHON
    还讨论这个问题,感觉很大学生。

  5. 返回顶部

    js胜

    发表人 Ting Wang

    前后端统一的语言优势太大