我听说过 node.js 和基于事件的编程以及诸如节点事件循环之类的东西。在大学时,我记得我制作了一个 ASP.net Web 应用程序。教授说,ASP.net 使用基于事件的架构,服务器端的回调函数由客户端的不同事件触发。
这两种不同的技术是否使用事件和事件驱动编程的概念?
我听说过 node.js 和基于事件的编程以及诸如节点事件循环之类的东西。在大学时,我记得我制作了一个 ASP.net Web 应用程序。教授说,ASP.net 使用基于事件的架构,服务器端的回调函数由客户端的不同事件触发。
这两种不同的技术是否使用事件和事件驱动编程的概念?
是的,节点使用基于事件的架构,其中服务器端的回调函数由客户端的不同事件触发。
为什么 Node.js 很重要。
1)在客户端和服务器上使用相同的语言加速开发。
2) 每个 Web 开发人员都已经了解 JavaScript。在服务器上使用它的过渡路径具有较低的学习曲线。
3) 为 Node.js 构建的模块都是事件驱动的。在其他平台上编写事件驱动代码通常需要您筛选第三方模块以找到事件驱动的模块。例如,有几个用于 Python 的事件驱动库,但大多数用于 Python 的第三方网络库是同步的,因为 Python 的传统。Ruby、Java、Scala 和许多其他平台也是如此。
4) 速度。Node.js 在 V8 javascript 引擎上运行。它可能不如 Java 或 C# 快,但比 Python、Ruby 和 PHP 早了好几年。Python、Ruby 和 PHP 占据了 Web 应用程序市场份额的很大一部分。当具有基于这些语言的主要经验的开发人员需要更快的速度时,Node.js 是找到它的合乎逻辑的地方。
它们的相似之处在于它们都使用事件的概念——调用你的代码的东西,而不是你出去寻找变化。但在实践中,它们完全不同。
在节点(和 asp.net MVC)中,来自客户端的相关事件是“请求此 URL”。而已。除了请求的内容之外,没有更多的粒度。
在 ASP.NET Webforms 中,他们非常努力地根据客户端页面上发生的情况来合成事件。你得到的事件是“文本改变”、“按钮点击”、“复选框被选中”......基本上和你在直接桌面应用程序中得到的东西一样。
事实证明,Webforms 模型变得非常非常复杂,而且抽象层阻碍了 ajax 调用之类的工作。
与 ASP.NET 不同,node 所做的另一件事是几乎所有内容都是异步事件。数据库调用?在节点中异步,在 ASP.NET 中同步。读取文件?在节点中异步,在 ASP.NET 中同步。对另一台服务器的 HTTP 请求?你明白了。
ASP.NET 可以异步执行这些操作,但您必须不遗余力地做到这一点,并且它使用线程。在节点中,异步的东西非常自然,它不需要使用线程,在某些情况下导致(有点令人惊讶)更高的吞吐量。
所以,是的,在它们都是“事件”的意义上,它们是相同的,但细节却大不相同。