`
HelloSure
  • 浏览: 308229 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Rails与Node.js/PHP/Python等对比

阅读更多
转自http://hellosure.github.io/rails/2015/04/01/rails-and-other/

首先,这不是一个比较贴,语言和框架能比较吗?

其次,我也没有全部用过

本文唯一的目的在于提醒自己(还有正在浏览的你)真正所需要关注的究竟是什么

PHP
PHP是simple but dirty的语言,simple是指学习曲线低,主要是因为有大量的基于php的傻瓜式应用,比如wordpress,discuz之类的,如果你只有一般的博客或论坛需求的话,只要善用google,你不用写哪怕一行代码。但是,php本身simple吗?个人认为不是的,原因就不一一列举了。至于dirty,我更觉得说的是他的设计,语言设计比较糟糕,看着常常的下划线连接的函数名就略窥一二,除了有丰富经验的php程序员,很难有人能写出没有严重漏洞的代码。

php开发框架推荐:一等:Yii,Yaf,Symfony;二等:Zend,Cake,CI

Django
Django是基于Python的web开发框架,和Rails十分的相似,几年前,他比Rails好的地方在于Python比Ruby更“可靠”,所谓可靠,就是更多人用,文档更多,更能通过询问找到答案,但随着近几年Ruby的逐渐兴起(大部分靠Rails的带动),越来越多的网站使用Rails。单论语言设计,Python不见得比Ruby简洁,一致性也略逊于Ruby,可以说Python唯一的优势就是有很多serious scientists都在使用它,在科学计算领域占据大半江山,而Ruby是日本人造的(Ruby借鉴了Python)。倘若Ruby是与Python同时代的的欧美国家诞生的语言,相信现在已经没Python什么事儿了。

Rails
Rails是个惊人的web框架,几乎现在所有的主流web框架都能看到Rails的影子,Rails把Ruby的特性用到了极限。Rails能应用于一切大中小型应用,超大规模应用不是单靠任意一个脚本语言就能胜任的。Rails经过多年的发展已经洗尽铅华,现在正处于“一枝独秀”的状态,可以说没有一款框架的综合能力(易用性,简介性,效率,学习曲线等)能超越Rails,NodeJS不行,Django不行,其他“小众”的语言更不行,相反,Rails正处于飞速发展状态,以后超大规模应用的成功案例也会逐一出现。

NodeJS
NodeJS是一款很有前途的Web框架,可惜就是晚生了几年,不然现在也是能和Rails一较高下,相比php,Django和Rails,NodeJS的开源项目相对较少,大型的成功案例也略少,但其设计和性能也是相当简洁和高效。相信不久的将来也会大放异彩。

ASP,JSP等
复杂,臃肿,企业级,靠人数堆积的公司,国企,银行,电商,创业公司用这些的话就是自杀,重要部门不用这些的话也是自杀(招的人不行,只能用售后啦)。

其他
其他语言就是各有各的用途,只不过业务恰好用到该语言罢了,严格的说不能算是专门搞网络开发的,比如Clojure,Io等。这里暂时不讨论了。

总结:

如果让我再次选择学习路线(只有语言,不包括server,db方面)的话,我会

了解一下php,不用深入

了解一下Yii,一款php的MVC框架,不必深入

基本学习Ruby

基本学习Rails

彻底学习Ruby

彻底学习Rails

了解Python,Django,Lisp,Clojure,NodeJS等

-------------------------分割线------------------------------

这篇文章对rails和nodejs的适用场景描述的非常到位。rails和nodejs是最值得关注的两种后台技术。
声明:这篇文章绝不是一篇讨论 NodeJS 和 Ruby on Rails 孰优孰略的檄文。它描述的只是我们做决策过程中的一些思考、决策背后的原因。两种框架都非常优秀,都出色的完成了它们的设计初衷,这也是为什么我们部分的模块仍然运行在NodeJS上的原因。

我是NodeJs的大粉丝,认为这是一项让人非常兴奋的技术,相信它会变的越来越流行。我对这项技术非常的欣赏——尽管我们最近把Targeter App从NodeJS迁移到了Ruby on Rails。

我们当时使用NodeJS开发它的原因很简单。我有一个程序包,能很快的将我们的应用弄上线(我们花了54小时做这个事情),相比起Ruby,我更 常使用的是JavaScript。因为我们的技术架构牵涉到MongoDB,我的这些特长只有在NodeJS环境里才会有意义。然而,随着应用规模的增 长,我认识到,选择NodeJS来实现这个应用是个错误的选择。下面让我来概述一下其中的原因。

NodeJS很适合做那些有大量短生命期请求的应用。对于传统的CRUD应用,它也很好,但不是非常的理想。在 PHP,Ruby,Python语言里都有很成熟、优化的很好的框架来处理这种应用。NodeJS里的所有东西都异步执行的理念对于CRUD应用来说没有 任何效果。其它语言里的流行的框架能提供非常好的缓存技术,你所有的需求都能满足,包括异步执行。

NodeJS是一种非常年轻的技术框架,它的周边程序库都不是很成熟。我说这些并没有任何对那些代码捐赠者冒犯 的意思,他们很优秀,开发出来很多优秀的程序库。然而,大部分程序库需要改进,而NodeJS的这种快速成长的环境意味着每一版升级中都带有大量的变化; 当你使用一种前沿技术时,你十分有必要尽快的紧跟最新的版本。这给创业型的企业带来了很多的麻烦。

另外一个原因是关于测试。NodeJS里的测试框架还不错,但跟Django或RoR平台上的相比还是差一些。对于一个每天都有大量的代码提交、并且在一两天内就要发布的应用来说,程序不能出问题是至关重要的,否则你为此辛苦的努力变得得不偿失。没有人愿意花一天的时间改一些弱智的bug。

最后一点,我们需要的是一种能缓存一切的东西,并且要尽快的实现。尽管我们的应用在增长,每秒钟有上万次的hits,但绝不会出现很大量的访问请求;这不是一个聊天程序!主程序最多时也就达到1000RPS,这样的负载对于Ruby on Rails和Nginx来说算不了什么。

如果你现在还在读这篇文章,那你已经看到了我所有要说的了,你也许非常坚持的想知道我们的应用什么地方还在使用NodeJS。是这样的,我们的应用 由两部分组成。一是界面,用户看到的这部分,二是负责报表管理的部分,以及做日志的功能。后者是NodeJS的一个最佳使用场景,存在有大量的短周期的请 求。这部分的动作需要尽快的执行完成,甚至要在我们的数据推送还没有完成之前。这很重要,当请求执行还未结束,浏览器继续等待响应结束,这会影响用户使用 体验。NodeJS的异步特性救了我们。数据要么被存入数据库,要么被处理掉,当请求一旦执行完成,浏览器就可以开始做其它重要的事情了。

分享到:
评论

相关推荐

    Node.JS V8.12.0

    Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月...Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

    Node.JS V8.12.0 64位

    Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月...Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

    01-Node.js介绍.zip

    Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器...

    node-v8.13.0-linux-x64.tar.gz

    Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,...Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言

    Nodejs安装包

    Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月...Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

    Dash for Mac 2.0.2 文档查看神器 破解版

    Dash Lua Marionette.js Meteor MongoDB Mongoose Mono MooTools MySQL Nginx Node.js OCaml OpenCV OpenGL Perl PhoneGap PHP Play Framework PostgreSQL Processing.org Prototype Puppet Python Qt R Redis Ruby ...

    nodejs的安装使用与npm的介绍

    Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan ...Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的

    Oh my ZSH! 安装脚本

    node.js postgreSQL ruby scala sublime text 2 python ruby on rails php osx heroku django aws kubernetes docker react laravel cloudfoundry Check out our full plugin list → Oh My Zsh...

    后端开发技术要点&详细案例*注意事项

    掌握一个常用的Web框架,如Django或Flask(Python)、Express.js(Node.js)、Spring Boot(Java)、Ruby on Rails(Ruby)等。这些框架提供了许多现成的功能和工具,可以加速开发过程。 3. 学习数据库管理 了解...

    jQuery File Upload文件上传插件使用详解

    jQuery File Upload 是一个Jquery文件上传组件,支持多...兼容任何服务器端应用平台(PHP, Python, Ruby on Rails, Java, Node.js, Go etc.)。 使用方法: 1. 需要加载的js文件: jquey-1.8.3.min.js jquery-ui-widge

    开发者必备75 份速查表

    jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress、Node.js、Oracle、NMAP、Mac OS X、...

    php版旅游网站hfly.zip

    Node.js:一个基于Chrome V8引擎的JavaScript运行时,用于构建高性能的后端服务。 Java:一种广泛用于后端开发的编程语言,常用于构建企业级应用。 Python:一种多用途编程语言,在Web开发中常用。 Ruby on Rails:...

    旅游(php&android&ios),为配合旅游管理功能lvyou_iOS.zip

    Node.js:一个基于Chrome V8引擎的JavaScript运行时,用于构建高性能的后端服务。 Java:一种广泛用于后端开发的编程语言,常用于构建企业级应用。 Python:一种多用途编程语言,在Web开发中常用。 Ruby on Rails:...

    Dash.app.zip

    MySQL, Node.js, Man Pages, Perl, PHP, Python, Ruby, Ruby on Rails, Scala, Sparrow, SQLite, Unity 3D, WordPress, XSLT, XUL。 利用Dash的代码片段管理功能,你可以把日常使用频繁的代码保存起来,然后为其...

    Synalyze It-1.22-xclient.info.dmg

    MySQL, Node.js, Man Pages, Perl, PHP, Python, Ruby, Ruby on Rails, Scala, Sparrow, SQLite, Unity 3D, WordPress, XSLT, XUL。 利用Dash的代码片段管理功能,你可以把日常使用频繁的代码保存起来,然后为其...

    OSS-SDK.pdf

    阿⾥云 对象存储 SDK ⽰例 ⽂档版本:20190920 对象存储 SDK ⽰例 ⽂档版本:20190920 I 法律声明....................................................................................I 通⽤约定................

    云erp源码java-awesome_cqrs:关于CQRS/事件溯源的一些链接

    云erp源码 java 真棒Cqrs 视频 讨论: 幻灯片 - CQRS 和事件采购 其他链接合集 ...Node.js PHP Python Ruby 流星 虚拟机 Java Scala Clojure 。网 F-夏普 夏普 EventStore (geteventstore.com) 服务

    基于云的持续集成项目TravisCI.zip

    比如Ruby语言的:Rails, Rack, Sinatra, RSpec, Cumber, Node.js, PHP的:Symfony2, Doctrine2, Zend Framework 2。 使用Travis-CI的项目可以在说明文件中增加目前版本的构建状态。如:,。 Travis-CI 使用 ...

    程序员必备的66份速查表

    jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress、Node.js、Oracle、NMAP、Mac OS X、...

    程序员/设计师能用上的 75 份速查表

    jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress、Node.js、Oracle、NMAP、Mac OS X、...

Global site tag (gtag.js) - Google Analytics