除了可扩展性之外,使用Node.js的一些架构原因是什么?

17

最常见的关于使用node.js的原因是它具有事件驱动和非阻塞I/O模型,从而实现高可伸缩性。我想了解其他非可伸缩用例(除了作为一般的服务器端JavaScript引擎之外)。

  1. 如果可伸缩性不是我的问题,node.js是否有其他用途?
  2. 如果答案为肯定,那么它们是什么?
  3. 对于特定类型的应用程序架构,node.js的使用是否合适?例如,类似于一些键/值(nosql - 呃,我讨厌这个术语)数据库的用途,除了可伸缩性之外还有其他用途。
6个回答

8
我的尝试Node的原因是它非常容易在服务器和客户端之间发送JSON数据,特别对于AJAX请求。如果你使用像MongoDB这样将数据存储为JSON对象的数据库,那么你永远不必担心转换或解析数据的问题。
如果您的网站使用大量ajax,并且将数据作为JSON对象发送(而不是XML或纯文本),那么使用Node.js将节省相当多的工作量。

在您的使用情况中,您是将node.js作为唯一支持应用程序的Web服务器,还是只有在需要更好的JSON处理时才使用它? - Howiecamp

4

关于这篇博客文章有两点需要注意(它略微有些过时):node 0.2.x 在 cygwin 上运行良好,并且使用 jsdom 可以轻松进行服务器端 DOM 操作。 - generalhenry
除了速度或效率得到提高的情况外,还有哪些适用于特定类型应用程序的用例呢?例如,Node.js 对像 StackOverflow.com 这样的应用程序有价值吗? - Howiecamp
@generalhenry:是的,我知道,有些东西改变了,但基础还是可以的。@Howiecamp:不,用例特别是当你有高流量并且想要在1次请求中发送多个请求时,这就是node.js的优势 - 多线程。 我喜欢将其用于长期连接,需要在长时间内传递数据的情况下。 希望这可以帮到你 :) - petermanser

2
我能想到一个原因,但并不太深入。基本上,如果您正在开发RIA,则整个堆栈都可以是JavaScript。这可能具有一定价值。
但我会质疑自己的答案,即使它使服务器端代码更容易让客户端开发人员访问,他们仍然需要了解其服务器堆栈的工作方式。因此仍然需要学习。

2
要准确地说,我认为你所提到的通用服务器端JavaScript引擎应该是V8,而根据其创造者所言,Node是为“编写网络程序”而构建的。
基于他的许多评论,我不认为他像我们许多人那样广泛地看待它,但他认识到它可以走到哪里。[我不能代表任何其他人——这只是我根据我看到的文学和演示所作的解释。]
因此,它从某种较低的级别处理事情,使HTTP成为一流公民,只是碰巧真的很酷,我认为这足以成为我们大多数人的“用例”。;)
它确实有一个学习曲线,并且由于其快速发展而不是最稳定的构建平台。我相信时间会告诉我们它在哪里最有用。
目前,由于其轻量级、异步特性,人们正在使用它进行“实时”应用程序,以及一般的Web开发,尽管在我看来,它的甜点仍然是其最初声明的目的。

1

除了非阻塞 I/O 模型、可扩展性和所有那些“主要原因”之外,我喜欢 node.js 的是:

  • 它框架的轻量级特性。基础知识易于学习。
  • 开发者社区在 github 上构建了大量有用的模块和库,这些模块和库扩展了 node.js 的轻量级核心和其功能。
  • 使用它可以很容易快速地构建服务器端和实时系统(例如基于 http 或 socket),而无需了解复杂的库。

@HowieCamp - 例如,我可以想象node.js用于像stackoverflow.com这样的网站上进行实时更新、聊天和长轮询。 - yojimbo87

1

我喜欢使用NodeJS编写测试工具,因为你可以很快地编写存根/服务器/客户端。而且你可以轻松地驱动你的应用程序。我可以轻松地编写脚本来测试第三方后端服务器对我的应用程序的性能。我还使用它来驱动我的应用程序。我可以使用setTimout执行复杂的客户端服务器场景,根据任何我想要的逻辑触发多个事件并进行规模化测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接