有人能给我解释一下/重定向一下,Node和Node的区别是什么吗.js的异步模型(非阻塞线程)与任何其他语言相比,例如c#处理I/O的异步方式.在我看来,这两种语言都是相同的模型.请建议.
有人能给我解释一下/重定向一下,Node和Node的区别是什么吗.js的异步模型(非阻塞线程)与任何其他语言相比,例如c#处理I/O的异步方式.在我看来,这两种语言都是相同的模型.请建议.
两种模式非常相似.有两个主要区别,其中一个很快就会消失(对于"很快"的一些定义).
一个区别是 node .js是异步单线程的,而ASP.NET是异步多线程的.这意味着 node .js代码可以做出一些简化的假设,因为你的代码总是在同一个线程上运行.所以当你的ASP.NET代码await
s,它可能会在different个线程上恢复,这取决于您如何避免线程本地状态之类的事情.
然而,同样的差异也是ASP的优势.NET,因为它意味着async
个ASP.NET可以扩展到服务器的全部功能.如果你考虑一个8核心的机器,那就是ASP.NET可以同时处理8个请求的同步部分.如果你放一个 node .js在增强的服务器上运行,那么实际运行8个单独的 node 实例是很常见的.js并添加nginx之类的东西,或者一个简单的定制负载平衡器,用于处理该服务器的路由请求.这也意味着,如果您希望在服务器范围内共享其他资源(例如缓存),那么您也需要将它们移出proc.
另一个主要区别实际上是语言上的差异,而不是平台上的差异.JavaScript的异步支持仅限于回调和promise ,即使你使用最好的库,当你做任何非琐碎的事情时,你仍然会得到非常笨拙的代码.相比之下,C#/VB中的async
/await
支持允许您编写非常自然的异步代码(更重要的是,maintainable异步代码).
然而,语言差异正在消失.JavaScript的下一个版本将引入生成器,它(连同一个助手库)将在 node 中生成异步代码.js就像现在使用async
/await
一样自然.如果您现在想玩"即将到来"的东西,那么V8 3.19中添加了生成器,它被卷到了Node中.js 0.11.2(不稳定分支).通过--harmony
或--harmony-generators
明确启用发电机支持.