彗星实施ASP.NET?

我一直在研究如何在浏览器中实现类似Gmail的消息传递,并且到达Comet概念。 但是,我一直没有find一个好的.NET实现,允许我在IIS中执行此操作(我们的应用程序是用ASP.NET 2.0编写的)。

我发现的(或者可以想到的)解决scheme需要为每个用户留下一个正在运行的线程 – 这样,一旦他收到消息,就可以向他返回响应。 当然,这根本没有规模。

所以我的问题是 – 你知道一个彗星的ASP.NET实现,以不同的方式工作吗? 这甚至有可能与IIS?

由于彗星的持续连接性,彗星在IIS上扩展具有挑战性,但现在有一个团队正在研究Comet场景。 另外看看Aaron Lerch的博客,因为我相信他在ASP.NET中做了一些早期的Comet工作。

WebSync是一个符合标准的可扩展的Comet服务器,可直接集成到IIS / .NETpipe道中。 它也可以作为托pipe服务按需提供。

它每个服务器节点正式支持多达20,000个并发客户端连接,但个别testing已经看到它高达50,000个。 消息吞吐量在1,000-5,000个并发客户端标记周围是最佳的,从单个节点传递的消息高达每秒300,000个。

它包括对.NET,Mono,iOS,Mac OS X,Java,Silverlight,Windows Phone,Windows Runtime和.NET Compact的客户端支持,以及对.NET / Mono和PHP的服务器端支持。

使用SQL Server或Azurecaching即可支持群集,但自定义提供程序可针对任何事物(Redis,NCache)进行编写。

免责声明:我为开发此产品的公司工作。

我最近编写了一个简单的使用MVC 3asynchronous控制器的长轮询聊天服务器的例子,它基于Clay Lenhart

您可以使用基于BitBucket项目的源设置的AppHarbor部署中的示例 。

此外,从我的博客文章解释项目更多的信息。

其实有很多select来创buildAjax支持与ASP.NET网站,但老实说, PokeIn是创build一个彗星ajax支持的Web应用程序的最简单的方法。 它节省了我公司的一个项目。

您也可以看看Kaazing企业网关 ,它已经完成了他们的webSocket [HTML5]网关的生产版本,它完全取代了彗星的方式,并支持浏览器和应用服务器之间的全双工连接。

您也可以看看Light Streamer演示

我曾经使用过一个聊天网站,利用一个定制的httpstream媒体服务器。 实际上,我真的好奇地转载了那个软件,我觉得这很容易做到。 我永远不会尝试在IIS中实现类似的“无限请求”,特别是在ASP.NET中,因为这些请求会无限期地绑定一个线程池线程(或IO线程,如果使用了asynchronous处理程序),这意味着您只能处理你的线程池configuration允许的每台服务器。

如果我对这样的function有强烈的合理需求,我会诚实地写一个自定义的http服务器。

我知道这并不能真正回答你的问题,但我认为这个意见可能是相关的。

WS-I团队发布了一个名为“可靠的安全configuration文件”的东西,它有一个Glass Fish和.NET实现 ,显然互操作性很好。

运气好的话,还有一个Javascript实现。

还有一个使用HTTP双工的Silverlight实现。 您可以将JavaScript连接到Silverlight对象,以便在发生推送时获得callback。

也有商业付费版本 。

我认为彗星方法不是真正的可扩展的,除非你准备水平扩展networking农场(通过增加更多的networking服务器)。 它的工作方式是每个用户会话都有一个TCP连接打开,这样服务器就可以不时地将东西插入到连接中,以便立即通知用户有关更改或活动的信息。