如何使用ASP.Net,IISNode,Node.JS和SQL Server实现Socket.IO以进行基于事件的推送通知?

ElH*_*aix 14 asp.net-4.0 sql-server-2008-r2 node.js socket.io iisnode

对于通知项目,想要推送事件通知.这些是登录,更改个人资料等内容,并显示给相应的客户端.我想讨论将它们放在一起的一些想法,并就最佳方法提出一些建议.

在这里注意到,可以使用_changes流检测对CouchDB所做的更改,由Node拾取,然后一个进程启动.我想实现这样的东西(我使用的是SQL Server,但这个级别的入口点可能不是最好的解决方案).

而不是遵循CouchDB示例(检测基于数据库的事件,我认为这只会使事情变得复杂,因为我们对客户端事件感兴趣),我当时认为当事件发生时,例如用户登录,然后发送消息带有一些事件详细信息的节点服务器(RESTful请求?).然后处理该消息并将其广播到所有连接的客户端; 相应的客户端显示通知.

拟议的生态系统:

  • .Net 4.0
  • IIS
  • IISNode
  • Socket.IO
  • Node.js的
  • SQL Server 2008

这将建立在使用.Net框架(IIS等)的现有项目之上.许多客户端的浏览器不支持Web套接字,因此使用Socket.IO是一个不错的选择(后备支持).但是,从我所看到的,Socket.IO仍然只支持通过IISNode进行长轮询(这不是一个真正的问题).

一个选项是将Socket.IO/Node端点暴露给所有客户端,以便基于客户端的通知可以通过JS发送到节点服务器,节点服务器广播消息.(遵循基本的聊天服务器/客户端/服务器示例).

或者,可以使用IIS端点,但只能支持长轮询(通过Socket.IO).这将提供一些额外的.Net后端处理,但可能使架构过于复杂.

Node是否有基于SQL Server的事件通知?

什么是最好的方法?

如果我没有正确的术语生态系统配置,请澄清.

谢谢.

Tom*_*zuk 13

在考虑将iisnode/node.js添加到预先存在的ASP.NET应用程序的混合技术之前,我建议您首先查看SignalR.

关于websockets,无论您使用ASP.NET还是node.js(socket.io),您都只能使用HTTP长轮询进行低延迟通知,因为HTTP.SYS/IIS不支持websockets直到Windows 8. iisnode不目前支持websockets(即使在Windows 8上),但可以在以后添加此类支持.

我最近做了一些关于从node.js访问MSSQL的研究.有一些OSS项目,其中一些使用本机的,特定于平台的扩展,一些尝试纯粹在JavaScript中实现TDS协议.我不知道任何可以使您访问SQL Notifications功能的内容.但是,MSSQL团队本身正在为node.js投资一流的MSSQL驱动程序,所以这是一个值得关注的事情(https://github.com/tjanczuk/iisnode/issues/139).

如果您计划使用SQL Notifications支持低延迟通知,我强烈建议您从性能基准开始,模拟SQL服务器级别的所需流量级别.SQL Notifications主要用作帮助维护与数据库内容一致的内存缓存的机制,因此它可能满足也可能不满足通知方案的要求.这些测量至少可以帮助您从更好的设计开始.