刚看个贴: http://www.infoq.com/news/2012/10/Ruby-on-Rails-Node-js-LinkedIn
其中的一段话很吸引眼球啊: Better performance, Node.js being up to 20x faster than Rails for certain scenarios Using only 3 servers instead of 30, leaving room for a 10x traffic growth Front-end JavaScript engineers could be used for back-end code, and the two teams were actually merged into one
大家来讲讲 开发速度,安全,部署,效率,第三方包 等等
Node.js 是纯粹的异步执行 web framework,如果考虑运行效率,就用呗,但是 Rails 在开发速度和使用方便性(特别是调试)上绝对优于 Node。
ruby 如果基于 event machine,和 nodejs 的差别也不大,这个以前在杭州活动的时候演示过。 不过,除了 rails 本身,我们还用了很多三方库,这些 gem 的并发方案是基于线程甚至进程的,如果改成事件驱动模式可能会有问题
原文的那些数字要用“批判和学习”的眼光来看的。他们改了后把之前 server 端生成 html 的大量工作改成了 server 输出数据,客户端来展现。这个改变即使保留 rails 不用 node,也能极大减轻服务端的任务。
Node 的异步机制和资源耗用等确实很棒,但如果产品本身就大部分时间耗在数据库、服务端计算等方面的话善用缓存、后台任务等 Rails 也能很好的就付。
通常来说,一个大型项目里并非非得用一种语言。 用 Python/Ruby + C,用 Nginx+Lua,用 PHP+node.js 都是很常见的情况。只要架构设计合理,逻辑分层,会很容易把需要高性能运算的作业请求转发给 Node.js、openrestry、C、Java 等后端。 在数据层也是一样的,Memc、Redis、Mongo 等都是很好的数据缓存工具。
补充一下,实际上我觉得 ROR 和 Node.js 没有太大的可比性。ROR 是一个基于 Ruby 的 Framework。而 Node.js 可以算作一个 interpreter。但如果 Node.js 社区搞出个类似 ROR 的 Framework,我估计风暴就要来临了。
#8 楼 @suriv http://expressjs.com/ 有个类 sinatra 的
前端写 js 已经把我折磨够了,后端是绝对不会想用这个语言。事件驱动可以参考。
#10 楼 @suriv 我从没有把我自己定位成后端开发,是 js 这个语言确实糟糕(http://wtfjs.com/),我不会因为浏览器环境没有别的选择而催眠自己这个语言其实很好。
性能问题是多么奢侈,遇到性能问题那天我肯定会放鞭炮的,因为说明应用火了。
#8 楼 @suriv 比 expressjs 更类似 rails 的,有个叫 Tower 的: http://towerjs.org
其实吧,妄图用一种语言或者框架解决所有问题,很傻很天真吧?元方,你怎么看?
比性能,Nodejs 也不见得有多么出色,只是跑 Hello,world 的话,Python 有一个 Web server 也能达到那个水平,Go 和 Erlang 就不用说了。 Nodejs 会火,我认为主要是语言就是 js,这个满足了大部分前端人员的后端梦想,不用去学一门新的语言,也可以完成后端应用。
Front-end JavaScript engineers could be used for back-end code, and the two teams were actually merged into one
不同意这句话,我觉得即使同样使用 JS,编程的思路也是不同的