我打算开发一个协作网站,其中一个特点是具有实时更改的协同编辑功能。即当两个或多个用户同时编辑同一文档时,他们可以立即看到对方所做的更改。我对Ruby on Rails有一些经验,因此我正在考虑使用EventMachine,但由于Node.js周围存在如此之多的炒作,我现在正在考虑使用它。那么,与EventMachine相比,使用Node.js的主要好处是什么?
简而言之:除了语言之外,EventMachine和Node.js之间的主要区别是什么?
我打算开发一个协作网站,其中一个特点是具有实时更改的协同编辑功能。即当两个或多个用户同时编辑同一文档时,他们可以立即看到对方所做的更改。我对Ruby on Rails有一些经验,因此我正在考虑使用EventMachine,但由于Node.js周围存在如此之多的炒作,我现在正在考虑使用它。那么,与EventMachine相比,使用Node.js的主要好处是什么?
简而言之:除了语言之外,EventMachine和Node.js之间的主要区别是什么?
除了它们都是使用相同的语言编写之外,EventMachine与Rails没有任何关系。你可以像Node.js一样轻松使用EventMachine,只需不向项目添加库即可。在我的经验中,EventMachine库(例如em-http)比Node的任何东西都要好。您可以使用纤程而不是回调来避免回调地狱。由于所有的回调,完整的异常处理在Node中几乎不可能实现。此外,Ruby是一种比JavaScript更好、更完整的语言。
我倾向于“使用自己熟悉的东西”(即使它是一个较重的架构)。因此,我不认为这很简单,“EventMachine vs NodeJS”。主要的区别可以概括为:
话虽如此,技术问题是可以克服的。从我的角度来看,应该指导您决策的更重要的问题是:
两者之间有相当多的技术差异。一个是语言,一个是框架。真正重要的是你想运行多重的堆栈?你的开发人员需要学习多少?你需要一个完整的堆栈来提供许多漂亮的特性,而你可能不会使用它,还是需要一个精简的设置,以极快且并发地运行,即使你可能需要编写额外的样板代码和学习一种新语言?
Rails虽然不像某些Web应用程序架构那样笨重,但您仍然需要比使用NodeJS处理类似吞吐量时需要更多的处理器功率,前提是两个系统都使用质量代码。无论是在哪个堆栈上编写的糟糕代码都会阻止该堆栈发挥优势。这真的取决于 - 您是否真的想要学习全新的做事方式,还是利用您对Ruby的当前理解快速启动项目?
我知道这并不是一个明确的答案,但我希望这可以帮助您做出决定!
Node.js
使用 Node.js,您可以更好地控制底层内容。 您可以包含通用库来构建在 Node.js 之上,以调整您的抽象级别以满足自己的喜好。例如,您可以使用 connect 或 express,具体取决于您是否需要为您编写视图引擎。您可以使用 socket.io 或现在,具体取决于您想要多少客户端 - 服务器连接抽象化。您可以选择包含任何数量的 MVC 库或编写自己的库。
Event-Machine
这是一个异步 IO 库,与 Node.js 类似。
这取决于 Ruby vs JavaScript 的偏好,以及您想要多少灵活性和抽象化,以及您是否想将 Node 用作实际的 Web 服务器。
已经提出了混淆的详细视图...只是个人观点
[] 如果您准备学习和尝试更多,那么 node.js 将是更好的选择,因为:
它的线程机制非常棒(受 'erlang' 启发)
您可以轻松构建特定于目的的服务器,这将真正提高生产力