实时ASP.NET MVC Web应用程序

Mat*_*rts 13 asp.net-mvc real-time

我需要在我的Web应用程序中添加一个"实时"元素.基本上,我需要检测存储在SQL Server表中的"更改",并在发生更改时更新UI的各个部分.

我目前通过民意调查这样做.我每隔3秒向服务器发送一个ajax请求,要求进行任何新的更改 - 然后返回并处理这些更改.它有效,但我不喜欢它 - 这意味着对于每个浏览器,我将经常发出这些请求,并且服务器将始终忙于处理它们.简而言之,它不能很好地扩展.

是否有任何聪明的替代方案可以避免轮询开销?

编辑

为了完整性,我正在更新这个,以提及我们最终使用的解决方案 - SignalR.它的操作系统来自微软.它越来越受欢迎,我可以衷心地推荐这个,或者我们也看过的WebSync.

jve*_*ema 10

查看为ASP.NET/IIS设计的彗星服务器WebSync.

特别是,我要做的是使用SQL Dependency类,当您检测到更改时,请使用RequestHandler.Publish("/ channel",data); 将信息发送给适当的侦听客户端.

应该工作得很好.

  • 再看看这个,我印象非常深刻,我正在等待老板对购买可能性的回应:) (3认同)
  • 应该工作得很好 - 作者说;-) (2认同)

jim*_*lan 5

直接取自Jakub(即)引用的链接:

使用IIS/ASP.NET反转AJAX

Codeplex上的PokeIn为您提供增强的JSON功能,使您的服务器端对象在客户端可用.简单地说,它是一个反向Ajax库,可以很容易地从C#/ VB.NET调用JavaScript函数并从JavaScript调用C#/ VB.NET函数.它具有众多功能,如事件排序,资源管理,异常处理,编组,Ajax上传控制,单声道兼容性,WCF和.NET Remoting集成以及可扩展的服务器推送.此库有一个免费的社区许可选项,与其他许可选项相比,许可选项具有相当的成本效益.

我实际上使用过这个,社区版非常特别.非常值得一看,因为这种技术将在未来几个月/几年内开始主导这一领域.codeplex网站附带asp.net mvc样本.


Rad*_*094 5

无论如何:你将永远受限于这样一个事实:HTTP(大多数情况下)是一条单行道.除非您在客户端上实现一些合理的代码(即,监听传入的网络请求),否则其他任何事情都将涉及轮询服务器以进行更新,而不管别人会告诉您什么.

我们有类似的要求:在我们的一个实时Web应用程序中具有非常快的响应时间,为每个Web服务器提供大约400-500个客户端.服务器需要在0.1秒内(电话和VoIP)通知客户端.

最后,我们实现了一个异步处理程序.在每个轮询请求中,我们将请求休眠5秒钟,等待信号量脉冲信号响应客户端.如果5秒钟结束,我们回复"无事件",客户端将再次(立即)发布请求.这导致了非常快的响应时间,我们从来没有遇到任何问题,每台机器最多500个客户端..不知道在轮询请求可能产生问题之前我们还可以添加多少.