EventMachine vs Node.js

我将开发一个协作网站,其中一个功能将是实时更改的协作编辑。即,当两个或多个用户正在编辑同一个文档时,他们可以在发生时立即看到彼此的变化。 我对Ruby on Rails有一些经验,所以我在考虑使用EventMachine,但是围绕Node.js的所有这些炒作,我知道考虑使用它。那么,使用Node.js而不是EventMachine的主要好处是什么? TL;博士 EventMachine和Node.js之间的主要区别是什么(除了语言)?     
已邀请:

bab

EventMachine与Rails无关,除了它们都是用同一种语言编写的。您可以像Node.js一样使用EventMachine;您所要做的就是不向您的项目添加库。根据我的经验,EventMachine库(如em-http)比Node的任何东西都要好得多。你可以使用光纤而不是回调来避免回调地狱。由于所有的回调,在Node中几乎不可能完成异常处理。 Plus Ruby是一种比Javascript更好,更完整的语言。     
我倾向于“使用你所知道的”(即使它是一个更重的架构)。因此,我认为它不像“EventMachine vs NodeJS”那么简单。主要是,差异可归纳为: NodeJS是一种框架/语言,用于处理JavaScript中基于事件的编程。这是它的推动力。这不是一个思想或第三方机制。它已经融入了语言。您创建回调/事件,因为这是语言的构建方式。它不是第三方插件,也不会改变您的工作流程。 EventMachine是Ruby中的一个gem,它使开发人员能够访问基于事件的编程模型的一些优点。它经过大量使用和测试,但没有直接用于语言。两者都被锁定到一个CPU,但是在Nodes核心的事件编程中,它仍然有一个优势。 Ruby并没有考虑并发性。 也就是说,可以克服技术问题。应该指导您做出决定的更重要的问题(我认为)是: 您的生产环境会是什么样子?您是否完全控制服务器?你可以随意举办吗?或者它将在共享系统上开始,然后你必须扩展它? 您团队中的所有开发人员是否都能够非常快速地学习新语言?他们能够以多快的速度理解基于事件的语言,例如中间层的JavaScript? 您是否需要Rails为您提供的所有架构(完整的测试框架,脚手架,模型,控制器等)?或者那有点矫枉过正? 两者之间存在相当多的技术差异。一种是语言,一种是框架。真的,你想要运行的堆栈有多重?您的开发人员需要做多少学习?你想要一个完整的堆栈给你很多细节,你可能不会使用,或者你想要一个非常快速和并发运行的裸骨设置,即使你可能需要编写额外的锅炉板代码并学习新的语言? 虽然Rails并不像某些Web应用程序架构那么重,但您仍然需要比处理NodeJS中类似数量的吞吐量更多的处理器能力。假设两个系统的质量代码。写在任一堆栈上的错误代码将阻止堆栈闪亮。这真的归结为 - 你真的想学习一种全新的做事方式,或者利用你目前对Ruby的理解来快速实现目标吗? 我知道这不是一个明确的答案,但我希望这有助于指导您做出决定!     
值得一提的是制作故事。 EM和大多数Rack一样,有大量的测试和监控工具可供测试,而Node.js在这方面做得很差。 在撰写本文时,似乎几乎不可能从Node获得明确的指标来回答诸如“我是否需要扩展”之类的问题。 Joyent这样的选择开始形成,并且总是自己动手论证,但是NewRelic等工具附近没有任何选择。 从性能/可配置性的角度来看,Node.js是非常好的,但我个人不会在生产中将其托管。     
Node.js的 您可以更好地控制对正在进行的操作的低级别控制。您可以在node.js之上构建通用库,以根据自己的喜好调整抽象级别。例如,您可以使用connect或express,具体取决于您是否需要为您编写的视图引擎。 您可以使用socket.io或现在,具体取决于您希望抽象的客户端 - 服务器连接的数量。您可以选择包含众多MVC库中的任何一个或编写自己的库。 事件机 一个异步IO库,就像node.js一样 它归结为Ruby vs JavaScript首选项,抽象或缺少抽象所需的灵活性,以及​​是否要将节点用作实际的Web服务器。     
已经提出了一个混乱的详细视图......只是个人观点 [] node.js会更好,如果你准备学习和实验比你想象的更多,因为: 它的线程机制很棒(灵感来自'erlang') 您可以(轻松地)构建一个特定于目的的服务器,这将是真正有效的     

要回复问题请先登录注册