ASP.NET HTTP服务器向客户端推送数据

18
什么是从服务器向Web客户端推送信息的最佳方法?我知道可以使用Silverlight和Flash设置套接字,但我想避开这两种技术。
Gmail似乎非常擅长轮询更新电子邮件,甚至他们的聊天程序也很好用(都在我的Web浏览器中工作)。有没有关于如何使用ASP.NET实现类似功能的最佳方法的想法?
编辑: 如果必须轮询,则希望每2或3秒轮询一次服务器。因此,在高负载下,我不确定如何做到这一点而不使Web服务器崩溃。

回复:轮询频率,对于非常轻量级的Web服务,每2-3秒进行一次轮询通常比真正的HTTP“推送”实现更具可扩展性。保持连接永久打开会消耗资源。 - Dave Ward
两个示例可在http://www.udaparts.com/document/Tutorial/httppush.htm和http://www.udaparts.com/document/Tutorial/slpush.htm找到。 - user927050
6个回答

7

有没有人有 SignalR 扩展的经验?我需要向大约 100,000 个客户端推送小消息(以股票行情的方式向所有客户端发送相同的消息),那需要多少台服务器? - Martin Brown

5
你所需要的推送技术被称为 Comet。参见这篇文章获取相关指引。

4

试用WebSync,这是一个专为.NET/IIS构建的可扩展的comet服务器。它可以让您从服务器轻松地推送数据,并且与ASP.NET项目集成非常容易(只需几个web.config条目即可)。


[完全免责声明:我是Frozen Mountain的员工] - Jerod Venema
2
WebSync 是一项付费服务。 - Vijay Singh Rana

4
我会创建一个可调用的脚本Web服务,并使用JQuery
这是一个关于如何使用JQuery调用ASP.NET (ASMX) Web服务的好指南:

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

现在,您只需要按照应用程序的合理间隔轮询此Web服务即可。
此外,ASP.NET AJAX的问题是有些过于复杂。通过使用JQuery,您可以从常规的ASP.NET Web表单、MVC中的视图,或者实际上使用任何其他Web技术(经典ASP、PHP等)从客户端调用您的Web服务,只需使用我认为最好的JavaScript框架即可。 :)

4

PokeIn是一个逆向Ajax库,适用于ASP.NET和Mono。它具有各种功能,如.NET与JSON之间的相互转换。您可以从这里下载示例项目。


0

要实现这一点,使用ASP.NET 3.0/3.5或者如果您使用早期版本,则使用ASP.NET Ajax。然而,您列出的两个示例都是使用Ajax来拉取信息,而不是推送信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接