最佳答案
我在网络编程方面不是很有经验, 我实际上还没有在 Node.js 中编写任何代码,只是对 事件驱动方法事件驱动方法感到好奇。
本文解释了当我们使用基于线程的方法处理请求时可能发生的一些不好的事情,并且应该选择事件驱动的方法。 在线程为基础,收银员/线程是坚持我们,直到我们的食物/资源准备就绪。在事件驱动的情况下,收银员将我们发送到请求队列之外的某个地方,这样我们在等待食物时就不会阻止其他请求。 要缩放基于阻塞线程的线程,需要增加线程的数量。 对我来说,这似乎是一个不正确使用线程/线程池的糟糕借口。
使用 IHttpAsyncHandler 不能正确处理这个问题吗? Net 接收请求,使用 ThreadPool 并运行处理程序(BeginProcessRequest) ,然后在其中用回调加载文件/数据库。然后,该线程应该可以自由地处理其他请求。完成文件读取之后,ThreadPool 再次被调用并执行剩余的响应。 对我来说没什么不同,那么为什么它不是可扩展的呢?
我所知道的基于线程的缺点之一是,使用线程需要更多的内存。但是只有使用这些,您才能享受到多核的好处。我怀疑 Node.js 根本没有使用任何线程/内核。
所以,基于事件驱动和线程驱动(不要提出“因为它是 Javascript 和每个浏览器... ...”的论点) ,有人能告诉我使用 Node.js 而不是现有技术的实际好处是什么吗?
这是一个很长的问题。谢谢:)