除了可伸缩性之外,使用node.js的一些架构原因是什么?

时间:2011-01-25 19:40:05

标签: javascript node.js nonblocking serverside-javascript evented-io

我读到的关于为什么使用node.js的最常见主题是由于它是偶数的非阻塞I / O模型而具有高可伸缩性。我正在尝试了解其他非可伸缩性用例(除了用作通用服务器端javascript引擎)。

  1. 如果可扩展性不是我的关注点,node.js是否还有其他用例?
  2. 如果是#1,那么它们是什么?
  3. node.js用法是否适用于任何特定类型的应用程序架构?例如。类似于某些键/值(nosql - 我讨厌那个术语)数据库是如何有用的,除了可伸缩性的原因。

6 个答案:

答案 0 :(得分:8)

我尝试节点的原因是,在服务器和客户端之间为ajax请求发送JSON数据非常容易。 如果您使用类似MongoDB的东西,它也将数据存储为JSON对象,您就不必担心翻译或解析数据。

如果您的网站使用了大量的ajax,并且您将数据作为JSON对象(而不是XML或纯文本)发送,那么node.js将为您节省大量精力。

答案 1 :(得分:4)

我认为此博客文章总结得很好: http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb

简而言之(pro node.js):

  • 速度
  • Javascript(特别是如果你已经知道的话)
  • 效率

node.js非常棒。试试看! :)

答案 2 :(得分:2)

我能想到一个原因,但不是很深刻。基本上,如果您正在开发RIA,您的整个堆栈可以是javascript。这可能有一些价值。

但我怀疑自己的答案,即思想是,即使它使客户端开发人员更容易访问服务器端代码,他们仍然需要了解他们的服务器堆栈是如何工作的。所以仍然有一些学习。

答案 3 :(得分:2)

准确地说,我认为你问题中的一般服务器端JavaScript引擎将是V8,而根据它的创建者Node是为脚本网络程序构建的。"

基于他的许多评论,我不相信他像我们许多人那样广泛地看待它,但认识到它可以去哪里。 [我不能代表任何人说话 - 这只是我根据我见过的文字和演示文稿进行的解释。]

因此,它从较低的层面处理事物,使HTTP成为一流的公民,恰好真的很酷,我认为这足以使用#34;用例"对于我们大多数人来说;)

它确实有学习曲线,并且由于其快速发展而不是最稳定的平台。我相信时间会告诉它最有用的地方。

现在人们正在使用它来实现"实时"应用程序由于其轻量级,异步性以及一般的Web开发,尽管IMO的最佳点仍然是其最初声明的用途。

答案 4 :(得分:1)

除了非阻塞I / O模型,可伸缩性以及所有“主要原因”之外,我喜欢node.js:

  • 它的框架的轻量级特性。基础知识很容易学习。
  • 开发人员社区在github上构建了大量有用的模块和库,这些模块和库正在扩展node.js轻量级核心及其功能。
  • 在不了解复杂库的情况下构建服务器端和实时系统(例如基于http或套接字)非常简单快捷。

答案 5 :(得分:1)

我喜欢使用NodeJS编写测试工具,因为您可以非常快速地编写存根/服务器/客户端。您可以轻松驾驶您的应用程序。我可以轻松编写第三方后端服务器脚本,对我的应用程序进行性能测试。我也用它来驱动我的应用程序。我可以使用setTimout执行复杂的客户端服务器方案,以根据我想要的任何逻辑触发多个事件并对其进行大规模测试。