这是我们在Node.JS网站上看到的
Node.js®是一个基于Chrome JavaScript运行时的平台,可轻松实现 构建快速,可扩展的网络应用。 Node.js使用了 事件驱动的非阻塞I / O模型,使其轻量级 高效,非常适合运行的数据密集型实时应用程序 跨分布式设备。
是否可以使用ASP.NET MVC开发非阻塞应用程序并获得相同的性能(每秒处理相同数量的请求并处理它们)?
在 ASP.NET MVC控制器中使用async/await帮助获得相同的性能(处理相同数量的请求并处理它们) Node.JS 应用程序还提供?
答案 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实例,但随后缓存和服务器状态变慢。当然,只有一种方法可以测试它们如何为您的应用程序执行:编写一个合理的测试用例并运行它。