我一直在研究在浏览器中实现类似gmail的消息传递的方法,并提出了Comet概念。但是,我找不到能够在IIS中完成此操作的良好.NET实现(我们的应用程序是用ASP.NET 2.0编写的)。
我找到的解决方案(或可能想到的)需要为每个用户保留一个正在运行的线程-这样,一旦他收到一条消息,它就可以向他返回响应。当然,这根本无法扩展。
所以我的问题是-您知道Comet的ASP.NET实现以不同的方式工作吗?使用IIS甚至可能吗?
我一直在研究在浏览器中实现类似gmail的消息传递的方法,并提出了Comet概念。但是,我找不到能够在IIS中完成此操作的良好.NET实现(我们的应用程序是用ASP.NET 2.0编写的)。
我找到的解决方案(或可能想到的)需要为每个用户保留一个正在运行的线程-这样,一旦他收到一条消息,它就可以向他返回响应。当然,这根本无法扩展。
所以我的问题是-您知道Comet的ASP.NET实现以不同的方式工作吗?使用IIS甚至可能吗?
Answers:
由于Comet的持久连接性,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 Runtime和.NET Compact的客户端支持,以及对.NET / Mono和PHP的服务器端支持。
开箱即用的SQL Server或Azure缓存都支持群集,但是自定义提供程序几乎可以编写任何内容(Redis,NCache)。
免责声明:我为开发此产品的公司工作。
我最近根据Clay Lenhart的精彩文章写了一个使用MVC 3异步控制器的长轮询聊天服务器的简单示例。
您可以在我根据BitBucket项目的源设置的AppHarbor部署中使用该示例。
另外,可从我的博客文章中获得有关该项目的更多信息。
您可能还会看到Kaazing企业网关,该网关已经发布了其webSocket [HTML5]网关的生产版本,该网关完全取代了彗星方式,并实现了浏览器和应用程序服务器之间的全双工连接。
您可能还会看到Light Streamer演示
WS-I组发布了名为“ Reliable Secure Profile”的文件,该文件具有Glass Fish和.NET实现。,显然可以很好地互操作。
运气好的话, Java脚本实现。
还有一个使用HTTP Duplex的Silverlight实现。 您可以将JavaScript连接到Silverlight对象,以在发生推送时获取回调。
也有商业付费版本。