写点什么

Node.js 与 Rails 如何选择?

2011 年 9 月 13 日

按照 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 的关系如何看待?

2011 年 9 月 13 日 07:5310101
用户头像

发布了 501 篇内容, 共 211.4 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
发现更多内容

公众号高频被调整,它不是企业生产文章的机器

Linkflow

客户数据平台 CDP 私域流量

区块链数字钱包系统开发方案,区块链钱包APP源码

13530558032

《JAVA多线程设计模式》.pdf

田维常

多线程

11月阿里Spring全家桶+MQ微服务架构笔记:源码+实战

小Q

Java 学习 程序员 面试 微服务

媲美物理机,裸金属云主机如何轻松应对11.11大促

京东智联云开发者

云计算 服务器 云主机 裸金属容器

Springboot过滤器和拦截器详解及使用场景

996小迁

Java 编程 架构 面试 springboot

DataPipeline CTO 陈肃:构建批流一体数据融合平台的一致性语义保证

DataPipeline

数据融合

UNISKIN COO Kevin|营销数字化:数据沉淀和数据系统化运营一定要趁早!

Linkflow

营销数字化 客户数据平台 CDP

面试官问:如何排除GC引起的CPU飙高?我脱口而出5个步骤

田维常

cpu飙满

6. 自定义容器类型元素验证,类级别验证(多字段联合验证)

YourBatman

Hibernate-Validator Bean Validation 多字段联合验证

微信官方将打击恶意营销号:自媒体不可过度消费粉丝

石头IT视角

DataPipeline CPO 陈雷:实时数据融合之法,稳定高容错

DataPipeline

数据融合

DataPipeline CPO 陈雷:实时数据融合之法,便捷可管理

DataPipeline

数据融合

DataPipeline CPO 陈雷:实时数据融合之道,博观约取,价值驱动

DataPipeline

数据融合

快进收藏吃灰!字节跳动大佬用最通俗方法讲明白了红黑树算法

小Q

Java 学习 架构 面试 算法

【JDD京智大咖说】AI 未来,路在何方?NLP、CV 技术的探索与展望

京东智联云开发者

人工智能 CV nlp

AI技术在音乐类产品中的应用场景

HIFIVE嗨翻屋

人工智能 AI 音乐 音乐制作

合约跟单源码案例,合约跟单模式开发

13530558032

强化学习入门必看之强化学习导识

Alocasia

人工智能 学习

阿里达摩院副院长亲自所写Java架构29大核心知识体系+大厂面试真题+微服务

Java架构追梦

Java 学习 阿里巴巴 架构 面试

前嗅教你大数据——史上最全代理IP服务商对比

前嗅大数据

大数据 数据采集 动态代理 静态代理 代理IP

架构师训练营第九周作业

_

极客大学架构师训练营 第九周作业

接口测试学习之json

测试人生路

json 接口测试

Scrum指南这么改,我看要完蛋!

华为云开发者社区

Scrum 敏捷 改版

DataPipeline 王睿:业务异常实时自动化检测 — 基于人工智能的系统实战

DataPipeline

大数据

号外!5G+X联创营华为云官网上线,5G 创业春天来了!

华为云开发者社区

华为 程序员 AI 5G

企业工作流设计原则及多项目整合开发注意事项

Marilyn

敏捷开发 工作流 企业开发

区块链数字货币钱包开发,去中心化钱包搭建app

WX13823153201

区块链社交即时通许系统开发,区块链社交app开发价格

13530558032

万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)

源码兴趣圈

架构 AQS ReentrantLock JUC CLH

数字货币交易所开发有哪些模式?区块链交易平台

13530558032

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Node.js与Rails如何选择?-InfoQ