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

Ori*_*tal 8 asp.net-mvc node.js socket.io

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

在某些视图(客户端)上有一些UI元素可以从实时交互中受益,包括推送和拉动,所以不是在asp.net中实现某种自定义长轮询或websocket服务器,我希望利用节点.用于Windows的js和Socket.io.

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

我想知道Node.Js和ASP.NET之间最快的双向推送通信方法.到目前为止,我所知道的唯一一个好的选择是在node.js服务器上的特定端口上创建一个特殊的监听器并连接到它,但我想知道是否有更优雅或更有效的方法?我也知道你可以在中间使用一个数据库但是肯定需要进行轮询并且效率会降低吗?两个服务器将在Visual Studio项目下的同一服务器上运行.

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

ale*_*lex 3

我不是 ASP.NET 专家,但我认为有多种方法可以实现此目的:

1)正如您所说,您可以让 Node 侦听特定端口上的数据,然后根据收到的数据(TCP)做出反应
2) 您可以向 Node.js (HTTP) 发出 POST 请求,并在此过程中发送身份验证密钥以确保额外安全。就像 1) 节点会对您发送的数据做出反应。
3) 使用Redis之类的工具进行发布-订阅,从 ASP.NET (pub) 发送消息并在 Node.js 部分 (sub) 上获取它们。如果您想跨多台机器等扩展您的应用程序,这会更好。