Node.js的事件驱动有什么不同?我们不能在ASP.Net的HttpAsyncHandler中这样做吗?
我在网络编程方面不是很有经验,
我还没有在Node.js中编写任何代码,只是对事件驱动的方法感到好奇。看起来确实不错。
本文解释了当我们使用基于线程的方法处理请求时可能发生的一些不好的事情,并且应该选择事件驱动的方法。
在基于线程的情况下,收银员/线程一直困扰着我们,直到我们的食物/资源准备就绪。在事件驱动下,收银员将我们送到请求队列之外的某个地方,这样我们就不会在等待食物时阻止其他请求。
要扩展基于阻塞线程,需要增加线程数。
对我而言,这似乎是一个不正确使用线程/线程池的错误借口。
难道不能使用IHttpAsyncHandler正确处理?
ASP.Net接收请求,使用ThreadPool并运行处理程序(BeginProcessRequest),然后在其中我们使用回调加载文件/数据库。那个线程应该可以自由处理其他请求。文件读取完成后,再次调用ThreadPool并执行剩余的响应。
对我来说没有那么不同,那为什么不那么可扩展呢?
我所知道的基于线程的缺点之一是,使用线程需要更多内存。但只有这些,您才能享受多核的好处。我怀疑Node.js根本没有使用任何线程/核心。
因此,基于事件驱动vs基于线程(不要带“因为它是Javascript和每个浏览器...”的论点),有人可以指出我使用Node.js而不是使用Node.js的实际好处是什么现有技术?
这是一个很长的问题。谢谢 :)
没有找到相关结果
已邀请:
4 个回复
抽法
和
并使用回调,很多开发人员会感到困惑。以普通方式编写的ASP.NET项目无法由普通的ASP.NET开发人员维护。 至于线程和核心。 Node.js是单线程的,可以通过创建多节点进程进行扩展。如果你有一个16核,那么你运行你的node.js服务器的16个实例,并在它前面有一个Node.js负载均衡器。 (如果你愿意,也许是一个nginx负载均衡器)。 这一切都是从一开始就以极低的水平写入平台。这不是后来的一些功能。 其他优点 Node.js还有更多内容。以上只是Node.js处理事件循环的方式比使用ASP.NET中的异步功能更好的原因。 性能。它很快。真快。 Node.js的一大优势是它的低级API。你有很多控制权。 您将整个HTTP服务器直接集成到您的代码中,然后外包给IIS。 你有整个nginx与Apache的比较。 整个C10K挑战由节点处理,但不由IIS处理 AJAX和JSON通信感觉自然而轻松。 实时通信是Node.js的一大优点。它是为它而制造的。 与基于文档的nosql数据库很好地配合使用。 也可以运行TCP服务器。可以进行文件写入访问,可以在服务器上运行任何unix控制台命令。 您可以使用例如CouchDB和map / reduce在javascript中查询数据库。您使用JavaScript编写客户端。在Web堆栈上进行开发时,没有上下文切换。 丰富的社区驱动的开源模块。 node.js中的所有内容都是开源的。 占地面积小,几乎没有依赖性。您可以自己构建node.js源代码。 Node.js的缺点 这个很难(硬。它很年轻。作为一名熟练的JavaScript开发人员,我在使用Node.js编写网站时遇到了困难,因为它具有低级特性和我的控制级别。它感觉就像C.很多灵活性和力量要么用于我,要么挂我。 API未冻结。它正在迅速变化。我可以想象必须在5年内完全重写一个大型网站,因为届时Node.js的数量会有所改变。它是可行的,您只需要知道node.js网站上的维护并不便宜。 进一步阅读 http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ http://blip.tv/file/2899135 http://nodeguide.com/
凰葱崎济邯
辅奈
艰管垮淮