什么时候线程框架比事件驱动框架更好?(即什么时候rails比node.js好?)

Dra*_*ith 9 django frameworks ruby-on-rails event-driven node.js

我理解什么是线程框架(Rails,Django,Symfony2,...).我理解事件驱动的框架是什么(Node.js,EventMachine,Twisted,...)以及为什么它对于实时,聊天,速度......而言非常好.此外,它们似乎不会对正常用例造成问题.所以:

  • 事件驱动框架的缺点是什么?
  • 我什么时候应该更喜欢Rails到Node.js?
  • 为什么不是所有使用EventMachine,Twisted或Node.js编写的新Web服务器?
  • 诸如Django或Rails等着名框架会成为事件驱动还是死亡?

Nat*_*ate 13

那么事件驱动框架的缺点在哪里呢?

  1. 熟悉.因为事件驱动的Web编程是如此不同,所以在程序员熟悉之前还需要一段时间.当你在截止日期前工作时,使用你知道的东西会更容易.
  2. 图书馆支持.Node拥有大量的模块,但要想赶上Ruby和Python还有很长的路要走.更新:Node现在拥有比Python或Ruby更多的已发布模块.
  3. 部署.IT人员习惯于线程化框架.要利用事件驱动的框架,您需要从上到下进行异步.现在你可以在Node.js中开发,但是你能够有效地部署它,还是你必须管理自己的服务器?
  4. 毫无根据的担忧.看似问题的事情,但不是真的:
    • 事件驱动的编程对CPU密集型应用程序不利:原因是CPU密集型计算会阻塞服务器.这是完全正确的,但实际上,它通过产生另一个进程并将其作为I/O处理来克服,例如,通过使用Node child_process.exec.
    • 事件驱动编程仅适用于需要高并发性的应用程序:原因在于事件驱动编程比传统的Web应用程序编程"更难",因此除非您有充分的理由,否则不值得做.我个人认为这不是案例事件驱动的编程并不困难,但它是非常不同的.在某些时候,一大批程序员将熟悉事件驱动的方法,这种担忧将会消失.
    • 事件驱动的编程是一堆嵌套的回调.当您第一次学习它时可能会这样,但最终您将发现如何以可读的方式构建代码.
  5. 文档.Node及其第三方库的文档非常糟糕,通常只包含一个README.md.来自Python世界,我们习惯于优秀的文档,这是一个很大的缺点.这是慢慢好转(我们需要更多的文档这样的).

我什么时候应该更喜欢Rails到Node.js?

  • 当您或您的团队更喜欢Ruby而非JavaScript时.
  • 当您或您的团队不熟悉Node并且您需要完成工作时.
  • 当您需要使用Node尚未拥有的Rails中的功能时.
  • 当您需要部署到现有的基于Rails的基础架构时.
  • 当您必须说服管理层您应该使用Node.js时,如果项目失败,您不希望成为堕落者.

为什么所有新的Web服务器都不是用EventMachine,Twisted或Node.js编写的?

往上看.

Django或Rails这个着名的框架会变成事件驱动还是会死?

Django和Rails将会存在很长时间.这些框架中有很多应用程序,没有理由重写它们.并且有一个庞大的人才库,在开发新的Web应用程序时经常需要考虑.

(但是请看Django的首席开发人员的Quora答案,支持Node).

  • 人们想到了quora链接:节点还有另一个关键特性,这甚至是不公平的优势."一种语言来统治他们".一旦熟悉了node.js和js本身,您就可以:编写前端/客户端应用程序,服务器端代码,移动应用程序(例如,使用phonegap),桌面应用程序(例如,使用node-webkit),查询你的数据库(mongoDBs查询语言*是*javascript),并享受webservices和JSON的乐趣,因为当你从上到下使用JS时,这几乎是不费吹灰之力. (4认同)