ASP.NET的Comet实现?

ASP.NET的Comet实现?,asp.net,iis,comet,Asp.net,Iis,Comet,我一直在寻找在浏览器中实现类似gmail的消息传递的方法,并得出了这个概念。但是,我还没有找到一个好的.NET实现,它允许我在IIS中执行此操作(我们的应用程序是用ASP.NET 2.0编写的) 我发现的解决方案(或者可以想到的解决方案)需要为每个用户留下一个正在运行的线程,这样当他收到消息时,线程就可以向他返回响应。当然,这根本不可伸缩 所以我的问题是-您知道Comet的ASP.NET实现以不同的方式工作吗?这在IIS中也有可能吗 我认为,除非您准备水平扩展web场(通过向混合中添加更多web

我一直在寻找在浏览器中实现类似gmail的消息传递的方法,并得出了这个概念。但是,我还没有找到一个好的.NET实现,它允许我在IIS中执行此操作(我们的应用程序是用ASP.NET 2.0编写的)

我发现的解决方案(或者可以想到的解决方案)需要为每个用户留下一个正在运行的线程,这样当他收到消息时,线程就可以向他返回响应。当然,这根本不可伸缩


所以我的问题是-您知道Comet的ASP.NET实现以不同的方式工作吗?这在IIS中也有可能吗

我认为,除非您准备水平扩展web场(通过向混合中添加更多web服务器),否则Comet方法实际上是不可伸缩的。它的工作方式是让TCP连接在每个用户会话中都保持打开状态,这样服务器就可以不时地将内容推送到该连接中,以立即通知用户更改或活动。

Comet很难用IIS扩展,因为Comet具有持久的连接性,但现在有一个团队正在研究Comet的场景。我相信他在ASP.NET中做了一些早期的Comet工作

您还可以看看,它已经发布了webSocket[HTML5]网关的生产版本,它完全取代了comet方式,并支持浏览器和应用程序服务器之间的全双工连接

您还可以看看

是一个符合标准的可伸缩Comet服务器,它直接集成到IIS/.NET管道中。它也可以作为托管服务按需提供

它正式支持每个服务器节点多达20000个并发客户端连接,但个别测试表明它高达50000个。消息吞吐量在1000-5000个并发客户机标记附近是最佳的,从单个节点发送的消息高达每秒300000条

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

使用SQL Server或Azure缓存开箱即用支持群集,但可以为任何内容编写自定义提供程序(Redis、NCache)


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

很久以前,我曾使用一个聊天网站,该网站使用定制的http流媒体服务器。事实上,我只是出于好奇才复制了那个软件,我认为这很容易做到。我永远不会尝试在IIS中实现类似类型的“无限请求”,特别是在ASP.NET中,因为请求无限期地占用线程池线程(如果使用异步处理程序,则为IO线程),这意味着您只能在线程池配置允许的情况下处理每台服务器

如果我对这种功能有强烈的合法需求,我会诚实地为它编写一个自定义http服务器


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

实际上,使用ASP.NET创建支持ajax的网站有很多选择,但老实说,是创建comet ajax支持的web应用程序的最简单方法。它挽救了我公司的一个项目

我最近编写了一个基于

您可以使用基于BitBucket项目源的I设置


另外,更多信息可以从我的网站上获得。

WS-I小组发布了一个名为“有一条玻璃鱼”的东西,它看起来很好

如果运气好的话,也有一个实现

还有一个Silverlight实现,它在推送发生时使用can对象获取回调


也有。

任何东西都只能垂直伸缩到一个点,之后必须进行水平伸缩;根据下面安东的回复,查看WebSync。()有人叫反向ajax吗?检查一下:MVC异步控制器可以通过将等待的线程转移到非IIS工作线程来帮助解决IIS问题,请参见此。另请参见BitBucket。这里应该有一个免责声明,因为它是您的产品……当然,它是由我工作的公司生产的:)绝对不会试图隐藏任何东西。@Anton-不隐藏某些东西并不等于公开它。@Anton您能详细说明它如何支持每个服务器节点多达20k的并发客户端连接吗?这些数字看起来,嗯。。“太大了”。我不认为从概念上问websync在引擎盖下是如何工作的是谨慎的——当然是从25000英尺的角度。在短时间内连续发布许多问题的完全相同的答案往往会绊倒一些旗帜…()我猜最初的MS实现是Signal:Node.JS现在在Azure上得到支持,很快将支持2003年的IIS。这意味着我们将能够在IIS中运行comet服务器()我喜欢AppHarbor部署“解释项目的博客文章”中的示例-->谢谢!很高兴你喜欢这篇文章。