节点中使用的基于事件的模型是否与C#应用程序中使用的基于事件的模型相同?

时间:2013-04-18 18:43:14

标签: asp.net node.js events event-driven-design

我听说过node.js和基于事件的编程以及节点事件循环之类的东西。在大学时我记得我制作了一个ASP.net网络应用程序。该教授说,ASP.net使用基于事件的架构,其中服务器端的回调函数由客户端的不同事件触发。

两种不同的技术是否使用事件和事件驱动编程的概念?

2 个答案:

答案 0 :(得分:1)

是的,节点使用基于事件的体系结构,其中服务器端的回调函数由客户端上的不同事件触发。

为什么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是找到它的合理位置。

答案 1 :(得分:1)

它们之间的相似之处在于它们都使用了事件的概念 - 一种调用代码的东西,而不是你出去寻找变化。但在实践中他们却完全不同。

在节点(和asp.net MVC)中,来自客户端的有问题的事件是“请求了此URL”。而已。除了请求的内容之外,没有更多的粒度。

在ASP.NET Webforms中,他们非常努力地根据客户端页面上发生的事情来合成事件。您获得的事件是“文本更改”,“按钮点击”,“复选框已选中”...基本上是您在直接桌面应用中获得的相同类型的内容。

事实证明,Webforms模型真的非常复杂,并且抽象层阻碍了像ajax调用这样的事情。

节点所做的另一件事是,与ASP.NET不同,几乎所有东西都是异步事件。数据库通话?节点中的异步,ASP.NET中的同步。读一个文件?节点中的异步,ASP.NET中的同步。 HTTP请求到另一台服务器?你明白了。

ASP.NET可以做那些异步的事情,但是你必须尽力去做它,并且它使用线程。在节点中,异步内容非常自然,并且不需要使用线程,在某些情况下(有些令人惊讶地)导致更高的吞吐量。

所以是的,从某种意义上说它们都是“事件”,但细节却截然不同。