我一直在寻找在浏览器中实现类似gmail的消息传递的方法,并得出了Comet的概念.但是,我还没有找到一个很好的.NET实现,允许我在IIS中执行此操作(我们的应用程序是用ASP.NET 2.0编写的).
我找到的解决方案(或者可以想到的解决方案)需要为每个用户留下一个正在运行的线程 - 这样一旦收到消息就可以向他返回响应.当然,这根本不可扩展.
所以我的问题是 - 你知道Comet的ASP.NET实现以不同的方式工作吗?这甚至可以用于IIS吗?
由于彗星的持续连接,Comet很难通过IIS进行扩展,但现在有一个团队正在研究Comet场景.另请参阅Aaron Lerch的博客,因为我相信他已经在ASP.NET中完成了一些早期的Comet工作.
WebSync是符合标准的可扩展Comet服务器,可直接集成到IIS/.NET管道中.它也可以作为托管服务按需提供.
它正式支持每个服务器节点最多20,000个并发客户端连接,但个别测试已经高达50,000.消息吞吐量在1,000-5,000个并发客户端标记周围是最佳的,消息从单个节点传递高达每秒300,000.
它包括对JavaScript,.NET/Mono,iOS,Mac OS X,Java,Silverlight,Windows Phone,Windows运行时和.NET Compact的客户端支持,以及对.NET/Mono和PHP的服务器端支持.
使用SQL Server或开箱即用的Azure缓存支持群集,但可以为几乎任何东西编写自定义提供程序(Redis,NCache).
免责声明:我为开发此产品的公司工作.
我最近根据Clay Lenhart的一篇精彩文章,编写了一个使用MVC 3异步控制器的长轮询聊天服务器的简单示例
您可以在我根据BitBucket项目的源设置的AppHarbor部署中使用该示例.
此外,我的博客文章中提供的更多信息解释了该项目.