有人能给我解释一下/重定向一下,Node和Node的区别是什么吗.js的异步模型(非阻塞线程)与任何其他语言相比,例如c#处理I/O的异步方式.在我看来,这两种语言都是相同的模型.请建议.

推荐答案

两种模式非常相似.有两个主要区别,其中一个很快就会消失(对于"很快"的一些定义).

一个区别是 node .js是异步单线程的,而ASP.NET是异步多线程的.这意味着 node .js代码可以做出一些简化的假设,因为你的代码总是在同一个线程上运行.所以当你的ASP.NET代码awaits,它可能会在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明确启用发电机支持.

Node.js相关问答推荐

Azure虚拟机上的JS Express:可疑请求?

链接Inbox类方法,范围在哪里以及为什么发生变化?

如何使用NodeJS处理来自请求的单个或多个文件?

使用xml-crypto时出现NodeJS XPath解析错误

JEST模拟由http服务器控制器导入的ES模块

关于Node.js中的AES加密库的问题

通过 Node js 中的 TBA 执行 netsuite REST upsert 操作出现 401 错误

Socket.io 未将用户加入给定房间

使用 Google Drive API 按文件夹 ID 检索文件夹的内容

如何从mongoose 对象内嵌套的数组中提取数组元素?

在生产环境中,Nest实例启动时抛出不完整的导入错误

nyc 代码覆盖不适用于 NodeJs Express 服务器

如何在没有 Typescript 的情况下以交互方式使用 Create-React-App?

从数据库读取数据并将其作为可下载的 zip 文件发送

Node js中向rest服务发送https请求的步骤

使 pm2 登录到控制台

如何使用 Puppeteer 从输入中删除现有文本?

NODEJS 进程信息

需要 node-gyp 的 npm install 在 Windows 上失败

路由后的 Node Express 4 中间件