在Node.Js和ASP.NET MVC应用程序之间进行通信

我有一个使用ASP.NET MVC构build的现有复杂网站,包括数据库后端,数据层以及Web UI层。 用另一种语言重build本网站不是一个可行的select。

在一些视图(客户端)上有一些UI元素可以从实时交互中受益,包括push和pull,所以我没有在asp.net中实现一些自定义的长轮询或websocket服务器,我期待利用节点。 js for Windows和Socket.io。

我的问题是,我需要两个应用程序之间的双向沟通​​。 每个用户只有在ASP.NET网站上获得授权后才能收到数据,所以我首先需要沟通。 其次,一旦某个事件发生在ASP.NET网站上,我想立即将这些数据推送到节点服务器,以便广播给特定的用户或用户组。 第三,我想将发送到node.js服务器的任何数据推送到ASP.NET网站进行处理,因为这是我们所有的业务逻辑所在。 添加Node.js的唯一原因是有可能直接将数据推送到客户端,我不想在其中build立任何业务逻辑(或尽可能less)。

我想知道在Node.Js和ASP.NET之间双向推送通信的最快方法是什么。 到目前为止,唯一不错的select是在node.js服务器上的特定端口上创build一个特殊的侦听器并连接到这个端口,但是我想知道是否有更优雅或更高效的方法? 我也知道你可以使用中间的数据库,但肯定会需要调查,效率会降低吗? 这两个服务器将在Visual Studio项目下的同一台服务器上运行。

非常感谢您提供的任何帮助。

我不是ASP.NET专家,但我认为有多种方法可以实现这一点:

1)正如你所说,你可以让节点侦听特定端口上的数据,然后根据收到的数据(TCP)
2)您可以对Node.js(HTTP)发出POST请求,并且在进程中发送一个授权密钥以保证安全性。 就像1)节点会对你发送的数据作出反应。
3)为pub-sub使用Redis之类的东西,从ASP.NET(pub)发送消息并在Node.js部分(sub)中获取它们。 如果你想在多台机器上扩展你的应用,这会更好

到目前为止,唯一不错的select是在node.js服务器上的特定端口上创build一个特殊的侦听器并连接到这个端口,但是我想知道是否有更优雅或更高效的方法?

您可以尝试查看redis pub / sub模型,其中ASP.NET MVC应用程序和node.js将通过单独的通道进行通信,以实现全双工通信。 或者您也可以尝试使用CouchDB更改nofitications 。

我也知道你可以使用中间的数据库,但肯定会需要调查,效率会降低吗?

以前的技术并不要求您轮询更改,而是在发生更改或通道消息到达时通知您。