实现Node.JS在ASP.NET MVC应用程序中提供的相同性能

时间:2015-07-06 12:47:28

标签: asp.net-mvc node.js

这是我们在Node.JS网站上看到的

  

Node.js®是一个基于Chrome JavaScript运行时的平台,可轻松实现   构建快速,可扩展的网络应用。 Node.js使用了   事件驱动的非阻塞I / O模型,使其轻量级   高效,非常适合运行的数据密集型实时应用程序   跨分布式设备。

是否可以使用ASP.NET MVC开发非阻塞应用程序并获得相同的性能(每秒处理相同数量的请求并处理它们)?

ASP.NET MVC控制器中使用async/await帮助获得相同的性能(处理相同数量的请求并处理它们) Node.JS 应用程序还提供?

1 个答案:

答案 0 :(得分:1)

  

是否可以使用ASP.NET MVC开发非阻塞应用程序并获得相同的性能(每秒处理相同数量的请求并处理它们)?

从技术上讲,这个问题是无效的,因为可能会有一些负载模式/服务器配置/状态管理设置,Node.js会更快,有些ASP.NET会更快。

从体系结构的角度来看,是的,async / await为您提供了与Node.js处理请求类似的方法,但有一个重要区别。 Node.js是严格单线程的(仅使用其线程池来卸载将异步完成的工作如果存在异步API的话)。因此,它一次只能为单个请求执行应用程序代码。 ASP.NET遵循更复杂的模型:它可以同时并行异步。

换句话说,Node.js使用单线程异步,而ASP.NET使用多线程异步。

所以,我希望Node.js和ASP.NET在单核处理器上表现相似,ASP.NET在多核上做得更好(多核的常见Node.js方法是使用前面的负载均衡器运行多个Node实例,但随后缓存和服务器状态变慢。当然,只有一种方法可以测试它们如何为您的应用程序执行编写一个合理的测试用例并运行它。