我有一个使用ASP.NET MVC构建的现有复杂网站,包括数据库后端,数据层以及Web UI层。用另一种语言重建本网站不是一个可行的选择。
在某些视图(客户端)上有一些UI元素可以从实时交互中受益,包括推送和拉取,所以不是在asp.net中实现某种自定义长轮询或websocket服务器,我期待利用node.js for Windows和Socket.io。
我的问题是我需要在两个应用程序之间进行双向通信。每个用户只有在ASP.NET网站上获得授权后才能接收数据,因此我首先需要进行通信。其次,一旦ASP.NET网站上发生某些事件,我想立即将这些数据推送到节点服务器,以便向特定用户或用户组广播。第三,我希望将发送到node.js服务器的任何数据推送到ASP.NET网站进行处理,因为这是我们所有业务逻辑所在。添加Node.js的唯一原因是有可能将数据直接推送到客户端,我不想在其中构建任何业务逻辑(或尽可能少)。
我想知道Node.Js和ASP.NET之间最快的双向推送通信方法。到目前为止我唯一知道的唯一好处是在node.js服务器上的特定端口上创建一个特殊的监听器并连接到它,但我想知道是否有更优雅或更有效的方法?我也知道你可以在中间使用数据库但是肯定需要进行轮询并且效率会降低吗?两台服务器都将在Visual Studio项目下的同一台服务器上运行。
非常感谢您提供的任何帮助。
答案 0 :(得分:3)
我不是ASP.NET专家,但我认为有多种方法可以实现这一目标:
1)正如您所说,您可以让Node侦听特定端口的数据,然后根据收到的数据(TCP)做出反应
2)您可以向Node.js(HTTP)发出POST请求,并在此过程中发送auth-key以提供额外的安全性。就像1)Node会对你发送的数据作出反应
3)对pub-sub使用Redis之类的东西,从ASP.NET(pub)发送消息,并在Node.js部分(sub)上获取它们。如果您想跨多台计算机等扩展您的应用程序,那就更好了。
答案 1 :(得分:2)
到目前为止,我所知道的唯一好办法就是创造一个特别的选择 监听器在node.js服务器上的特定端口上并连接到该端口, 但我想知道是否更优雅或更有效率 方法
您可以尝试查看ASP.NET {1}模型,其中ASP.NET MVC应用程序和node.js将通过单独的通道进行通信,以实现全双工通信。或者您也可以尝试使用redis pub/sub。
我也知道你可以在中间使用数据库,但肯定是这样 需要进行调查,效率会降低吗?
以前的技术不要求您轮询更改,而是在更改发生或信道消息到达时通知您。