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); 将信息发送给适当的侦听客户端.
应该工作得很好.
直接取自Jakub(即)引用的链接:
Codeplex上的PokeIn为您提供增强的JSON功能,使您的服务器端对象在客户端可用.简单地说,它是一个反向Ajax库,可以很容易地从C#/ VB.NET调用JavaScript函数并从JavaScript调用C#/ VB.NET函数.它具有众多功能,如事件排序,资源管理,异常处理,编组,Ajax上传控制,单声道兼容性,WCF和.NET Remoting集成以及可扩展的服务器推送.此库有一个免费的社区许可选项,与其他许可选项相比,许可选项具有相当的成本效益.
我实际上使用过这个,社区版非常特别.非常值得一看,因为这种技术将在未来几个月/几年内开始主导这一领域.codeplex网站附带asp.net mvc样本.
无论如何:你将永远受限于这样一个事实:HTTP(大多数情况下)是一条单行道.除非您在客户端上实现一些合理的代码(即,监听传入的网络请求),否则其他任何事情都将涉及轮询服务器以进行更新,而不管别人会告诉您什么.
我们有类似的要求:在我们的一个实时Web应用程序中具有非常快的响应时间,为每个Web服务器提供大约400-500个客户端.服务器需要在0.1秒内(电话和VoIP)通知客户端.
最后,我们实现了一个异步处理程序.在每个轮询请求中,我们将请求休眠5秒钟,等待信号量脉冲信号响应客户端.如果5秒钟结束,我们回复"无事件",客户端将再次(立即)发布请求.这导致了非常快的响应时间,我们从来没有遇到任何问题,每台机器最多500个客户端..不知道在轮询请求可能产生问题之前我们还可以添加多少.
| 归档时间: |
|
| 查看次数: |
6738 次 |
| 最近记录: |